Плагин 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

Дурак подкидной

Разбирая жесткий диск клиента, нашел старую игрушку в дурака. Фришная, подвенду, не Flash.

Совместимость — Windows 95+(Windows 3.11 с поддержкой EXE PE-формата) — Windows 11

Реально, вечный экзешник. Установки не требует.
Произведено неким Усковым Иваном в 1997 году.

Скачать с Mega.NZ (ZIP, 131 Kb)

NSIS: Получение списка файлов с MD5-хешами.

Преамбула

Как-то показывал, как в NSIS получить MD5-хэши (копия), файлов в т.ч. Решил расширить пример, а как получить список файлов в каталоге и их MD5-хэши. Мне пригодится для следующего примера по NSIS, но и народ спрашивал, ибо в вышеуказанном примере нельзя выбрать произвольный файл, или сразу несколько. Исправляемся.

Поиск файлов на NSIS

Перед тем, как обработать какие-то файлы, надо их сначала найти и как-то передать в инсталлятор. В NSIS есть для этого несколько способов:

— Использовать стандартные функции FindFirst/FindNext, которые работают почти также, как соответствующие функции в WinAPI и требуют городить довольно неудобочитаемый цикл, постоянно проверять ошибки.
— Рекомендуемый разработчиками NSIS способ: использовать плагин Locate, работа с которым тоже отличается довольно неудобочитаемым кодом, и работает он в некоторых случаях не совсем стабильно.
— Функция Locate, которую вообще-то должен был заменить вышеуказанный плагин, но, как по мне, заменил ее криво. Ей проще воспользоваться, во всяком случае, для такой небольшой задачи. Далее будем работать именно с функцией Locate.

1. Создаем файл Locate.nsi в каталоге проекта, помещаем в него код функции, который можно взять их официальной Wiki NSIS. Раздел Function Code. (копия на PasteBin копия на GitHub)

2. Создаем основной файл (MD5List.nsi), формируем «болванку» проекта:

Unicode true
!include "Locate.nsi"

Name "MD5List"
OutFile "MD5List.exe"
ShowInstDetails show
RequestExecutionLevel User
InstallDir "$EXEDIR\"
DirText "Choose the folder to get list files and MD5 checksums."

Section "List"
SectionEnd

Не забываем подключить файл с кодом функции Locate (Locate.nsi): !include "Locate.nsi"

Синтаксис функции Locate

${Locate} "[Path]" "[Options]" "Function"

где:

"[Path]" — путь, стартовый каталог для поиска
"[Options]" — опции (см. далее)
"Function" — callback-функция (см. далее)

Опции функции Locate

/L=[FD|F|D|DE|FDE] — что искать:
/L=FD - Найти файлы и каталоги (по умолчанию)
/L=F - Найти только файлы
/L=D - Найти только каталоги
/L=DE - Найти только пустые каталоги
/L=FDE - Найти файлы и пустые каталоги

/M=[маска_файла].
По умолчанию /M=*.* (все файлы)
Можно изменить, например на /M=*.txt (текстовые файлы), и т.д.

/S=
Размер файла. Не буду заострять на этом внимание, синтаксис этой опции можно посмотреть оригинальной документации. По умолчанию размер файла игнорироуется.

/G=[1|0] — поиск с подкаталогами:
/G=1 — включить поиск с подкаталогами (включен по умолчанию)
/G=0 — поиск только в текущем каталоге

Пример вызова функции Locate

${Locate} "C:\SOMEDIR" "/L=F" "Userfunction"

Где мы указали каталог, с которого нужно начать поиск, указали хоть одну опцию, нужно указать хотя бы одну, и указали функцию обратного вызова, пока имя условное, но ниже объясню.

Callback-функция

Это пользовательская функция, которая должна получать данные от ${Locate}, а далее уж сама их обрабатывать.

${Locate} передает в функцию следующие стандартные переменные:

$R9 — полный путь к файлу
$R8 — путь без имени файла
$R7 — имя файла
$R6 — размер (для каталога $R6==0)

Остальные глобальные переменные можно использовать для своих целей внутри функции.

Внимание: callback-функция для ${Locate} обязательно должна заканчиваться командой push <переменная>.

Чтобы завершить функцию нормально, необходимо положить любое значение в стек:

push $0

Всегда помещайте что-либо в стек (даже если вы не собираетесь останавливать поиск), иначе произойдет непредвиденное!

Чтобы прервать поиск до того, как он завершится сам, в стек надо поместить значение StopLocate:

StrCpy $0 StopLocate
Push $0

Внимание! Внутри callback-функции почему-то не работает DetailPrint.

