реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> IDA Pro, Решил попробовать
amiller
сообщение Jun 29 2018, 08:41
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612



Приветствую!
Обратил внимание на статью на хабре (https://habr.com/company/inforion/blog/359116/), где бодренько так показали процесс реверс-инжиниринга прошивки для STM32.
Ради интереса решил попробовать. Установил версии IDA Pro 6.8 и 7.0 для теста (что нашел на просторах).
Скормил ей по инструкции из статьи пару своих бинарников для STM32F103CB. Результат плачевный. Практически сплошные данные с редкими включениями неадекватного кода.
Нет базы, с которой можно начинать работу по реверсу. Прошивки написаны на голом С без сторонних библиотек.
В статье имеется пример прошивки, который анализировался. Скачал, скормил IDA и о чудо, - результат если и не идеальный, то точно есть с чем работать.
Означает ли это, что IDA заточена на поиск стандартных сигнатур библиотечных функций и начинает анализ, отталкиваясь от них?
Или я просто что то не так делаю?
Если у кого то есть опыт успешного реверса, поделитесь настройками, что нужно сделать, чтобы процесс происходил максимально адекватно.
Может нужно подключить дефайны с описанием регистров периферии, startup-файлы для нужного процессора?
Go to the top of the page
 
+Quote Post
Obam
сообщение Jun 29 2018, 16:22
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



Носорог?
В этом весь маркетинг wink.gif
Цитата
Может нужно подключить ... startup-файлы для нужного процессора?

Ну тогда уж и исходники спросить не грех sm.gif Как-то раз стартап редактировал под задачу; такой же исходник wink.gif

И что, строки, области данных, адреса, константы после директив "LTORG" не идентифицируются?


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
amiller
сообщение Jun 30 2018, 02:12
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612



Цитата(Obam @ Jun 29 2018, 19:22) *
Носорог?
Ну тогда уж и исходники спросить не грех sm.gif Как-то раз стартап редактировал под задачу; такой же исходник wink.gif

И что, строки, области данных, адреса, константы после директив "LTORG" не идентифицируются?

Да вот в том то и дело что практически ничего правильно не идентифицируется.
В прошивке для носорога (из статьи) правильно идентифицируется процентов 70 функций, да и текстовые сообщения почти без ошибок выделяются.
Точно с такими же настройками на моих прошивках результат - полный ноль.
Причём в составе кода есть структуры с большим количеством текстовых сообщений. Правда сейчас пришло в голову, что они все на кириллице, а в носороге на английском.
Вся память без затей идентифицируется как константные данные и забивается директивами DCB или DCW.
И "якобы код" был идентифицирован там, где лежали примитивы графики для дисплея. В общем чепуха полная.
Про стартап написал по причине, что таблица прерываний для конкретного процессора определенная вещь. Зная данные из таблицы, можно идентифицировать все функции прерываний и main. Далее проанализировать все вторичные вызовы функций ну и т.д.
Но похоже, что Ida работает как то иначе. Быстро получить результат не удалось.
Поэтому и спрашивал о чужом опыте. Ещё рано говорить о поддержке STM32 или уже можно пытаться использовать?
Go to the top of the page
 
+Quote Post
x893
сообщение Jun 30 2018, 05:59
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Читаете RM от STM32
Определяете в IDA сегменты (CMSIS, ROM, RAM, PERIPHERIAL)
И от 0x8000004 (и остальные тоже) начинаете.
Можно и файл с описанием сделать, что бы каждый раз руками не задавать.
Конечно не так просто, но возможно.
Например
http://akb77.com/g/stm32/fix-jlink-ob-09262016/
Go to the top of the page
 
+Quote Post
k155la3
сообщение Jun 30 2018, 07:46
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



для "начала" работы с IDA (на хабре) это не лучший пример (с кучей "закрытого" кода в библиотеках и HAL и еще RTOS).
Скомпилируйте простой main без вызова библоиотечных ф-ий (кроме математики), "набейте" основные элементы программы - циклы, условия, switch-case итд, вызовы ф-ий, структуры данных. После этого (имея исходник, листинг на асм, map-файл) попробуйте поработать на IDA.
ps
параллельно RTFM ! как рекомендуют выше. В любом случае без этого - никак.
Go to the top of the page
 
+Quote Post
AVI-crak
сообщение Jun 30 2018, 11:40
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 182
Регистрация: 16-10-15
Пользователь №: 88 894



Цитата(amiller @ Jun 29 2018, 14:41) *
Ради интереса решил попробовать.

Процент успеха программного кода напрямую зависит от содержащихся в нём синтаксических и смысловых ошибок. Те самые синие предупреждения в логе сборщика, не критические ошибки.
На библиотеках от st - количество синевы зашкаливает.

Написать код для st без синевы - очень сложно. Необходимо очень многое переписывать с нуля, даже то что уже хорошо работает. Хотя это и радует взгляд - сомневаюсь что этим кто-то будет заниматься бесплатно.
Go to the top of the page
 
+Quote Post
khach
сообщение Jul 1 2018, 08:40
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741



За поиск стандартных функций в ИДА всегда отвечал набор сигнатур ( файлы .sig). Если при начальной анализе ИДА правильно определяла используемый компилятор и библиотеки, то тогда могла выбрать и правильеый набор .sig и найти большинство библиотечных функций с заголовками. SIG можно создавать и самому, если библиотеки не стандартные, а требуется частое их использование. Например существовали наборы сигнатур для библиотек аппаратных ключей защиты.
Раз в ТС библиотеки самописные, то и ИДА ничего про них не знает, надо ручками заголовки функций писать. Зато потом их можно экспортировать для повторного использования.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 06:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01404 секунд с 7
ELECTRONIX ©2004-2016