Плагин NsProcess

Ссылки

Версия 1.5:
nsProcess.zip (25 KB)

Версия 1.6 (поддержка NSIS UNICODE от brainsucker, переименуйте библиотеку nsProcessW.dll):
nsProcess.zip (14 KB)
— Зеркало: nsProcess_1_6.7z

Обсуждение:
На форуме

Описание

Возможности:

— Поиск процесса по имени.
— Завершение всех процессов с указанным именем (все найденные экземпляры).
— Закрытие всех процессов с указанным именем. Сначала происходит попытка закрыть все окна процессов, ожидание 3 секунд для завершения процессов. Если процесс(ы) все еще активны, используйте функцию _CloseProcess.
— Имя процесса нечувствительно к регистру
— Поддерживаемые ОС: Win95/98/ME/NT/2000/XP/Win7
— Поиск процессов других пользователей при запуске с правами администратора или при переключении на другого пользователя.
— Маленький размер плагина (4 Кб)
— Поддержка Unicode (просто переименуйте nsProcessW.dll в nsProcess.dll)

Пример использования

!include "LogicLib.nsh"
 
  Section ""
    StrCpy $1 "YOURAPP.exe"
 
    nsProcess::_FindProcess "$1"
    Pop $R0
    ${If} $R0 = 0
      nsProcess::_KillProcess "$1"
      Pop $R0
 
      Sleep 500
    ${EndIf}
 
  SectionEnd

Обычно _FindProcess возвращает:

0 если процесс найден
603 если процесс(ы) не найдены

// Коды возврата:
  // 0 = успех
  // 601 = Нет разрешения на завершение процесса
  // 602 = Не все процессы завершились успешно
  // 603 = Процесс в данный момент не запущен
  // 604 = Невозможно определить тип ОС
  // 605 = ОС не поддерживается
  // 606 = Невозможно загрузить NTDLL.DLL
  // 607 = Не удалось получить адрес процедуры из NTDLL.DLL
  // 608 = ошибка NtQuerySystemInformation
  // 609 = Невозможно загрузить KERNEL32.DLL
  // 610 = Не удалось получить адрес процедуры из KERNEL32.DLL
  // 611 = Ошибка CreateToolhelp32Snapshot

Благодарности

Ravi Kochhar (исходная функция FIND_PROC_BY_NAME на основе его кода)
iceman_k (Find Process By Name) и DITMan (KillProcDLL Manual).

Перевел Leha Silent специально для tolik-punkoff.com

Источник

Norton Secret Stuff v 1.00

Блин, нашел у друга на компе старую шифровалку файлов (судя по внутренней справке, алгоритм Blowfish)

Уж не знаю, там че за криптостойкость, но за уникальность стоит эту утилиту забэкапить.

— Адекватно работает только на Windows 3.1-3.11
— Генерирует самораскрывающиеся (SFX) шифрованные архивы, которые запускаются в DOS.
— Формат выходного экзешника MZ (DOS), так что выше Windows ME его будет нельзя открыть без эмулятора.

Скачать

Norton Secret Stuff v 1.00 с примером с MEGA.NZ

Патч на NSIS (с возможностью отмены).

Преамбула

На самом деле, многими реверсерскими командами создана куча генераторов автопатчеров, подсовываешь ему оригинальный и измененный экзешник, и тебе генерируется автопатчер, даже с красивой картинкой и восьмибитной музыкой. Но «есть проблема» (ц) Патриарх Кирилл:

— Не на все автопатчеры хорошо реагируют антивирусы
— Автопатчеры нестандартны, кто в лес, кто по дрова.

Неплохо бы сделать так, чтоб и антивирусы не ругались, и оно хоть как-то относительно стандартно выглядело. И такое решение есть — модуль VPatch для системы установки NSIS. Далее расскажу, как этим модулем воспользоваться, чтобы пропатчить уже установленную программу, а также, немного расширю пример, покажу как в патч «зашить» еще и отмену патча. Естественно, чтобы все повторить, у вас должен быть установлен NSIS хотя бы в минимальной комплектации.