Теперь, зная все вышеозначенное, можно писать основной код.

Код внутри секции

Полученные данные будем писать во временный файл, раз уж DetailPrint нельзя воспользоваться. Получаем имя для временного файла и открываем его для записи:

GetTempFileName $R0
FileOpen $R1 $R0 w

Начинаем поиск:

DetailPrint "Starting search files and get MD5..."
${Locate} "$INSTDIR" "/L=F /M=*.*" "GetMD5"

$INSTDIR — каталог, который выберет пользователь при запуске примера.
"/L=F /M=*.*" - /L=F — ищем только файлы /M=*.* — все файлы.
"GetMD5" — имя callback-функции (см. ниже)

По окончанию поиска закрываем файл:

FileClose $R1

И проверяем, не случилось ли ошибок. Если случилось, выводим окно с надписью Error, если не случилось — открываем полученный файл в Блокноие:

IfErrors 0 +2
MessageBox MB_OK "Error" IDOK +2
Exec '"notepad.exe" "$R0"'

Код секции целиком

Код callback-функции

После секции организуем пользовательскую функцию:

Function GetMD5
	; скармливаем MD5-плагину полное имя файла
	; про MD5-плагин написано по ссылке выше
	md5dll::GetMD5File "$R9"
	Pop $1 ; достаем из стека MD5
	; Записываем во временный файл (дескриптор в $R1)
	; имя найденного файла с путем: $R9
	; через табуляцию $\t MD5-хэш ($1)
	; и перевод строки $\r$\n
	FileWrite $R1 "$R9:$\t $1 $\r$\n"
	
	; завершаем функцию, помещая в стек
	; пустую переменную
	Push $0 
FunctionEnd

Проверка

Скормим программе ее же каталог.

В Блокноте откроется временный файл со следующим содержимым:

E:\Test\Locate.nsi:	      a8fb937f9509d7fc21f476b2ff59aaa3 
E:\Test\MD5List.exe:	 34edf2e42835380b7278e89315ec1a83 
E:\Test\MD5List.nsi:	 fb531c0dfa3bae4febe0b7cfbe7d4a88

Ссылки

NSIS: контрольная сумма (MD5), сравнение файлов. (копия)
Locate на NSIS Wiki
Пример на GitHub

Купил HIEW!

Не, ребята, это даже круче чем автограф БГ! С этой утилитой столько воспоминаний, а главное, иногда нужна по делу, хотя уже и реже, чем раньше.

Слава автору, что проект до сих пор существует, как и любимый примерно с того же детского возраста Far Manager, вот реально, счастья таким авторам! Проект если младше меня, то ненамного. А так да, еще в 12-15 лет пользовался его пиратской версией. Теперь купил лицензию (не дам).

Охрененный респект автору, лучший шестнадцатиричный редактор (с возможностью диззассемблера и редактирования кода напрямую), до сих пор лучший на этой планете.

И я его купил.

Это мой личный отзыв, никакого отношения к коммерческой рекламе он не имеет. Это просто радость, от того что могу поддержать автора.

Официальный сайт: https://www.hiew.ru/

И инструкцию, как купить (чтобы поддержать автора, который уже больше 20 лет старается), можно там же найти.

Это репост с сайта http://tolik-punkoff.com
Оригинал: https://tolik-punkoff.com/2023/03/07/kupil-hiew/

В связи с недавними событиями.

Ну где то ли русские националисты, то ли провокация спецслужбы из трех букв, то ли оба два сразу. Напророчил, получается. Задумывал, как подражание Лесину, а вышло опять подражание Сорокину. В общем, какую партию не строй, один хуй КПСС получится.

Друг работает в УФСИН —
Мене, текел, упарсин.

На отметку прусь в УФСИН —
Мене, текел, упарсин.

Пили чистый спирт в УФСИН —
Мене, текел, упарсин.

В дверь ко мне стучит УФСИН —
Мене, текел, упарсин.

Вот скинхеды жгут УФСИН —
Мене, текел, упарсин.

ну и т.д.

Утилиты для создания автоматического патча на NSIS

Один из пользователей NSIS создал проект VPatch, который позволяет на NSIS написать автоматический патчер (после покажу пример, а может даже парочку). Но устанавливается он как-то криво, консольные утилиты, которыми генерятся данные для будущего патча устанавливаются абы куда, а не в какой-нибудь %PATH%-каталог, что безумно бесит. Поправил. У меня все утилиты устанавливаются в %WINDIR%.

Утилиты отдельно (RAR-архив), 468Кб
Установщик (NSIS, EXE), 666Кб
Родной пример использования VPatch (7ZIP), 475Кб
Исходник моего инсталлятора

