IDA可以拆卸组装。但是,读取带有字节移位等的大型汇编块是繁琐的工作。我宁愿读伪代码。

针对MIPS平台的这项工作是否有任何文档,教程或工具?你们在用什么方法?很抱歉,如果这个问题不合时宜,但是普通的Google搜索对于MIPS却收效甚微。

编辑:由于WebUI密码不起作用,我尝试反编译调制解调器固件映像并实际上寻找默认的telnet密码。我的ISP也不知道。

评论

好吧...只是由于NJML无法正常工作,所以对回旋镖的MIPS支持就出现了。。。

#1 楼

IDA的反编译器仅支持ARM和x86。话虽如此,您可以尝试以下几种方法:




REC-已经提到了这一点。最后我用了它,当您发出'help'命令时,它会出现段错误,因此是YMMV。可以大致了解代码的工作原理是可以的,但是据我的经验,它错过了重要的细节(例如,它显示了将数据写入未定义的指针)。工程平台,支持对MIPS 32位代码进行本机反编译。输出是交互式的,可以像Hexrays的一样进行重构/修改。

最终,学习阅读反汇编可能更好。我通常要做的一件事是手动将单个代码块转换为伪代码。在IDA中,您可以右键单击代码块,选择“组节点”,然后用所需的任何文本(例如,伪代码)替换该代码块中的反汇编。这使得分解和理解复杂功能变得更加容易。

评论


我尝试反转某些电缆调制解调器固件。这是一个很大的单一二进制文件(eCos)。我在REC中没有看到任何选项来指定原始二进制文件的加载地址。可重新定向的反编译器似乎仅支持ELF格式。我会尝试使用Group Nodes的建议。希望我能做到。谢谢。

–user3155036
2014年1月14日17:59

实际上是ARM和x86。

–伊戈尔·斯科钦斯基♦
2014年1月14日19:58

糟糕,感谢Igor,我编辑了该帖子。 @ user3155036,您可以使用objcopy将代码包装在一个简单的ELF标头中(请参见此处的示例:nycresistor.com/2012/08/21/ghosts-in-the-rom),并查看可重定位反编译器得到的距离。也是一个快速提示,因为eCos是开源的,所以我过去在为eCos库构建IDA FLIRT签名方面取得了一些成功。当然并没有抓住一切,但这是很大的帮助。

–devttys0
2014年1月14日20:05



我添加了ELF标头,但由于10 MB的大小限制,无法将其发布到可重定向的反编译器中。但是我可以用RECStudio反编译ELF文件(GUI比CLI稳定)。结果是:同样,不可读的代码可能会短一些。

–user3155036
2014年1月15日在17:42

在这里吹我自己的角。如果您愿意提供MIPS二进制文件,则可以使用它来改善我的开源Decompiler项目(sourceforge.net/projects/decompiler)的MIPS支持。

– JohnKällén
15年7月8日在15:28

#2 楼

我知道的唯一MIPS反编译器是REC。
也有这个,但是我自己没有尝试过。

#3 楼

尝试从项目页面ElectroPaint Automatic No-source Object reaSsembler (a MIPS to C decompiler) This is a very dumb MIPS to C static translator. Consider it a proof of concept, as it has successfully worked使用https://github.com/drvink/epanos

反编译器取决于IDA pro

最好的方法是使用IDA PRO和您的大脑
/>