Безопасность вычислительных сетей. Практические аспекты - стр. 8
1.2 Ручной анализ
Качественное отличие IDA Pro от других дизассемблеров – интерактивность. Пользователь может сам сообщать дизассемблеру дополнительную информацию.
Рассмотрим метод ручного анализа на практике. Часто бывает так, что IDA не может в автоматическом режиме найти функцию main, которая чаще всего является точкой входа. Эта функция принимает два обязательных аргумента: argc (количество аргументов) и argv (список аргументов). То есть можно косвенно предположить что если функция в программе работает с этими аргументами то она и есть main.
Откроем вкладку списка имён. Нажатием Ctrl+F включаем поиск по именам.
С помощью поиска находим имена _argv и _argc. В IDA Pro есть функция просмотра ссылок на объект. Выбираем _argc (или _argv), нажимаем клавишу X. Появляется окно ссылок.
1.3 Отладка
В составе IDA Pro дополнительно есть отладчик. Он позволяет пошагово выполнять программу, исследовать и модифицировать память во время выполнения программы.
Панель запуска отладки находится в верхней части окна, она изображена на рисунке 63. С её помощью можно запустить отладку, приостановить отладку, остановить отладку. Также можно выбрать отладчик (локальная машина, виртуальная машина, удалённая машина).
Рисунок 63 – Панель отладки.
Для исследования программы в нужном месте следует использовать точки остановы (breakpoints). Они устанавливаются с помощью панели, которая находится справа от панели отладки. Панель содержит стандартные функции по работе с точками останова.
При запуске программы она выполнится до точки остановы и будет ожидать дальнейших действий пользователя. Затем программу можно выполнять в таком же режиме (до следующей точки остановы), для этого нужно нажать кнопку запуска отладки. Либо можно исследовать программу, выполняя её пошагово. Для этого существуют команды step into (шаг со входом в функцию, F7) и step over (шаг без входа, F8).
Исследуя код можно заметить, что при некотором условии на экран будет выводиться строка та или иная строка. Также мы знаем, что за сравнения в языке ассемблера отвечает инструкция cmp. IDA позволяет редактировать программу в процессе выполнения. Для этого выбираем нужную часть кода, выбираем Edit -> Patch Program -> Assembly. И пишем нужную часть кода.