用途:对 MCU/IoT 固件及商业 RTOS 固件做静态结构分析,先判定该 RTOS 的运行与注册模型,再分析任务与内核对象。资料强调:注册模型决定可见性,某函数“无直接交叉引用”在不同 RTOS 上含义不同(linker 注册、装载时符号解析、用户态 server 或真的未被引用)。
主要能力:识别内核(启动代码链、特征串/符号、ThreadX 魔数 ID 等);定位任务表与 TCB(FreeRTOS 的 pxReadyTasksLists/pxCurrentTCB、ThreadX 的 _tx_thread_created_list、Zephyr 的 _kernel/ready_q、RT-Thread 优先级位图、VxWorks WIND_TCB、QNX procnto、INTEGRITY 分区与 ARINC 653 进程);识别任务栈;从内核 API 调用点回溯队列/信号量/互斥/定时器等对象;按任务拆分反编译。
使用方式:以纯静态分析为主,工具为 Ghidra(需 JDK 21,./ghidraRun 或 ./support/analyzeHeadless)、binwalk、python3;先做镜像提取与格式识别,再导入 Ghidra,用 Data Type Manager 定义 TCB/内核对象结构体以改善反编译。
适用场景:裸镜像无符号固件、商业 RTOS 固件(车机、航电、工控)、驱动/服务不以内核模块形式存在或注册关系不在源码中成立的情形。
限制:不适用于裸机固件、Linux/Windows 内核、仅需动态观察行为的场景;商业 RTOS 结构多无公开定义,字段偏移须现场反推,旧资料偏移不可套用;stripped 固件可能无任务名。具体价格与收费暂未提供。