Техника выживания в мутной воде или как обуть антивирус

       

сюда мы перемещаемся


Внедрять свой код можно в любое место, адрес которого начинается с точки (если точка не стоит, значит данная область файла не отображается в виртуальную память – загрузите файл в pe-editor, войдите в раздел section и приравняйте virtual size секции .text к ее raw size). В нашем случае это может быть любой адрес из интервала 31490F0h – 31491F0h. ОК, пусть это будет 3149100h как наиболее круглый. Сюда-то и будет направлена новая точка входа, для изменения которой проще всего прибегнуть к pe-editor'у. Внимание! Точка входа задается не в абсолютных, а в относительных виртуальных адресах, отсчитываемых от базового адреса загрузки файла (image base) и в нашем случае она равна 01E001h, что при базовом адресе в 03140000h дает 01E001h + 03140000h == 0315E001h. Именно по этом адресу наш код должен возвратить управление, чтобы упакованный файл смог начать свою работу. Соответственно, для вычисления RVA-адреса антиотладочного кода, мы должны вычесть из него image base. Тогда мы получим: 03149100h – 03140000h == 9100h. Записывает это значение в поле Entry Point и вновь возвращаемся в HIEW.

Если все было сделано правильно, после двойного нажатия на <ENTER>
, последовательное нажатие клавиш <F8>
и <F5>
перенесут нас аккурат в окрестности новой точки входа. К внедрению антиотладочного кода готовы? Блин… ну вы же не пионеры…

Начнем с самого просто – с самомодифицирующегося кода. Забросим на стек инструкцию перехода на оригинальную точку входа и немедленно ее исполним. Для этого нам предстоит набрать следующую последовательность команд: mov eax, абсолютный адрес старой точки входа/push 0E0FF/jmp esp, где "E0FFh" представляют собой машинной код команды jmp eax. Экран HIEW'а после завершения ввода должен выглядеть приблизительно так:



Содержание раздела