[Русский] [English]
LDE32 -- это библиотека для определения длин x86 инструкций.
В LDE32 всего две процедуры.
1. void pascal disasm_init(void* tableptr);
- используется для распаковки в память 2-килобайтной таблицы, которая потребуется второй процедуре при дисассемблировании.
2. int pascal disasm_main(void* opcodeptr, void* tableptr);
Эта функция используется для дисассемблирования одной инструкции. Возвращает длину инструкции в байтах, либо -1 в случае ошибки.
Процедуры сохраняют регистры неизмененными; код независим к смещению; не используются никакие внешние данные.
Для подключения LDE32 добавьте следующую строку:
include lde32bin.inc
пример |
---|
push offset tbl ; распаковать в память таблицу call disasm_init mov ebx, 401000h cycle: push ebx ; оффсет инструкции push offset tbl ; адрес таблицы call disasm_main add ebx, eax cmp eax, -1 ; ошибка? jne cycle include lde32bin.inc ; код LDE32 tbl db 2048 dup (?) ; таблица флагов LDE32 |
programmed in 1999 by Z0MBiE, http://z0mbie.host.sk