mnaberez/k0dasm

GitHub: mnaberez/k0dasm

针对瑞萨 NEC 78K0 系列 8 位微控制器的 Python 固件反汇编器,支持完美重汇编和自动符号生成。

Stars: 20 | Forks: 6

# k0dasm ## 概述 k0dasm 是一个针对瑞萨 (NEC) 78K0 二进制文件的反汇编器,其生成的输出与 [as78k0](http://shop-pdp.net/ashtml/as78k0.htm) 汇编器兼容。它可用于对 78K0 系列中许多 8 位微控制器的固件进行反汇编。请注意,瑞萨还有几个名称相似的微控制器系列,例如 78K0S 和 78K0R,它们使用不兼容的指令集。此反汇编器不支持那些其他系列。 k0dasm 最初是为 NEC µPD78F0831Y([µPD78F0833Y](https://web.archive.org/web/20180328161019if_/https://www.renesas.com/en-us/doc/DocumentServer/021/U13892EJ2V0UM00.pdf) 的一个未记录子集)的固件反汇编而开发的,它内置了一些假设(例如向量地址),如果要对其他 MCU 的代码进行反汇编,则需要修改这些假设。k0dasm 也专为单一地址空间而设计,因为其目标 MCU 只有一个地址空间。支持多个 flash 存储体将需要进行大量未计划中的更改,但将 k0dasm 适配到其他具有扁平内存映射的 78K0 MCU 应该是简单的。 ## 功能 - 完全一致的重汇编。使用 [as78k0](http://shop-pdp.net/ashtml/as78k0.htm),k0dasm 输出的汇编语言将被汇编为与原始二进制文件逐位完全相同的副本。这已经通过几个真实的固件二进制文件进行了测试。 - 代码/数据分离。从内存底部的向量开始,k0dasm 使用递归遍历反汇编将代码与数据分离。这自动化了大部分反汇编过程,但间接跳转 (`br ax`) 仍需手动解析。 - 符号生成。k0dasm 尽可能避免在输出中写入硬编码地址。它会自动为硬件寄存器和向量、其他使用的内存位置添加符号,并为分支和子程序添加标签。 ## 安装 k0dasm 使用 Python 编写,需要 Python 3.8 或更高版本。可以在 Python Package Index (PyPI) 上[获取](https://pypi.org/project/k0dasm/)安装包。您可以从那里下载它们,或者使用 `pip` 来安装 `k0dasm`: ``` $ pip install k0dasm ``` ## 用法 k0dasm 接受纯二进制文件作为输入: ``` $ k0dasm input.bin > output.asm ``` 该文件被假定为一个应与内存底部对齐的 ROM 映像。例如,如果给定一个 32K 的文件,k0dasm 将假定该映像位于 0x0000-0x7FFF。加载映像后,反汇编器会读取向量并从其目标开始跟踪指令。 对于静态分析无法满足需求的情况,提供了一个配套程序 [k0emu](https://github.com/mnaberez/k0emu),可在模拟环境下运行 78K0 二进制文件。k0dasm 和 k0emu 均为 [vwradio](https://github.com/mnaberez/vwradio) 项目开发。 ## 作者 [Mike Naberezny](https://github.com/mnaberez)
标签:78K0, 8位单片机, as78k0, MCU, NEC, Python, Renesas, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 代码分析, 凭证管理, 反汇编工具, 固件分析, 固件解包, 固件逆向, 嵌入式系统, 微控制器, 快速连接, 指令集, 无后门, 汇编语言, 物联网安全, 硬件安全, 硬件逆向, 符号生成, 逆向工具, 逆向工程, 静态分析