逆向工程在哪些领域被应用?

19

我在思考反向工程在哪些领域被使用,我对学习它很感兴趣,但我不知道是否应该将其放在我的简历上。

我不想让我的新主管认为我是一个邪恶的黑客之类的人。 :)

  • 所以这值得吗?
  • 我应该学习它还是把精力放在其他地方?
  • 是否有好的书籍或教程可供参考? :)
8个回答

18

反向工程通常用于解密文件格式以提高互操作性。例如,许多流行的商业Windows应用程序无法在Linux上运行,这就需要对这些应用程序生成的文件进行反向工程,以便在Linux中使用。Gimp、OpenOffice、Inkscape等支持的各种格式就是一个很好的例子。

反向工程的另一个常见用途是解密协议。好的例子包括Samba、许多非iTunes应用程序中的DAAP支持、跨平台IM客户端如Pidgin等。对于协议反向工程,常见的工具包括Wiresharklibpcap

毫无疑问,逆向工程通常与软件破解相关,主要是理解程序反汇编。我不能说我曾经需要反汇编程序,除了出于纯好奇心或使其做一些它本来不会做的事情。逆向工程程序的一个好处是,为了理解它,你将需要学习汇编语言编程。然而,有合法的方法来磨练你的反汇编技能,特别是使用Crackmes。一个重要的观点是,在开发应用程序的安全措施时,或者如果你从事这个业务,你需要知道逆向工程师的操作方式,以试图保持领先一步。
在我看来,逆向工程是一项非常强大和有用的技能。更不用说,它通常很有趣且让人上瘾。就像hmemcpy提到的那样,我不确定我会在我的简历上使用"逆向工程"这个词,只是与之相关的技能/知识。

8

在我看来,反向工程技能可能有用的领域之一是反病毒行业。但是,我不会在我的简历上写“反向工程”,而是会写下汇编语言的经验,使用各种反汇编器/调试器(如IDA、SoftIce或OllyDbg)和其他相关技能。


是的,逆向工程可以用于搜索代码中的漏洞(低级或架构错误和“未记录的功能”)。这个项目就是关于这个问题的(但是使用俄语):http://demono.ru - Egg Head

8

4
我曾经参与过反向工程项目,但这与黑客无关。我们合法地拥有所有这类项目的源代码,但在其中一个项目中,没有人确切知道代码在幕后做了什么,以及它如何与其他系统交互。那些信息早已丢失。在另一个项目中,我们拥有源代码和一些文档,但文档已经不再更新,因此我们必须反向工程源代码来更新文档。
我不介意将这样的项目放在我的简历上。事实上,在这个过程中,我相信我学到了很多东西。

2

当文档丢失或从未存在时,需要进行逆向工程。有源代码是有帮助的,但您仍然需要对原始逻辑、流程控制和错误进行逆向工程。


1

与奇怪的硬件打交道通常会迫使你进行逆向工程。例如,我曾经使用一张旧的信号采集卡,它的行为很奇怪;输入美丽的正弦波产生了非常残缺的数据。后来发现,每隔一个字节是二进制补码,每隔一个是反码 - 或者至少在这种方式下解释时,数据变得相当美丽。当然,这并没有在任何地方记录下来,而且当使用其自己的专有软件时,该卡可以完美地工作。


1

在我的经验中,遇到有缺陷的旧代码、由于需求变化而过时的代码或两者兼而有之是非常普遍的。通常情况下,文档不足,原始开发人员也不再可用。逆向工程该代码以了解其工作原理(有时还要做出修复或替换决策)是一项重要的技能。

如果您拥有源代码,通常可以进行少量的小型、精心计划、严格范围的清理。(我在暗示这不能成为有价值的开发人员时间的汇漏!)

在测试平台上运行代码也非常有帮助,无论是验证预期功能还是识别、记录、隔离和修复缺陷。

这样做需要谨慎地工作。我强烈推荐迈克尔·菲瑟斯的书籍与遗留代码共事,因为它提供了实用的指导,帮助您将这样的代码置于测试之下。


0

RCE 是安全人员(研究、利用、IDS、IPS、AV等)的重要技能,同时也证明了你对该主题有深入和低级别的理解。

在使用第三方库时,掌握 RCE 技能可以更轻松地找到解决方案。

如果您不在安全行业工作,如果您不擅长 ASM,请不要费心学习它,通常很难学习。

书籍

Hacking the art of exploitation 从安全角度讨论了该主题。

此外,您可能还想阅读关于 Ollydbg 和 IDA Pro 的书籍。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接