互联网时代,在各个领域进行逆向工程的原因有很多,逆向工程起源于商业或军事优势的硬件分析。然而,逆向工程过程本身并不涉及以某种方式创建副本或更改工件;它只是一种分析,以便从产品中推断设计特征,而对其原始生产中涉及的程序几乎没有或没有其他知识。在一些情况下,逆向工程过程的目标可以简单地是一个文档重构的遗留系统。即使逆向工程产品是竞争对手的产品,目标可能不是复制它们,而是进行竞争对手分析。
逆向工程也可用于创建可互操作的产品,尽管有一些狭隘的美国和欧盟立法,但为此目的使用特定逆向工程技术的合法性已在全球各地的法院上争论了20多年。软件逆向工程可以帮助提高对底层源代码的理解,以便维护和改进软件,可以提取相关信息以便做出软件开发的决策,代码的图形表示可以提供有关源代码的备用视图代码,可以帮助检测和修复软件错误或漏洞。
通常,随着某些软件的发展,其设计信息和改进通常会随着时间的推移而丢失,但这种丢失的信息通常可以通过逆向工程来恢复。此过程还有助于缩短理解源代码所需的时间,从而降低软件开发的总体成本。
逆向工程还可以帮助检测和消除使用更好的代码检测器写入软件的恶意代码。反转源代码可用于查找源代码的替代用途,例如检测源代码未被使用的未经授权的复制,或揭示竞争对手产品的构建方式。此过程通常用于“破解”软件和媒体以删除其副本保护,或创建(可能改进的)副本甚至是仿冒品,这通常是竞争对手的目标或黑客。恶意软件开发人员经常使用逆向工程技术来查找操作系统(OS)中的漏洞,以便构建可利用系统漏洞的计算机病毒,在密码分析中也使用逆向工程,以便在替代密码,对称密钥算法或公钥加密中发现漏洞。(欢迎转载分享)