我尝试了Reko Decompiler,它说它不支持IDA上的SH4和Snowman插件,但是看起来它没有检测到SH4体系结构,因为它在C代码中带来了一些push和pop指令,除了实际上,它被认为是反编译器的作弊!SH4体系结构具有寄存器块,在调用例程时不需要推入和弹出操作,实际上它没有这种东西。
在下图中,浮动右边的窗口显示正确的汇编代码,未在我的ELF文件中进行配置。在中心,但是您看到雪人从ELF文件派生了一些错误的程序集,完全不同!比较正确的反编译器。
因此,反编译器必须支持体系结构。 />
#1 楼
从9.1版本开始,Ghidra支持SH4。#2 楼
Radare2是我用于几乎所有东西的最完善的反编译器之一。非常灵活,具有基于浏览器的GUI(您必须安装额外的:(),支持python脚本编写,并且几乎可以反编译所有内容!评论
它实际上是反编译SH还是反汇编它?如果有,请发布一些屏幕截图。
–伊戈尔·斯科钦斯基♦
17 Mar 14 '17 at 10:25
如果它是.elf,则不会有任何问题。我还没有尝试过基于SH4的二进制文件,但是该软件包有一个非官方的软件包。debian.org/ sid / sh4 / radare2 / download
–克里斯·特西亚库拉斯(Chris Tsiakoulas)
17 Mar 14 '13:11
看起来就像是为sh4编译的r2。
–伊戈尔·斯科钦斯基♦
17 Mar 14 '13 at 14:14
我在旅途中,我没有仔细检查...😐但是尝试一下...我曾经用电子烟将带有固件的.bin进行反编译,却不了解其微控制器。 Radare2非常适合多种硬件体系结构。
–克里斯·特西亚库拉斯(Chris Tsiakoulas)
17 Mar 14 '17 at 13:17
@ChrisTsiakoulas它不支持SH4,请参见此处的受支持体系结构:radare.org/r/cmp.html
–伊曼
17年4月6日在15:27
评论
编写反编译器并不容易。很高兴找到用于SH的反编译器,更不用说“可靠”的了。顺便说一句,什么是“ ELF pe”?您是在寻找将CPU指令转换为汇编语言的工具(反汇编程序)还是在重构可执行二进制文件的源代码的工具(反编译器)?
@SYS_V IDA反汇编了我的elf文件,但是我需要它的C源代码,它已经用C编写,我确定是因为我看到了函数名strcmp,....,我需要一个C反编译器
你好@Zich; reko反编译器维护者在这里。如果您想在reko中请求SH4支持,只需在此处添加一个问题(github.com/uxmal/reko/issues)。我花了大约2周的时间才能完成对Reko中新架构的基本支持。如果您可以提供该体系结构的示例ELF文件,则会有所帮助。
好吧,我还是继续对SH4实施了部分支持:)如果您想对其进行测试,可以在Reko中找到。