Дизассемблирование AVR прошивок.

Инструменты:

 

Для начала нам необходимо конвертировать SBN прошивку в простой BIN файл, так как SBN не подходит для дизассемблирования из-за дополнительной информации в файле. Также можно просто считать AVR прошивку с помощью Setool и сохранить с расширением BIN.
Запускаем IDA Pro и открываем BIN файл. В появившемся диалоге выбираем тип процессора “ Atmel AVR series : avr ”.


Затем нажимаем кнопку “Processor options” и выбираем “Ericsson ROM”. Больше ничего не трогаем и нажимаем “OK”

В появившемся диалоге организации памяти ничего не меняем, а просто нажимаем “OK”

Ждем когда загрузится файл. IDA Pro снова спросит тип процессора

На этот раз выбираем “ Ericsson RAM”. После всего выше проделанного вы увидите следующую картинку.

Мы знаем, что при старте (рестарте) процессора он стартует с нулевого адреса памяти. Также нам известно по нулевому адресу находятся векторы прерываний (проще говоря переходы обрабатывающие прерывания как внутренние так и внешние). Вот с нулевого адреса и начнем.

Подведем курсор в позицию 0 го адреса и нажмем на клавиатуре кнопку “c”. Мы увидим как IDA Pro дизассемблирует код.

Из рисунка видно, что процессор после старта передает управление по адресу 1A17, по которому находятся команды установки указателя стека SP. Нажимая сочетания клавиш CTRL+U (искать следующий неопределенный блок), а затем нажимая “c” (если вы видите, что это код, а не данные или текстовые строки ) можно дизассемблировать прошивку очень корректно (но это долго). Можно поступить по другому: выделить все и нажать кнопку “c”, в предложенном диалоге нажать “Analyze”. Процесс автоматического дизассемблирования может занять длительное время, поэтому можно пойти поесть, покурить и т.п.


© 2006
Яндекс.Метрика
Hosted by uCoz