Задача: есть прога, в ней две интересные функции (например read и write). Можно ли (и как) в иде написать скрипт или плагин, что-бы при запуске программы в идашном отладчике мне в лог сыпались вызовы этих двух функций с содержимым пары регистров на входе/выходе ? Брекпоинты и листик с ручкой не подходит - я раньше состарюсь... Спасибо.
Может быть, это можно сделать с помощью скриптов, но скорее всего проще с помощью плагина. SDK, dbg.h. Там определены "Debugger callbacks", в частности, dbg_breakpoint ( ), dbg_bpt ( ). Получение информаци о регистрах: get_reg_val. То есть, в самом простом случае пишем плагин, который выставляет ловушку (hook) на события отладки и мониторит их. Как только получили событие "точка останова", дампим содержимое регистров в лог, возобновляем выполнение.
IceStudent да. примерно так и сделал. Правда я абсолютно не понял что значит ""external breakpoint" но в общем после обхода пары глюков иды все заработало.
плагин уже есть от RedPlait'а, нужно только скрипт написать на perl, хотя я ни разу для отладчика не пробовал
У меня вопрос, не совсем в тему, но тоже про IDA. Есть бинарник, есть сорцы, пускай написанные на asm. Но бинарник собран на более свежих сорцах. Нету ли скриптов к IDA, позволяющих хоть отчасти автоматизировать процесс дизассемблирования в такой ситуации?
rgo За иду не скажу, но в олли можно подкинуть к новому екзешнику .pdb от старой версии, она его автоматом подхватит
Смысл в том, что если не очень поплывут, то это значительно облегчит процесс дизассемблирования, пускай местами и с ручной правкой, а если просто исследовать то имхо можно и догадатся по именам где какая хф-ция должна быть, все легче будет ...
infern0 а что, просто написать перехватчик этих функци и посмотреть что там творится в реальной среде не судьба ???
А вот "рабоче-крестьянский" способ : делаем из старого асма бинарник, дизассемблируем старый и новый и сравниваем. Если изменения не сильные, то восстановить вручную "новый текст" несложно. Либо более тонко : сравниваем старый текст с восстановленным из него же и подкручиваем ИДУ так, чтобы она давала "похожий" результат...
А как-нибудь так: Компилируем старый, и ищем в новом функции похожие фукции. Дело в том что большинство функций просто совпадают побайтно. Но адреса разные. Ещё большая заморока в том, что на самом деле бинарника два, и хочется дизассемблировать оба. Я просто думал, что всё уже давно написано... Видно придётся самому скрипт писать.
Вроде бы, именно этим занимается плагин для иды под названием Essense. http://www.idapro.ru/forum/viewtopic.php?t=122&postdays=0&postorder=asc&start=0
CARDINAL разовая работа, надо быстро (полдня максимум), прога удаленная. В общем я выбрал вариант с плагином - как я с сказал все успешно отработало.