17. Запись в память
Код:
Writemem(addr,buf,size)
addr – адрес
buf – откуда копируем байты
size – размер буфера
18. Дизассемблирование команды
Первый параметр – адрес, по которому нужно дизассемблировать команду
Второй параметр – тип дизасма
Код:
DISASM_SIZE получение длины команды
DISASM_ALL полное дизассемблирование
Функция возвращает структуру t_disasm
Код:
typedef struct t_disasm { // Results of disassembling
ulong ip; // (*) Instrucion pointer
char dump[TEXTLEN]; // Hexadecimal dump of the command
char result[TEXTLEN]; // Disassembled command
char comment[TEXTLEN]; // Brief comment
char opinfo[3][TEXTLEN]; // Comments to command's operands
int cmdtype; // (*) One of C_xxx
int memtype; // (*) Type of addressed variable in memory
int nprefix; // (*) Number of prefixes
int indexed; // Address contains register(s)
ulong jmpconst; // (*) Constant jump address
ulong jmptable; // (*) Possible address of switch table
ulong adrconst; // (*) Constant part of address
ulong immconst; // (*) Immediate constant
int zeroconst; // (*) Whether contains zero constant
int fixupoffset; // (*) Possible offset of 32-bit fixups
int fixupsize; // (*) Possible total size of fixups or 0
ulong jmpaddr; // Destination of jump/call/return
int condition; // 0xFF:unconditional, 0:false, 1:true
int error; // (*) Error while disassembling command
int warnings; // (*) Combination of DAW_xxx
int optype[3]; // Type of operand (extended set DEC_xxx)
int opsize[3]; // Size of operand, bytes
int opgood[3]; // Whether address and data valid
ulong opaddr[3]; // Address if memory, index if register
ulong opdata[3]; // Actual value (only integer operands)
t_operand op[3]; // Full description of operand
ulong regdata[8]; // Registers after command is executed
int regstatus[8]; // Status of registers, one of RST_xxx
ulong addrdata; // Traced memory address
int addrstatus; // Status of addrdata, one of RST_xxx
ulong regstack[NREGSTACK]; // Stack tracing buffer
int rststatus[NREGSTACK]; // Status of stack items
int nregstack; // Number of items in stack trace buffer
ulong reserved[29]; // Reserved for plugin compatibility
} t_disasm;
OllyDbg Plugin API v1.10
Интересное поле - текстовое представление команды – result
Небольшой пример в файле disasm_test.py
19. Ввод числа
Для этих целей существует функция
title – заголовок откна ввода
size – размер вводмого значения в байтах (1,2,4)
Возвращаемое значение функции – введенное число
Пример в файле example_input.py
20.Постановка темпового бряка
Адрес, тип.
21.Обычные бряки
Код:
Setbp(addr,type,cmd)
Повторюсь. Примеры использования в breaks.py