Трехлинейная алгебра.
Работал в консоли…

Решил скинуть кусочек кода другу, включаю выделение, смотрю, а консоль-то недвусмысленно намекает.
Ей хорошо, она железная. Ее даже в ГОРФ не посадят, хотя уничтожить попробовать могут.
Project-T (Wolf in the Dark)
Поиграл ради разнообразия сегодня со старыми и новыми друзьями. Как обычно, ничего из этого по итогу не получится (один хрен, к песне надо сначала сочинять текст и драм), так, наиграл чуть-чуть.
Но пусть остается, один хрен, запись некопирайтная, кому вдруг приглянется, можно использовать без проблем. Хотя, лет 10 даже акустику в руки не брал, так что получилось немного похоже на Электропартизан. Ща вот и проверю, насерет Ютуб в запись или нет.
В общем, была картинка в голове, косяк, гитара и «черный песок Марса» (это коктейль такой). Так что если плагиат — только случайный.
Неверующие завелись
Нате вам (ц) Маяковский.
На беса-пилотника тоже насобирали. Второе Леша в основном и анонимно. В следующем месяце поделимся донатами со всеми сопречукнутыми.
Весна ожидается жаркая, тьфу, не сглазить.
Набор шифровалок
— DES 100 — консольная утилита, реализующая алгоритм DES
— FC32 — алгоритмы перечислены на скриншоте

— FIGA201R — самописная шифровалка с самописным алгоритмом (криптостойкость не проверялась), описание формата файла и алгоритма в комплекте.
— WinCrypt — алгоритм LOKI
Advancend Grapher
Мелкому другу срочно понадобилась программа, создающая графики по формулам, а Excel не подошел, бо до сих пор не умеет рисовать нормальные синусоиды, если задать интервал, например, от -10 до +10. Во всяком случае, препод сказал, что его графики из Excel не устраивают. А курсовая на носу у парня.
Слава Великим Древним и Ктулху лично, я компьютерный Плюшкин, и моего препода тоже не устраивали графики из Майкрософт Пуксель. Так что откопал такую вот программу.
+ Строить графики по формулам с нужным шагом и интервалом.
+ На одной координатной оси можно размещать несколько графиков
+ Импортировать результат в BMP/GIF
+ Дофига всякого-разного, что никогда не надо было, но вдруг кому-то понадобится (графики в полярных координатах, какие-то производные и прочий страшный матан). Мы электрики — нам красиво синусоиду нарисовать хватает (тьфу-тьфу-тьфу, как бы не сглазить).
Заходим в меню: Построение —> Добавить график
Попадаем в окошко построения:

Вбиваем формулу, выбираем основные параметры графика (цвет, толщина линии и т.д.).
Переключаемся на вкладку Доп. свойства:

Вбиваем диапазон и/или параметры построения (количество шагов, максимальный разрыв между значениями).
График можно отредактировать. Для этого нужно нажать F4 или перейти в меню Построение —> Список графиков:

Нужный график можно удалить, нажав по графику в окне Список графиков правой кнопкой мыши, и выбрав пункт Удал. из контекстного меню, либо отредактировать его (поменять формулу, цвет, прочие параметры) дважды кликнув мышью по соответствующей строке.
Программа сохраняет данные в своем собственном бинарном формате. Не расковыривал его.
Программа может экспортировать изображение в формат BMP или GIF, а поскольку, внутри программа таки растровая, размер экспортируемого изображения может быть любой. Пример:

Скачать оригинальный BMP (1024×768)
На картинке представлена демонстрация возможностей. Три графика:
+ sin(x)^2
— красный
+ -sin(x)^2
— фиолетовый
+ (sin (x^2)^2)*10
— серый
Windows 98 SE — Windows 10 (Windows 11 не подтверждена)
Бесплатно для граждан ГОРФ. Для активации бесплатности нужно в установщике выбрать русский язык и подтвердить дополнение к лицензии. Не ломал, ибо само работает.
Advancend Grapher 1.5 build 3 с MEGA.NZ (SFX ZIP Wrapper+Original Installer)
DIV с прокруткой
Все-таки пост от склероза.
Некоторые движки (LJ/LJR) такой код режут, но в самописном движке или WordPress должно работать.
Чтобы текст, заключенный, например в теги <pre></pre>
не порвал дизайн страницы, его можно положить в div
с прокруткой.
Без div’а это будет выглядеть так:

