在开发商用软件时,软件的源代码是非常重要的资产。如果源代码被其他公司窃取,他们就能轻松地开发出类似的软件。因此,一般只会发布经过编译的机器语言的可执行文件,
对于竞争对手而言,软件的实现方法是无论如何都想得到的信息。因此,就会想方设法从机器语言的可执行文件中还原出源代码和设计图。这一方式被称为逆向工程。
如果是硬件,可以进行分解就可以比较轻松确认到内部结构,但是要完美提取软件中的源代码是很困难的。
如果是开发企业自己的产品,如果丢失源代码,必须尽可能地从可执行文件中恢复源代码。这就需要将机器语言转换为人类能够阅读的形式。
反汇编就是进行这类转换的工具。这类工具只能将机器语言转换会汇编语言。
反编译器是可以转换出高级语言的源代码工具,但是在大多数编程语言中实现起来都是极为困难的。