InitInstrEx
Выделяет память из кучи процесса для структуры
Instruction и инициализирует её.
InitInstrEx PROTO
CodePtr:PVOID,AlterBase:ULONG64,Mode:BYTE,CodeSize:ULONG64,dwFlags:DWORD
CodePtr - аддрес инструкции.
AlterBase - аддрес от которого будут считаться абсолютные
адресса в REL коммандах, может быть равным аддресу инструкции в простейшем
случае.
Mode - режим кодирования.
Возможны 3 разных режима.
curr_id=0
enum
LONG_MODE,LEGACY_MODE32,LEGACY_MODE16
LONG_MODE - для
64-битного кода.
LEGACY_MODE32 - для 32-битного кода.
LEGACY_MODE16 - для 16-битного кода.
CodeSize - размер блока памяти с кодом.
dwFlags - флаги.
Используются следующие флаги.
curr_id=0
enf
MNEM_HEAP,OPER1_HEAP,OPER2_HEAP,
OPER3_HEAP
enf OPER4_HEAP,OPER5_HEAP,
MO_RANGES,ANALYSES_HEAP
curr_id=8
enf SINGLE_DASM
curr_id=11
enf RJ_OFFSET
MNEM_HEAP -
автоматическое выделение буфера для строки основной части мнемоники.
OPER1_HEAP - автоматическое
выделение буфера для строки мнемоники первого аргумента.
OPER2_HEAP - автоматическое
выделение буфера для строки мнемоники второго аргумента.
OPER3_HEAP - автоматическое
выделение буфера для строки мнемоники третьего аргумента.
OPER4_HEAP - автоматическое
выделение буфера для строки мнемоники четвёртого аргумента.
OPER5_HEAP - автоматическое
выделение буфера для строки мнемоники пятого аргумента.
MO_RANGES -
автоматическое выделение буфера для структуры
moRanges.
ANALYSES_HEAP - автоматическое выделение буфера
для структуры Analyses.
SINGLE_DASM - режим одинарного
диз/ассемблирования. При котором значения полей CodePtr и AlterBase вызывающий
должен определять каждый раз сам.
RJ_OFFSET -
автоматическое выделение буфера для строки оффсета или абсолютного аддресса для
инструкций с RIP и REL аддрессацией.
Полезные сочетания флагов.
PLAIN_DASM equ (
MNEM_HEAP or OPER1_HEAP or
OPER2_HEAP or OPER3_HEAP or
OPER4_HEAP or OPER5_HEAP or
RJ_OFFSET)
STD_INSTR equ (
PLAIN_DASM or MO_RANGES)
EXT_INSTR equ (
STD_INSTR or ANALYSES_HEAP
) по умолчанию для InitInstr.
Возвращаемое значение: в rax возвращает указатель на
структуру Instruction
готовую к использованию. Тип HINSTR.