是否有任何反编译器生成交互式的伪代码?通过交互,我的意思是您可以选择一个变量并将其重命名。或者,您可以选择一个函数调用并重命名该函数。或者,您也可以在反汇编中选择一条指令,它将带您到伪代码中的等效行。还具有这种交互式功能?

#1 楼

简短答案:不,没有其他交互式反编译器,至少对于本机代码而言不是。

长答案:Hex-Rays反编译器是基于交互性的思想而创建的,而其他所有反编译器都是本机代码我知道(我不是在谈论Java或.NET)是作为批处理工具创建的。最接近半互动式反编译器的是Snowman,但并不是真正的互动式(除非选择使用IDA插件时要反编译的功能视为互动性。)

有一个玩具“反编译器”(如果名称合适,因为它在Hopper中更像是伪C的翻译器),但两者都不是交互式的。

因此,正如开头所说:本地代码的唯一交互式反编译器是Hex-Rays。

br />
PS:我不知道为什么人们不关注问题而不是提出自己喜欢的工具...反汇编程序不是交互式反编译器。

#2 楼

等离子项目似乎具有交互式反编译器:https://github.com/joelpx/plasma

来自文档:

$ plasma -i tests/server.bin
>> v main # or v 0xFFFFFF (replace 0xFFFFFF with the address of the function)
# You are now in visual mode. Press P to define the function. Then press TAB to decompile the function into pseudocode.
# You can hover over a variable using your arrows keys and press R to rename a variable. You can press X to see all xrefs to the variable.


#3 楼

Radare2似乎满足您的要求。这是一个命令行程序,没有可用的GUI(但是有可视模式)。这需要一点时间来适应,我建议从radare2书开始。

评论


如果必须使用UI,则可以将Bokken前端用于雷达:bokken.re/index.html

– Necrolis
16年7月19日在23:38

@Necrolis我以为我记得有一个radare2的GUI,但是我没有在Google搜索中看到它。谢谢!但是,一般而言,CLI当然会更强大。

– PlasmaPower
16年7月20日在0:51

#4 楼

IDA的另一个有趣替代方案是Medusa,它并不完全完整,但可以满足您的需求。在这种情况下,您可能要看雪人。 x64dbg有一个包装雪人的插件,它可以满足您的需求。您也可以尝试REC,尽管我从来没有弄过它。

#5 楼

此列表中有一些有趣的反编译器:http://www.capstone-engine.org/showcase.html

#6 楼

我去过那里,已经完成了任务。
使用vivisect。贡献它!我确实有二进制忍者(注册了Beta测试人员),我不得不说:它的功能远不及vivisect。仅此而已。
Vivisect的目标是成为IDA的替代者。而且该死的接近。但是,仍有许多工作要做。