是否可以反汇编十六进制stm8固件?
这个 IDA Pro 6.6 插件似乎可以工作。 https://github.com/derbroti/Stm8Ida
假设您使用的是 Windows:
打开 VS2013 解决方案并使用 IDA 6.6 SDK 标头和库进行构建。您需要将 idasdk66\include 和 idasdk66\module 添加到包含列表中,并将 idasdk66\lib\x86_win_vc_32 添加到项目文件中的库位置列表中。
然后将输出 st8.w32 复制到:C:\Program Files (x86)\IDA 6.6\procs
您的文件由两部分组成:8000-87FFh 和 8800-BFFFh。显然第一个是引导加载程序,第二个是主程序。 您可以单独拆卸它们。
我已尝试执行以下操作:
naken_util.exe -disasm -stm8 ./fw.hex > ./fw.asm
启动文件以公共IRQ表开始。主文件将所有 IRQ 指定为 886Bh,其中似乎开始了
main()
功能,第一个指令是 asm("sim")
禁用所有 IRQ。
此外,您可以使用一些更复杂的程序,例如IDA,并根据需要将它们反编译为源代码。
gmtdisas 是一个可以用来反汇编二进制文件的工具...
https://github.com/volbus/gmtdisas
它的依赖项很少,可以轻松地为 Windows 和 Linux 编译。