[2] [3]
А с div’ом вот так
Если текст изначально размещается внутри div’а, заданного, например, шаблоном, то можно воспользоваться масштабированием с процентами:
<div style="max-width: 100%; max-height: 100%; overflow: auto;">
В других случаях размер можно задать пикселями:
<div style="max-width: 700px; max-height: 1000px; overflow: auto;">
NSIS: поиск и завершение (kill) внешнего процесса.
Делается с помощью плагина nsProcess
.
1. Качаем архив
2. Распаковываем содержимое архива по соответствующим каталогам NSIS
NsProcess.zip\Example --> C:\Program Files (x86)\NSIS\Examples\nsProcess
NsProcess.zip\Include --> C:\Program Files (x86)\NSIS\Include\
NsProcess.zip\Plugin\nsProcess.dll --> C:\Program Files (x86)\NSIS\Plugins\x86-ansi\nsProcess.dll
NsProcess.zip\Plugin\nsProcessW.dll --> C:\Program Files (x86)\NSIS\Plugins\x86-unicode\nsProcess.dll
Начало:
Unicode true
!include LogicLib.nsh
Name "KillProcessExample"
OutFile "KillProcessExample.exe"
ShowInstDetails show
RequestExecutionLevel User
Немного дополнил пример из официального мануала, вставив макрос для расширенного вывода сообщений об ошибках:
!macro PrintProcError ErrCode
Код разлапистый, потому на PasteBin: !macro PrintProcError ErrCode
Код внутри секции:
1. Запускаем тестовую программу (calc.exe
, которая обычно есть в любой винде и лежит она обычно в $SYSDIR
, т.е. в C:\Windows\System32\
) и ждем 500 миллисекунд:
DetailPrint "Start calc.exe..."
Exec "$SYSDIR\calc.exe"
Sleep 500
2. Спрашиваем у пользователя, будем ли убивать процесс. Если нет — идем на завершение:
MessageBox MB_YESNO|MB_ICONQUESTION "Kill process calc.exe?" IDYES 0 IDNO "EndProg"
3. Ищем процесс(ы) по имени экзешника:
DetailPrint "Find process calc.exe..."
nsProcess::_FindProcess "calc.exe"
Да, можно хоть 10 калькуляторов назапускать.
4. Вытаскиваем из стека результат функции _FindProcess
:
Pop $R0
5. Выводим на псевдоконсоль расшифровку кодов возврата:
!insertmacro PrintProcError $R0
6. Если код возврата = 0
, значит, процесс найден, пытаемся его убить, выводим расшифровку кодов возврата, и опять подождем 500 миллисекунд:
${If} $R0 = 0 DetailPrint "Process calc.exe found. Kill it..." nsProcess::_KillProcess "calc.exe" !insertmacro PrintProcError $R0 Sleep 500 ${EndIf}

