是否有任何反编译器可以生成交互式伪代码?通过交互式,我的意思是您可以选择一个变量并重命名它。或者您可以选择一个函数调用并重命名该函数。或者您可以在反汇编中选择一条指令,它将带您到伪代码中的等效行。
我知道 IDA Pro 的 HexRays 插件可以做到这一点,但有没有其他替代品也具有这种交互功能?
我正在寻找一个交互式反编译器(意味着输出应该是类似 C 的伪代码)——而不是一个交互式反汇编器。
是否有任何反编译器可以生成交互式伪代码?通过交互式,我的意思是您可以选择一个变量并重命名它。或者您可以选择一个函数调用并重命名该函数。或者您可以在反汇编中选择一条指令,它将带您到伪代码中的等效行。
我知道 IDA Pro 的 HexRays 插件可以做到这一点,但有没有其他替代品也具有这种交互功能?
我正在寻找一个交互式反编译器(意味着输出应该是类似 C 的伪代码)——而不是一个交互式反汇编器。
简短回答:不,没有其他交互式反编译器,至少对于本机代码没有。
长答案:Hex-Rays 反编译器是基于交互性的想法创建的,而我所知道的所有其他本地代码反编译器(我不是在谈论 Java 或 .NET)都是作为批处理工具创建的。最接近半交互式反编译器的是Snowman,但不是真正的交互式(除非在使用 IDA 插件时选择要反编译的函数被认为是交互式的。)
在 Hopper 中有一个玩具“反编译器”(如果名称合适,因为它比其他任何东西都更像是伪 C 的翻译器)但既不是交互式的。
Boomerang、REC 和我所知道的所有其他废弃的反编译器项目,要么是作为命令行批处理工具创建的,要么是有一个 GUI 只是为了让您选择二进制文件。
所以,正如一开始所说:本地代码的唯一交互式反编译器是 Hex-Rays 反编译器。
PS:我不知道为什么人们不关注问题而不是提出他们最喜欢的工具......反汇编器不是交互式反编译器。
Plasma 项目似乎有一个交互式反编译器: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.