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.

    Сайт управляется системой uCoz