— Официальная справка плагина (на буржуйском)
— Перевод от Leha Silent (копия)
Тест div’а с прокруткой
Проценты:
После прочтения 126 заголовков, созданных генератором новостей, сбежавший из зоопарка кенгуру лишил гражданства, ограбил, изнасиловал, утопил, расстрелял, распял, сжег, сварил и съел председателя ЦИК В. Чурова Предвкушающий встречу с В.И. Новодворской патриарх Кирилл усыновил уличенного в педофилии главного государственного санитарного врача Г. Онищенко Внося законопроект о запрете пропаганды гомосексуализма среди пенсионеров, телеведущий Дмитрий Киселев унижал честь и достоинство своего телохранителя Вскоре после принятия иудаизма бендеровец Яценюк внес в Думу законопроект о запрете усыновления американцами внебрачных детей о. Всеволода Чаплина После празднования своего дня рождения в кафе "Четыре курицы" уссурийский тигр жег покрышки и поливал "коктейлем Молотова" министра обороны Шойгу Измученный острым приступом хронического бармазита покойный президент Венесуэлы Уго Чавес пообещал не в вводить войска в биолога Ричарда Докинза В городе на Неве в ходе празднования Дня пограничника бендеровец Тягнибок объявил народным мэром Пекина оппозиционера Алексея Навального Углубившись в чтение последнего послания В.В. Путина, Сильвио Берлускони бросил "коктейль Молотова" в окно директора ЦРУ Дэвида Петрэуса Выступая на заседании Совета безопасности ООН, пляшущий в голом виде Никита Джигурда продемонстрировал мировому сообществу трусы начальника СКП А. Бастрыкина После прочтения 126 заголовков, созданных генератором новостей, лидер Антимиайдана Залдостанов намекнул на отношения Ирины Родниной и своего брата
Пиксели:
После прочтения 126 заголовков, созданных генератором новостей, сбежавший из зоопарка кенгуру лишил гражданства, ограбил, изнасиловал, утопил, расстрелял, распял, сжег, сварил и съел председателя ЦИК В. Чурова Предвкушающий встречу с В.И. Новодворской патриарх Кирилл усыновил уличенного в педофилии главного государственного санитарного врача Г. Онищенко Внося законопроект о запрете пропаганды гомосексуализма среди пенсионеров, телеведущий Дмитрий Киселев унижал честь и достоинство своего телохранителя Вскоре после принятия иудаизма бендеровец Яценюк внес в Думу законопроект о запрете усыновления американцами внебрачных детей о. Всеволода Чаплина После празднования своего дня рождения в кафе "Четыре курицы" уссурийский тигр жег покрышки и поливал "коктейлем Молотова" министра обороны Шойгу Измученный острым приступом хронического бармазита покойный президент Венесуэлы Уго Чавес пообещал не в вводить войска в биолога Ричарда Докинза В городе на Неве в ходе празднования Дня пограничника бендеровец Тягнибок объявил народным мэром Пекина оппозиционера Алексея Навального Углубившись в чтение последнего послания В.В. Путина, Сильвио Берлускони бросил "коктейль Молотова" в окно директора ЦРУ Дэвида Петрэуса Выступая на заседании Совета безопасности ООН, пляшущий в голом виде Никита Джигурда продемонстрировал мировому сообществу трусы начальника СКП А. Бастрыкина После прочтения 126 заголовков, созданных генератором новостей, лидер Антимиайдана Залдостанов намекнул на отношения Ирины Родниной и своего брата
Плагин 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 его будет нельзя открыть без эмулятора.

Патч на NSIS (с возможностью отмены).
На самом деле, многими реверсерскими командами создана куча генераторов автопатчеров, подсовываешь ему оригинальный и измененный экзешник, и тебе генерируется автопатчер, даже с красивой картинкой и восьмибитной музыкой. Но «есть проблема» (ц) Патриарх Кирилл:
— Не на все автопатчеры хорошо реагируют антивирусы
— Автопатчеры нестандартны, кто в лес, кто по дрова.
Неплохо бы сделать так, чтоб и антивирусы не ругались, и оно хоть как-то относительно стандартно выглядело. И такое решение есть — модуль VPatch для системы установки NSIS. Далее расскажу, как этим модулем воспользоваться, чтобы пропатчить уже установленную программу, а также, немного расширю пример, покажу как в патч «зашить» еще и отмену патча. Естественно, чтобы все повторить, у вас должен быть установлен NSIS хотя бы в минимальной комплектации.
Устанавливаем модуль VPatch, лучше воспользоваться ссылкой на установщик, потом скачать родной пример и попытаться его скомпилировать. Если все сработало — модуль установился правильно, можно работать дальше.
Для генерации данных для патча, VPatch использует свои утилиты командной строки, которые в комплекте идут, но устанавливаются криво, так что качаем утилиты отдельно и устанавливаем их (установятся в %WINDIR%
).
Теперь нужна лабораторная крыса, т.е. программа, которую будем патчить, возьмем оригинальный CrackMe из предыдущего примера (копия) и напишем ему стандартный инсталлятор:
Исходник инсталлятора
Готовый инсталлятор тестовой программы
Исходник CarckMe
Устанавливаем ее.
Для патча нужен оригинальный экзешник
Патч:

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

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

Суп гороховый:
+ Картофель
+ Горох
+ Лук
+ Мясо
плюс хлеб
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} "[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 году.
NSIS: Получение списка файлов с MD5-хешами.
Как-то показывал, как в NSIS получить MD5-хэши (копия), файлов в т.ч. Решил расширить пример, а как получить список файлов в каталоге и их MD5-хэши. Мне пригодится для следующего примера по 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} "[Path]" "[Options]" "Function"
где:
"[Path]"
— путь, стартовый каталог для поиска
"[Options]"
— опции (см. далее)
"Function"
— callback-функция (см. далее)
/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} "C:\SOMEDIR" "/L=F" "Userfunction"
Где мы указали каталог, с которого нужно начать поиск, указали хоть одну опцию, нужно указать хотя бы одну, и указали функцию обратного вызова, пока имя условное, но ниже объясню.
Это пользовательская функция, которая должна получать данные от ${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"'
После секции организуем пользовательскую функцию:
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