32. Получение информации об инструкции
В качестве параметра функция принимает структуру t_asmmodel
Вы вводите инструкцию в окно ввода, функция заполняет структуру t_asmmodel информацией об этой команде.
Напомню, что структура имеет вид
Код:
typedef struct t_asmmodel { // Model to search for assembler command
char code[MAXCMDSIZE]; // Binary code
char mask[MAXCMDSIZE]; // Mask for binary code (0: bit ignored)
int length; // Length of code, bytes (0: empty)
int jmpsize; // Offset size if relative jump
int jmpoffset; // Offset relative to IP
int jmppos; // Position of jump offset in command
} t_asmmodel;
Эта функция нужна для использования Findallcmds
33. Поиск команды
Код:
Findallcmds(pd,model,origin,title)
Первый параметр - структура t_dump
Второй параметр - заполненная структура t_asmmodel (см. п. 32)
Третий параметр - адрес, которого следует начинать поиск
Четвертый параметр - заголовок окна
Поиск команды. Следует заполнить структуру t_dump (первый параметр) для того, чтобы все работало.
Структура t_dump
Код:
typedef struct t_dump { // Current status of dump window
t_table table; // Treat dump window as custom table
int dimmed; // Draw in lowcolor if nonzero
ulong threadid; // Use decoding and registers if not 0
int dumptype; // Current dump type, DU_xxx+count+size
SPECFUNC *specdump; // Decoder of DU_SPEC dump types
int menutype; // Standard menus, MT_xxx
int itemwidth; // Length of displayed item, characters
int showstackframes; // Show stack frames in address dump
int showstacklocals; // Show names of locals in stack
int showsource; // Show source as comment in disassembler
char filename[MAXPATH]; // Name of displayed or backup file
ulong base; // Start of memory block or file
ulong size; // Size of memory block or file
ulong addr; // Address of first displayed byte
ulong lastaddr; // Address of last displayed byte + 1
ulong sel0; // Address of first selected byte
ulong sel1; // Last selected byte (not included!)
ulong startsel; // Start of last selection
int captured; // Mouse is captured by dump
ulong reladdr; // Addresses relative to this
char relname[SHORTLEN]; // Symbol for relative zero address base
char *filecopy; // Copy of the file or NULL
char *backup; // Old backup of memory/file or NULL
int runtraceoffset; // Offset back in run trace
ulong reserved[8]; // Reserved for the future extentions
} t_dump;
OllyDbg Plugin API v1.10
Достаточно заполнить поля base и size (эту информацию можно получить с помощью функции из ollylib Findmod)
Пример в файле find_cmds.py
34. Преобразование виртуального адреса в смещение в исполняемом файле
Код:
Searchfileoffset(pmod,addr)
Пример использования в файле find_file_offset.py
35. Ввод 64-битного MMX числа
Код:
GetMmx(title,data,mode)
Код:
GetMmxXY(title,data,mode)
Вторая функция тож самое, что и первая, ток можно координаты указать окна
Пример в файле get_mmx.py
Добавила прототипы функций в либу ollylib.py. Так что теперь удобней. Это лучшая справка =)