Реверсим в Ghidra SRE
Ghidra SRE используется в качестве основной платформы реверс-инжиниринга. Все представленные на сайте инструкции и инструменты рассчитаны на работу с Ghidra.
Эта инструкция поможет всего за несколько шагов погрузиться в мир реверс-инжиниринга.
Официальная версия Ghidra не умеет корректно работать с far-pointers. Вы должны использовать исправленную версию Ghidra при работе с прошивками E-GOLD.
Что сделать перед началом
-
Установите исправленную версию Ghidra.
-
Установите поддержку C166 в Ghidra. Сделать это можно в
File -> Install Extensions -
Получите fullflash с телефона.
-
Снимите дампы RAM и SRAM с вашего телефона.
Шаг 1: Узнайте базу загрузки вашего fullfhash
Сделать это можно используя Smelter.
Details

Шаг 2: Установите наши плагины для Ghidra
Details
- Скачайте: ghidra_scripts.zip или клонируйте репозиторий
- Откройте
Window -> Script Manager - Нажмите на "Manage Script Directories"
- Добавьте путь к распакованной папке
ghidra_scripts.
Шаг 3: Загрузите ваш fullflash.bin в Ghidra
Details


-
Запустите дизассемблер и выберите
File -> Import File -
Выберите файл
fullflash.bin -
Настройте параметры импорта:
- Format:
Raw Binary - Language:
Infineon C167CR TASKING Classic large - Options → Block Name:
FULLFLASH - Options → Base Address:
200000(сюда тот адрес, что указан в Smelter)
- Format:
-
Щёлкните по
fullflash.binв списке проекта. -
Ghidra предложит автоматический анализ, нужно отказаться (нажмите No).
Шаг 4: Правка атрибутов региона FULLFLASH
Перейдите в Window -> Memory Map и выставьте атрибуты для блока "FULLFLASH":
R W X Volatile
[x] [ ] [x] [ ]
Очень важно снять галочку W, так как это напрямую влияет на декомпиляцию.
Шаг 5: Удаляем лишние memory regions
- Перейдите в
Window -> Memory Map - Удаляем XRAM, CAN, IRAM
Остальные не трогаем.
Шаг 6: Настройка параметров авто-анализа
-
Выберите
Analysis -> Auto Analyse -
Измените параметры анализа:
Отключить:
-
Embedded media -
Non-returning functions - discovered(иначе дизассемблер может преждевременно останавливаться внутри функции) -
Demangler GNU
Включить:
-
Scalar operand references -
Shared return callsс опцией[x] Allow conditional jumps
-
-
Нажмите "APPLY", но НЕ НАЖИМАЙТЕ "ANALYZE"!!!
-
Закройте окно анализа.
Шаг 7: Импортируем ранее сохранённую RAM
Пример для M55:
-
File -> Add to Program -
Выберите файл, например:
M55v91_RAM.bin -
Укажите параметры:
- Block Name:
RAM - Base Addr:
0x000000 [x]Overlay
Нажмите "OK".
- Block Name:
-
Перейдите в
Window -> Memory Mapи задайте атрибуты для блока "RAM":R W X Volatile[x] [x] [x] [ ]
Шаг 8: Найди любой код
Обычно достаточно перейти к 0x0 или 0x800000 (в зависимости от прошивке), затем нажать D (декомпиляция).
Шаг 9: Авто-анализ прошивки
Полный анализ
- Откройте
Analysis -> Auto Analyse 'fullflash.bin' - Убедитесь, что параметры совпадают с указанными в Шаг 3
- Нажмите ANALYSE
Это займёт 10-30 минут. Процесс долгий — наберитесь терпения.
Поздравляю, вы справились! ✨
Ждём ваших патчей в базе патчей patches.kibab.com :)