Ситуация такая: инзачально разбирался в проге с помощью дизассемблера IDA, в процессе разбирательств понаименовал там много процедур, смещений, понасоздавал кучу удобоваримых описаний структур данных, используемых в проге. Но на определенном этапе понял, что из-за виртуальных функций и рукодельных указателей на функции не получится обойтись без отслеживания реальных данных дебаггером. Проблема в том, что в OllyDbg сейчас дизассемблинг представляет из себя малопонятную абракадабру по сравнению с тем, что я сейчас имею в IDA. Поэтому процесс отладки представляет из себя постоянное переключение между окном дебаггера (чтоб посмотреть реальное содержимое стека, дампа или регистров) и окном IDA (чтоб понять, где сейчас я нахожусь и чем занимаюсь). Ужасно неудобно. Нельзя ли как то сделать так, чтоб в OllyDbg в окне дизассемблинга был листинг, полученный в IDA?
А у Иды есть встроенный дебаггер? :-О У меня ида 4.1.5, я что то там не нахожу ничего по поводу дебага. А было бы неплохо, если б это можно было делать прям в ней. GODUP.dll - это что? Я просто этими инструментами пользуюсь не больше месяца, так что многие фичи открываю попутно, в процессе использования.
Я генерирую скрипт в иде, для OllyScript. Потом, запускаю олю и сам плагин. Листинг становится много лучше. Имхо отлаживать лучше в оле) Код (Text): #include <idc.idc> static main() { auto f; auto s_adr, s_SP, s_SP1, s_nam, s_lb, s_comma, s_CR; auto adr; auto s_cmt, r_comm, comm; Message("Please wait...\n"); Message("Labels parsing...\n"); s_lb = "LBL"; s_cmt = "CMT"; s_comma = ","; s_CR = "\x22\n"; s_SP = " "; s_SP1= " \x22"; f = fopen("C:\\ida2olly.osc","w"); adr = 0x401000; while(1) { adr = NextFunction(adr); if (adr==-1) break; s_nam = GetFunctionName(adr); s_adr = ltoa(adr, 16); writestr(f,s_lb); writestr(f,s_SP); writestr(f,s_adr); writestr(f,s_SP); writestr(f,s_comma); writestr(f,s_SP1); writestr(f,s_nam); writestr(f,s_CR); } //////////////////////////////////////////////// Message("OK\n"); fclose(f); }
ок, спасибо за советы, буду пробовать. А с идой 4.9 что-то не получилось - она не смогла переварить idb от версии 4.1.5. Сначала предлагает конвертнуть его в более продвинутый формат, отказываешься - молча завершается, соглашаешься - начинает конвертировать, потом говорит - "ошибка у тебя в idb" - и тоже завершается. Да, и еще в 4.9 я не нашел меню Patch.