Перейти к содержанию
    

Приветствую!

Обратил внимание на статью на хабре (https://habr.com/company/inforion/blog/359116/), где бодренько так показали процесс реверс-инжиниринга прошивки для STM32.

Ради интереса решил попробовать. Установил версии IDA Pro 6.8 и 7.0 для теста (что нашел на просторах).

Скормил ей по инструкции из статьи пару своих бинарников для STM32F103CB. Результат плачевный. Практически сплошные данные с редкими включениями неадекватного кода.

Нет базы, с которой можно начинать работу по реверсу. Прошивки написаны на голом С без сторонних библиотек.

В статье имеется пример прошивки, который анализировался. Скачал, скормил IDA и о чудо, - результат если и не идеальный, то точно есть с чем работать.

Означает ли это, что IDA заточена на поиск стандартных сигнатур библиотечных функций и начинает анализ, отталкиваясь от них?

Или я просто что то не так делаю?

Если у кого то есть опыт успешного реверса, поделитесь настройками, что нужно сделать, чтобы процесс происходил максимально адекватно.

Может нужно подключить дефайны с описанием регистров периферии, startup-файлы для нужного процессора?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Носорог?

В этом весь маркетинг ;)

Может нужно подключить ... startup-файлы для нужного процессора?

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Носорог?

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

 

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

Да вот в том то и дело что практически ничего правильно не идентифицируется.

В прошивке для носорога (из статьи) правильно идентифицируется процентов 70 функций, да и текстовые сообщения почти без ошибок выделяются.

Точно с такими же настройками на моих прошивках результат - полный ноль.

Причём в составе кода есть структуры с большим количеством текстовых сообщений. Правда сейчас пришло в голову, что они все на кириллице, а в носороге на английском.

Вся память без затей идентифицируется как константные данные и забивается директивами DCB или DCW.

И "якобы код" был идентифицирован там, где лежали примитивы графики для дисплея. В общем чепуха полная.

Про стартап написал по причине, что таблица прерываний для конкретного процессора определенная вещь. Зная данные из таблицы, можно идентифицировать все функции прерываний и main. Далее проанализировать все вторичные вызовы функций ну и т.д.

Но похоже, что Ida работает как то иначе. Быстро получить результат не удалось.

Поэтому и спрашивал о чужом опыте. Ещё рано говорить о поддержке STM32 или уже можно пытаться использовать?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Читаете RM от STM32

Определяете в IDA сегменты (CMSIS, ROM, RAM, PERIPHERIAL)

И от 0x8000004 (и остальные тоже) начинаете.

Можно и файл с описанием сделать, что бы каждый раз руками не задавать.

Конечно не так просто, но возможно.

Например

http://akb77.com/g/stm32/fix-jlink-ob-09262016/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

для "начала" работы с IDA (на хабре) это не лучший пример (с кучей "закрытого" кода в библиотеках и HAL и еще RTOS).

Скомпилируйте простой main без вызова библоиотечных ф-ий (кроме математики), "набейте" основные элементы программы - циклы, условия, switch-case итд, вызовы ф-ий, структуры данных. После этого (имея исходник, листинг на асм, map-файл) попробуйте поработать на IDA.

ps

параллельно RTFM ! как рекомендуют выше. В любом случае без этого - никак.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ради интереса решил попробовать.

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

На библиотеках от st - количество синевы зашкаливает.

 

Написать код для st без синевы - очень сложно. Необходимо очень многое переписывать с нуля, даже то что уже хорошо работает. Хотя это и радует взгляд - сомневаюсь что этим кто-то будет заниматься бесплатно.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

За поиск стандартных функций в ИДА всегда отвечал набор сигнатур ( файлы .sig). Если при начальной анализе ИДА правильно определяла используемый компилятор и библиотеки, то тогда могла выбрать и правильеый набор .sig и найти большинство библиотечных функций с заголовками. SIG можно создавать и самому, если библиотеки не стандартные, а требуется частое их использование. Например существовали наборы сигнатур для библиотек аппаратных ключей защиты.

Раз в ТС библиотеки самописные, то и ИДА ничего про них не знает, надо ручками заголовки функций писать. Зато потом их можно экспортировать для повторного использования.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 В IDA армные прошивки лучше не  грузить.

Изменено пользователем Aldec

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне вот понадобилось армные погрузить на телегу бабе Иде.
Но, вижу, придётся собирать конфигурацию по крохам в интернете.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ghidra весьма юзабельна


Запрещена к распространению на "святой Руси" - скачать не дают... Иран, КНДР, Куба, ну и "Верхняя Вольта с ракетами" ;-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 hours ago, Obam said:


Запрещена к распространению на "святой Руси" - скачать не дают... Иран, КНДР, Куба, ну и "Верхняя Вольта с ракетами" ;-)

И когда это мешало пытливым умам ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ценю ваш сарказм, но столь специфический софт брать с мутных "гадюшников" (тем более, что в последнее время рез-ты выдачи поисковиков как-то "не радуют") желания нет, а с официального - см. пост выше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 часов назад, Obam сказал:

Ценю ваш сарказм, но столь специфический софт брать с мутных "гадюшников" (тем более, что в последнее время рез-ты выдачи поисковиков как-то "не радуют") желания нет, а с официального - см. пост выше.

Всё прекрасно качается с официального сайта через Tor Browser. Вы его пробовали?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тор, за его неимением, не пробовал; ясное дело, "анонимайзиг" всяческий поможет ;-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...