You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
взлом<br />
Леонид «Cr@wler» Исупов<br />
/ crawlerhack@rambler.ru /<br />
борона<br />
POCKET<br />
EXECUTABLE<br />
Программная<br />
оборона<br />
Защита PE-файлов голыми руками<br />
Десять лет назад, когда инструменты для дизассемблирования еще не были так легки<br />
в эксплуатации и распространены, реверс-инжиниринг не был массовым явлением.<br />
Сейчас же любой среднестатистический юзер, воспользовавшись отладчиком, может<br />
распотрошить внутренности твоей программы и узнать, как работают созданные тобой<br />
защитные механизмы. Этого нельзя допустить. Значит, нужно учиться создавать методы,<br />
затрудняющие анализ.<br />
борона<br />
C<br />
/ 078<br />
егодня мы поговорим о том, как вручную закодировать файл,<br />
имея под рукой только отладчик и шестнадцатеричный<br />
редактор. Навыки, которые ты получишь в ходе прочтения<br />
этого материала, помогут тебе понять принцип работы<br />
протекторов и пакеров. Одновременно ты научишься вручную править<br />
двоичный код так, чтобы он оставался работоспособным, не имея под<br />
рукой толстых томов, посвященных программированию на ассемблере.<br />
Для нашей работы потребуется известная версия компилятора MASM<br />
— MASM32. Мы напишем простейший код, результатом работы которого<br />
будет выдача MessageBox’а с надписью «Hello, World!». Исследовав<br />
скомпилированный файл под отладчиком (а он может быть любым, я<br />
использовал OllyDBG), мы посмотрим, как можно создать простейший<br />
раскодировщик, используя прямые вставки двоичного кода.<br />
Наша программа<br />
Итак, приступим к работе. Вот код нашей программы:<br />
.386<br />
.model flat,stdcall ; модель памяти — flat<br />
option casemap:none<br />
; подключение необходимых библиотек:<br />
include \masm32\include\windows.inc ;<br />
include \masm32\include\kernel32.inc ;<br />
includelib \masm32\lib\kernel32.lib ;<br />
include \masm32\include\user32.inc ;<br />
includelib \masm32\lib\user32.lib ;<br />
; секция данных<br />
.data<br />
alert_upper db "Simply program",0<br />
alert_text db "Hello, World!",0<br />
; секция кода<br />
.code<br />
start:<br />
invoke MessageBox, NULL, addr alert_text, addr<br />
alert_upper, MB_OK<br />
invoke ExitProcess, NULL<br />
end start<br />
Сохрани текст в файле c:\masm32\bin\ex.asm (разумеется, если путь к<br />
компилятору другой, то вместо c:\masm32 будет что-то иное) и создай<br />
xàêåð 06 /102/ 07