一个反编译器的输入是一个可执行文件,并试图创造一个高层次,即做同样的事情编译,甚至可能维护的源文件。
因此,它是一个编译器,它接受一个源文件,并使得可执行的相反。然而,一般的反编译并不试图扭转反编译的每一个动作,而是将输入程序反复直到结果是高水平的源代码。因此,它不会重新创建原始源文件;可能没什么喜欢它。
它并不重要,如果可执行文件具有符号或没有,或从任何特定语言编译。 (不过,声明的语言,如ML不考虑。)
这样做的目的是创建一个可移植的反编译器(即一个可以反编译不同类型的机器代码文件微薄的努力,比如X86-窗口,SPARC-Solaris中,等)。它也意欲是高度模块化,从而使反编译的不同部分可以被替换为实验的模块。它的目的是要最终成为互动,一拉IDA Pro的,因为有些东西(不仅仅是变量名和评论,虽然这些显然是非常重要的)需要专家介入。是否交互所属的反编译或在一个单独的工具仍不清楚。
通过将各指令的语义,并利用强大的技术,例如静态单赋值数据流分析,飞镖应(主要)独立发生所使用的编译器的确切行为。优化应不影响结果。因此,我们的目标是一般反编译。
局限性:
·在你想尝试回旋镖,因为它是一个反编译器(而不是用它进行试验,或改进它)的情况下,应注意其严格的限制。截至2004年初,回旋镖只会反编译X86(的Linux / X86或Windows PE),SPARC(Solaris或Linux的推测/ SPARC),或Power PC(Linux的/ PPC或Mac OS / X)计划。特别要注意的是它不会反编译DOS或NE(Windows 3.1的)程序。添加另一个处理器是一个大的(数月)的事业。
·它只会生成C,而不是C ++。它将反编译的C ++,当然方案,(以及任何种类的程序,包括汇编)。您可以手动编辑一些C ++程序转化为可用的C ++源代码。对于MSVC编译的程序,目前你必须spoonfeed的反编译器,并告诉它有一个寄存器参数(thiscall调用约定)。开关来处理这是复杂的;看到使用-sf开关。
按类别搜索
热门软件
Cub Linux 11 Apr 16
Tor Browser 20 Jan 18
Lubuntu 16 Aug 18
Puppy Linux "Slacko" 14 Jul 16
Porteus Xfce 12 Jan 17
Return To Castle Wolfenstein Coop 20 Feb 15
K3b 17 Aug 18
评论没有发现