Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #87, МАРТ 2006 г.

Язык протектора

GPcH (www.dotfix.net)

Хакер, номер #087, стр. 087-142-3


loadfunction <function name>, <path to dll>, <param1>, <param2>, <param3>, <accumulator>

Да, параметров только 3, но это максимум, который можно выжать из динамической загрузки, если не считать asm-вставки. Как и в любом нормальном языке, можно использовать метки и делать на них переходы:

label <title> - создать метку title

goto <label> - перейти на метку label

Напоследок я оставил команды для работы с файлами непосредственно PE-формата и не только. Именно они пригодятся при защите твоей программы. Вот они:

- delfile <filename> - удаляет файл с именем filename.

- copyfile <filename from>, <filename to> - копирует файл filename from в файл filename to.

- addlog <filename>, <string> - в файл filename добавляется строка string (рекомендуется использовать для ведения логов работы скрипта).

- shell <filename> - запускает EXE-файл.

- putcode <offset>, <HEX_Stub> - помещает по смещению offset, записанному в HEX-виде набор байт, то же самое в HEX-виде

- getcode <offset>, <length>, <accumulator> считывает в аккумулятор последовательность байт длиной length по смещению offset.

- getfile <accumulator> - считывает все содержимое файла в аккумулятор.

- getfilelength <accumulator> - считывает длину файла в аккумулятор.

- getoem <accumulator> - считывает OEM-информацию из DOS-заголовка EXE-файла.

- setoem <text> - записывает OEM-информацию в dos_header. Рекомендуется юзать это поле для каких-то своих записей типа "Patched by John Smithon" в обрабатываемом PE-файле, все равно загрузчику винды наплевать, что будет в OEM.

- getoep <accumulator> - считать адрес точки входа в программу в аккумулятор.

- setoep <hex string> - изменить адрес точки входа в программе на ту, что записана в HEX-виде в hex string.

- createsection <name>, <size>, accumulator (file offset)>, accumulator (virtual address)> - создает в файле новую секцию с именем name и размером size. При этом смещение секции в PE- файле и виртуальный адрес сохраняются в соответствующих аккумуляторах.

- setflag <hex string> - ставит флаг hex string на все секции. Полезно поставить флаг возможности записи на все секции, чтобы не получить Acces Violation при работе записанного в файл кода.

- invert <hex string (8 bytes)>, <accumulator> - меняет местами байты (требуется для push'ей, call'ов и других инструкций). Пример: был адрес 00401011, в аккумуляторе после инвертирования будет 11104000. Перед этим числом ставим E8 и получаем относительный jmp, который можно записывать в файл.

- getimagebase <accumulator> - получает Image Base.

- xorcode <offset>, <length>, <accumulator> - xor'ит <length> байт по смещению <offset> и заносит код декодера в accumulator.

- createpath <path> - создает путь из неограниченного числа каталогов или просто одну папку.

Назад на стр. 087-142-2  Содержание  Вперед на стр. 087-142-4