IDA Pro питон idaapi

Здравствуйте, у меня быстрый вопрос.

Я пытался сохранить полный дамп памяти в IDA Pro в переменной для выполнения поиска с помощью скрипта Python, но не нашел подходящей функции для этого с помощью idaapi.

Я хочу сделать что-то вроде:

import idaapi

dump=get_memory_dump() # Or whatever function to do it

if "foo" in dump:
print "foo is in dump"

Как я могу получить дамп? Как видите, я хочу написать скрипт для поиска шаблонов в памяти во время отладки приложения.

Большое тебе спасибо


person user1618465    schedule 13.05.2013    source источник


Ответы (1)


Используйте idaapi.nextthat() для поиска последовательности байтов, затем используйте dbg_read_memory() для чтения памяти отлаживаемой программы. Поскольку последний, похоже, делает копию, читать, скажем, 4 ГБ было бы неразумно.

person scottt    schedule 14.05.2013
comment
Спасибо, Скотт, но я попытался прочитать память с помощью dbg_read_memory(), и IDA потерпела крах. Работает ли это для вас? Спасибо! - person user1618465; 17.05.2013
comment
@ user1618465, попробуйте dbg_read_memory(cpu.Esp, 4). Это действительно не должно рухнуть. Если чтение 4 байтов из ESP работает, то я предполагаю, что IDA дает сбой только на диапазонах адресов, которые недействительны в отлаживаемом процессе, и вам придется ограничиться чтением страниц, помеченных как доступные для чтения в карте памяти процесса. - person scottt; 17.05.2013
comment
Может быть, сообщить Hex Rays о минимальном репродукторе - person scottt; 19.05.2013