Показать сообщение отдельно

  #5  
Старый 11.07.2008, 20:13
0x0c0de
Постоянный
Регистрация: 25.05.2007
Сообщений: 448
Провел на форуме:
4226446

Репутация: 1564
Отправить сообщение для 0x0c0de с помощью ICQ
По умолчанию

32. Получение информации об инструкции

Код:
 
asmfindmodel(model)
В качестве параметра функция принимает структуру 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. Так что теперь удобней. Это лучшая справка =)

Последний раз редактировалось 0x0c0de; 20.07.2008 в 11:07..
 
Ответить с цитированием