Что нового

SelfTest - UDF для контроля целостности скомпилированного скрипта

ynbIpb

Скриптер
Сообщения
399
Репутация
110
AutoIt: 3.3.6.1
Версия: 0.1

Категория: Вспомогательные функции, Кодирование / Шифрование

Описание: Данная UDF предназначена для самопроверки целостности скомпилированного скрипта. Проверка реализована с помощью алгоритма хэширования MD5. Принцип работы: Так как заранее нам не известен MD5 хэш скомпилированного скрипта, то мы не можем его сохранить в самом скрипте. По этому информация добавляется уже после компиляции путём добавлением нескольких байт в конец *.exe файла. А чтобы она не была в открытом виде, информация шифруется алгоритмом XXTEA. При запуске функция высчитывает MD5 хэш части файла без добавленных в конец байтов. Потом читает байты в конце, расшифровывает их и сравнивает с полученным хэшем. Использование: Скомпилировать Demo пример, потом обратотать готовый EXE в SelfTest_Patcher.au3 (естественно пароль в переменной $sPassword должен соответствовать введённому в окне патчера)

Код/Пример:
Код:
#include <SelfTest_UDF.au3>
If @compiled = 0 Then 
	MsgBox (0, "", "Скрипт не откомпилирован!")
	Exit
EndIf
$sPassword = "1" ; пароль шифрования XXTEA
$iSelftestResult = _SelfTest ($sPassword) ; проверяем свою целостность
If $iSelftestResult = 0 Then MsgBox (0, "", "Файл Повреждён!" & @CRLF & $iSelftestResult)
If $iSelftestResult = 1 Then MsgBox (0, "", "Проверка Прошла успешно!" & @CRLF & $iSelftestResult)
If $iSelftestResult = 2 Then MsgBox (0, "", "Файл не содержит информации для проверки!" & @CRLF & $iSelftestResult)
Файл: в аттаче всё необходимое

Снимок:
sftest1.jpg


История версий:

Источник: autoit-script.ru
Автор(ы): ynbIpb (SelfTest_Patcher.au3, _SelfTest), Ward (_MD5, _XXTEA_Encrypt, _XXTEA_Decrypt)
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Хорошая идея (+1), но IMHO шифрование здесь явно лишнее. Зачем? Ведь MD5 и так является уникальным. Если кому-нибудь приспичит что-то изменить в .exe файле, то он просто выудит оттуда исходный код, а не будет заморачиваться с MD5, не говоря уже о шифровании. Для такой глобальной защиты, проще использовать различные упаковщики, например PECompact.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Вот вам и привязка к компьютеру IMHO!
Функция от Yashied`а по сбору ифо. по железу + SelfTest
В момент запуска программы, функция от Yashied`а собирает инфо. по железу. Функция SelfTest, проверяет байты в конце, и если они отсутствуют или не совпадают с данными функции по сбору инфо. железа то, запускает дочерний процесс, который просит ввести ключ. Программа при этом завершается, чтобы её можно было пропатчить. Дочерний процесс, после того как пропатчит программу или получит отказ от пользователя, уничтожается.

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

ynbIpb

Скриптер
Сообщения
399
Репутация
110
Рад, что вам понравилась идея. Если честно я её подглядел на англ. форуме и давно собирался реализовать. Цель защититься не от взлома, а скорее от заражения вирусом. А шифрование может и лишнее, но решил - пусть будет.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
ynbIpb сказал(а):
Цель защититься не от взлома, а скорее от заражения вирусом.

Я тоже об этом сначала подумал. Но... для этого нужно, чтобы "целостность" файла проверялась не в самой программе, а в отдельном модуле. В противном случае, заражения не избежать. Можно лишь узнать о самом его факте.
 
Автор
ynbIpb

ynbIpb

Скриптер
Сообщения
399
Репутация
110
Я так обычно и проверяю. Рядом с файлом лежит *.md5 файл, в системе установлена программа, с которой это расширение ассоцированно. При клике на *.md5 файле я узнаю не изменились ли контролируемые файлы.
Программа: _http://getmd5checker.com/
А вот самопроверку сделал после случая когда заразил свою флешку и продолжал ей пользоваться, запуская свои файлы на других компах. А вот если бы они сразу октазались работать я бы обнаружил заражение раньше. Кстати этот метод самопроверки не спасёт от вирусов, которые работают по принципу джоинера. Тоесть они не добавляют своё тело к имеющемуся файлу, а склеивают исходный файл и файл вируса в один EXE, а при запуске извлекают их в темп и запускают.
 
Верх