diff --git a/docs/fm100b-firmware-re.md b/docs/fm100b-firmware-re.md index b0c9113..eec6f2d 100644 --- a/docs/fm100b-firmware-re.md +++ b/docs/fm100b-firmware-re.md @@ -105,6 +105,23 @@ Bootloader | Application | RF Firmware | NET info Вывод: модуль — универсальный Beken-378x DMR/intercom SoC, используемый разными брендами (Radtel/Kirisun/iRadio). Многое из этого можно дёргать по 0x68 через мост (осторожно — только Query/Read вслепую). +## Достоверность образов и версии +- Оба образа (.13 2025-04, .32 2026-01) — plaintext, надёжны (в обоих `beken378`/`EasyFlash`/партиции/ + `check failed`). Встречаются одиночные не-ASCII байты в строках (в разных местах у .13 и .32) — + косметика/артефакт дампа, на структуру выводов не влияет. +- Поблочный diff .13↔.32: **91% блоков различаются** — крупный рефакторинг прошивки за 9 месяцев + (не мелкий патч). Идентичны лишь ~32 блока 4КБ. + +## Граница статического реверса (что БЕЗ дампа/живой рации недостижимо) +Достигнуто статикой: чип (Beken 378x), архитектура, разделы, API (172 cmd), «вокодер»=WebRTC, +протокол калибровки 0x68 (реверснут, работает). НЕ достаётся из имеющихся файлов: +- **AMBE/DMR-baseband** — в разделе **RF Firmware**, которого у нас НЕТ (нужен дамп flash модуля). +- **Ключи/значения EasyFlash NV** — в разделе NET info (нужен дамп) либо глубокий Thumb-2 disasm + ef_default_env (тяжело, без символов). +- **База загрузки** ≈0x0360_0000 (по векторам), но строки — PC-relative, точные xref требуют disasm. +Вывод: следующий разблокирующий шаг — **дамп flash модуля**, а это ЖИВАЯ операция (загрузчик Beken/ +download-режим) при владельце, с риском. Пока владелец недоступен — статика исчерпана по безопасному ROI. + ## Реальные следующие шаги (реверс+правка+тест) 1. **API-поверхность:** извлечь полный список ATC_*/SP*-команд (это протокол 0x68 между AT32 и модулем) — карта того, чем вообще можно управлять. Уже частично в docs/fm100b-commands.md.