Как отлаживать код незнакомых приложений?
May 17, 2009 · CommentsОтладка
… легко постукивая кувалдой.
Вопрос из почты:
Я пытаюсь приспособить windbg не для отладки, а для реверсинга незнакомых приложений, и постоянно упираюсь в то, что для удобной работы нужны символы, иначе windbg (в юзермоде, конечно) ничем не сильнее того же OllyDbg. Но, я надеюсь, что не все так плохо с этим отладчиком, и это у меня руки кривые.
Если символьной информации нет, то частично заменить её можно только хорошенько проштудировав бинарный код. WinDbg таким, вроде бы, не занимается. В идеальном случае хотелось бы, чтобы отладчик умел все, что умеет IDA Pro и при этом имел расширяемость как у WinDbg. Хотя если судить по сайту, последние версии IDA имеют встроенный отладчик.
Я не в курсе насколько хорошо OllyDbg анализирует код и насколько это помогает при отладке. Если он заметно удобнее WinDbg, то логичнее всего было бы им и пользоваться.
Не могли бы Вы мне ответить на простенький вопрос, как корректно брякнуться на энтрипойнт приложения которому нет символов? Без танцев с бубном. Может, плугин какой есть?
Корректно - вот так: ;-)
bp <address> или ba <address>
Адрес в общем случае без танцев с бубном не находится, даже в случае IDA. Обычно поиски начинаются с крупиц информации из шагов для воспроизведения сценария. Программа обращается к определенному ключу в реестре? Ставим точку останова на RegCreateKeyEx/RegOpenKeyEx. Происходит определённое исключение? Ловим именно это исключение. После нескольких итераций находятся конкретные места в коде приложения, в которых выполняются интересующие нас действия.
В общем, ложки серебряной пули не существует.