Как отлаживать код незнакомых приложений?

… легко постукивая кувалдой.

Вопрос из почты:

Я пытаюсь приспособить windbg не для отладки, а для реверсинга незнакомых приложений, и постоянно упираюсь в то, что для удобной работы нужны символы, иначе windbg (в юзермоде, конечно) ничем не сильнее того же OllyDbg. Но, я надеюсь, что не все так плохо с этим отладчиком, и это у меня руки кривые.

Если символьной информации нет, то частично заменить её можно только хорошенько проштудировав бинарный код. WinDbg таким, вроде бы, не занимается. В идеальном случае хотелось бы, чтобы отладчик умел все, что умеет IDA Pro и при этом имел расширяемость как у WinDbg. Хотя если судить по сайту, последние версии IDA имеют встроенный отладчик.

Я не в курсе насколько хорошо OllyDbg анализирует код и насколько это помогает при отладке. Если он заметно удобнее WinDbg, то логичнее всего было бы им и пользоваться.

Не могли бы Вы мне ответить на простенький вопрос, как корректно брякнуться на энтрипойнт приложения которому нет символов? Без танцев с бубном. Может, плугин какой есть?

Корректно - вот так: ;-)

bp <address> или ba <address>

Адрес в общем случае без танцев с бубном не находится, даже в случае IDA. Обычно поиски начинаются с крупиц информации из шагов для воспроизведения сценария. Программа обращается к определенному ключу в реестре? Ставим точку останова на RegCreateKeyEx/RegOpenKeyEx. Происходит определённое исключение? Ловим именно это исключение. После нескольких итераций находятся конкретные места в коде приложения, в которых выполняются интересующие нас действия.

В общем, ложки серебряной пули не существует.

comments powered by Disqus