反編譯器(英語:Decompiler)的功能與編譯器相反。顧名思義,就是將已編譯好的汇编语言還原到未編譯的狀態,也就是找出程序的源代码。一種反编译器通常只能反編譯1~2種程式語言,由于编译过程是单向的,反编译器通常无法完美重现原始源代码。它们通常生成混淆且难读的代码。[1]

反编译是利用反编译器将可执行代码转换为高级、人类可读格式的过程。该过程通常用于逆向工程,例如恢复丢失的源代码。反编译任务非常具有挑战性,因为在编译过程中会丢失变量名、注释和代码结构等关键信息。包含详细元数据的可执行文件,如Java.NET所用的,更容易逆向工程,因为它们通常保留类结构、方法签名和调试信息。其他没有这些信息的可执行文件更难转化为源代码。

一些软件开发者可能会对可执行程序的部分内容进行混淆或加密,使得反编译后的代码更难理解。这些技术常被用来阻止逆向工程。

參見

编辑

参考文献

编辑
  1. ^ Mike Van Emmerik. Why Decompilation. Program-transformation.org. 2005-04-29 [2010-09-15]. (原始内容存档于2010-09-22) (美国英语). 


📚 Artikel Terkait di Wikipedia

NetBeans

to extend IDE functionality NetbeansIDA-Interactive DisassemblerToDecompiler(页面存档备份,存于互联网档案馆) Netbeans module with Interactive Disassembler Netbeans

源代码

in C: A Tutorial (PDF). (原始内容 (PDF)存档于2015-02-23).  (VEW04) "Using a Decompiler for Real-World Source Recovery", M. Van Emmerik and T. Waddington, the

反汇编器

Boomerang(页面存档备份,存于互联网档案馆) A general, open source, retargetable decompiler of machine code programs 开放目录项目中的“Disassemblers” Online Disassembler(页面存档备份,存于互联网档案馆)