Совсем простой CrackMe, и как его сломать.

Преамбула

Попросили показать самый простой пример по реверсингу. Ну ладно, сделал простейшую программу, окно где надо ввести пароль:

Ввели правильно, получаем окно одобрямса:

Ввели неверно, программа отправляет на повторный ввод с сообщением об ошибке:

Если нажать Cancel — программа просто завершится.

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

Вообще, пароль можно подсмотреть, открыв экзешник, например, в просмотровщике Far Manager по F3:

Прямо как в некоторых старых DOS-программах, где защита от копирования была скорее защитой от дурака, или в форках некоторых приставочных игр под DOS, где таким же образом можно было получить код от уровня.

Но мы пойдем другим путем, как завещал великий Ленин! Хотя способ будет не сильно далеким от «подсмотра», чтоб было слегка посложнее и интереснее — не будем пользоваться отладчиком, а воспользуемся дизассемблированием. В отладчике вместо одного шага (простого подсмотра пароля) будет полтора, а так все же веселее.

И задача, естественно, модифицировать программу так, чтобы подходил любой пароль.

Читать далее

Ссылки

1. Исходник CrackMe
2. Бинарный файл
3. Чтоб два раза не вставать: Разница между инструкциями test и cmp Копия в PDF

Assembler: Окно типа InputBox в MASM32

Преамбула

Попросили сделать на ассемблере (MASM) что-то типа окна InputBox, которое было когда-то в Visual Basic 6.0. Кстати да, удобная фича для мелких запросов к юзеру, без всякого лишнего моделирования форм. Выглядело примерно так:

Да, товарищи (даже те, которые нам совсем не товарищи), это окошко чистая выдумка создателей VB, и в диком виде подобная функция нигде более не встречается.

Т.е. в WinAPI ее нет и не ищите!

Окно InputBox в MASM32

Но реализовать можно:




Исходник

Сама функция InputBox перенесена любовно в InputBox.inc, так что можно просто воткнуть и использовать. Сделано изначально было все примерно по тем же материалам Iczelion’а (копия), я лишь немного причесал и по полочкам разложил, особо ничего не меняя. Потому расписывать детально не буду. Суть можно понять из вышеозначенных материалов и комментариев, хоть и на буржуйском, в исходниках.

Мопед изначально не мой, но ездит. Нашел на Stackoverflow, слегка переделал.

Исходник на GitHub
Скомпилированная версия

По мотивам

Источник вдохновения

Flashnote — прикольная программа для мелких заметок

Давно искал что-то подобное, чтоб не кодить самому, до этого пользовался Лехиным ХулиОрганайзером, который, кроме заметок имел в комплекте таймер и напоминатор о заданиях, почту проверить, например.

Последнее время искал что-то новое, поскольку БД с заданиями и заметками начала глючить, и тут, ВНЕЗАПНО, за меня это нашел [info]paperdaemon@ljr:

Поиск простой и удобной оффлайн-программы для быстрых заметок, вместо той прежней самой ламповой и удобной, написанной в свое время одним программистом для своих нужд и презентованной мне еще в середине нулевых, но уже совершенно не работающей в Windows 10, запускаемой и скрываемой по одному нажатию кнопки, столкнул меня с целым множеством каких-то чудовищных и изощренных, платно-сервисных-по-подписке заново изобретенных сумрачными гениями программазма «велосипедов», что я уже практически отчаялся найти то, что мне нужно. И если бы не мое упорство, то я бы так и остался один на один с запускаемым по нажатию трёх клавиш одновременно ярлыком, ведущим на текстовый файл с заметками.

Итак, я все же нашел то, что мне прежде всего удобно, а значит и эффективно. К тому же, новая программа обладает ранее недоступными для предыдущего шедевра достоинствами, такими как сквозной поиск и создание древовидной структуры заметок. Бэкап по расписанию тоже весьма кстати. Программа бесплатна, но можно и задонатить авторам. Ибо они этого достойны

Программа и Windows 7 поддерживает, этот пост написал изначально в ней.

Ссылки

Официальный сайт
Копия (инсталлятор) на mega.nz
Копия (портабельная версия) на mega.nz

Знаменитый роскомнадзоровский словарик

Подправил ставший знаменитым роскомнадзоровский словарик:

— Отсортировано по алфавиту
— Дублирующие строки удалены
— В архиве три варианта: оригинальный, измененный в кодировке ANSI, измененный в кодировке UTF-8

Скачать с Mega.NZ, Архив 7Z

ЗЫ. Один хрен, вдруг понадобится матерный фильтр делать, а тут уже все сделали.