Подготовка #1

Устанавливаем модуль VPatch, лучше воспользоваться ссылкой на установщик, потом скачать родной пример и попытаться его скомпилировать. Если все сработало — модуль установился правильно, можно работать дальше.

Для генерации данных для патча, VPatch использует свои утилиты командной строки, которые в комплекте идут, но устанавливаются криво, так что качаем утилиты отдельно и устанавливаем их (установятся в %WINDIR%).

Скачать установщик здесь

Подготовка #2

Теперь нужна лабораторная крыса, т.е. программа, которую будем патчить, возьмем оригинальный CrackMe из предыдущего примера (копия) и напишем ему стандартный инсталлятор:

Исходник инсталлятора
Готовый инсталлятор тестовой программы
Исходник CarckMe

Устанавливаем ее.

Для патча нужен оригинальный экзешник

И пропатченный вручную

Подробное описание патча

Проверка

Патч:

Восстановление:

Источники

VPatch — Free Patch Generator
VPatch plug-in
Документация и исходники оригинального примера
NSIS: контрольная сумма (MD5), сравнение файлов. (копия)
NSIS: Получение списка файлов с MD5-хешами. (копия)
NSIS: Получение даты и времени. (копия)

Исходник примера

Пример полностью на GitHub
Основной исходник

Фото с супом

Хотели фото с супом — нате вам!


Суп гороховый:
+ Картофель
+ Горох
+ Лук
+ Мясо
плюс хлеб
4 порции
+ водочка
+ доставка

600 рублей.

Закрыто все остальное, потому и дорого так.
Днем бы рублей в 200 обошлось бы.

NSIS: Получение даты и времени.

Преамбула

Иногда бывает нужно получить в скрипте установки локальную дату и время, или дату и время, связанную с файлом (модификации, создания или последнего доступа к файлу). В NSIS это делает одна стандартная функция, точнее, макрос ${GetTime}.

Подключаемые файлы и макрос

Для того, чтобы использовать GetTime, необходимо подключить заголовочный файл FileFunc.nsh (должен идти в стандартной поставке) и сам макрос GetTime:

!include "FileFunc.nsh"
!insertmacro GetTime

Вот начало инсталляционного скрипта:

Unicode true

!include "FileFunc.nsh"
!insertmacro GetTime

Name "GetLocalTime"
OutFile "GetLocalTime.exe"
ShowInstDetails show
RequestExecutionLevel User
;Далее будет тестовая секция

Синтаксис GetTime

${GetTime} "[File]" "[Option]" $var1 $var2 $var3 $var4 $var5 $var6 $var7

где:

"[File]" — файл (параметр игнорируется при использовании опций "L" или "LS")
"[Option]" — опции (см. далее)
$var1 — День
$var2 — Месяц
$var3 — Год
$var4 — День недели (наименование на английском языке)
$var5 — Час
$var6 — Минута
$var7 — Секунда

Опции:

L — локальное время компьютера
A — время последнего доступа к файлу
C — время создания файла
M — время последнего изменения файла
LS — системное время (то же самое, что и L, только используется часовой пояс UTC)
AS — время последнего доступа к файлу (UTC)
CS — время создания файла (UTC)
MS — время последнего изменения файла (UTC)

Пример получения локального времени

Section "Test"
	
     ; Получаем время компьютера
	${GetTime} "" "L" $0 $1 $2 $3 $4 $5 $6
     ; Выводим его в окошко лога инсталлятора
	DetailPrint "Local date and time:"
	DetailPrint "$2/$1/$0 ($3) $4:$5:$6"
     ; Можно преобразовать время в строку
     ; чтоб добавить к имени файла
	DetailPrint "String to add time in filename:"
	StrCpy $0 "$2-$1-$0-$4-$5-$6"
     ; и вывести ее
	DetailPrint "$0"
	
SectionEnd

Результат

Ссылки

Пример на GitHub
how to get the date and time?
E.1.6 GetTime