我有一个ELF文件,它是导航模块(我的BMW idrive CCC)的部分固件,我需要反编译elf文件。

我尝试了Reko Decompiler,它说它不支持IDA上的SH4和Snowman插件,但是看起来它没有检测到SH4体系结构,因为它在C代码中带来了一些push和pop指令,除了实际上,它被认为是反编译器的作弊!SH4体系结构具有寄存器块,在调用例程时不需要推入和弹出操作,实际上它没有这种东西。

在下图中,浮动右边的窗口显示正确的汇编代码,未在我的ELF文件中进行配置。在中心,但是您看到雪人从ELF文件派生了一些错误的程序集,完全不同!比较正确的反编译器。


因此,反编译器必须支持体系结构。 />

评论

编写反编译器并不容易。很高兴找到用于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中找到。

#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