我问自己使用逆向工程。我有兴趣学习它。但我不知道我是否可以/应该把它放在我的简历上。
我不希望我的新主管认为我是一个邪恶的黑客或其他东西。 :)
答案 0 :(得分:18)
逆向工程通常用于解密文件格式,以提高互操作性。例如,许多流行的商业Windows应用程序不能在Linux上运行,这需要对这些应用程序生成的文件进行逆向工程,以便它们可以在Linux中使用。一个很好的例子就是Gimp,OpenOffice,Inkscape等支持的各种格式。
逆向工程的另一个常见用途是解密协议。很好的例子包括许多非iTunes应用程序中的Samba,DAAP支持,Pidgin等跨平台IM客户端等。对于协议逆向工程,交易的常用工具包括{{3} }和Wireshark。
毫无疑问,逆向工程通常与软件破解有关,软件破解主要是理解程序的反汇编。我不能说我曾经需要来拆解一个程序,而不仅仅是出于纯粹的好奇心,或者让它做一些事情。逆向工程程序的一个优点是,要了解它,您需要学习汇编编程。然而,有一些合法的方法来磨练你的反汇编技能,特别是使用libpcap。重要的一点是,当您在应用程序中开发安全措施时,或者如果您从事该业务,您需要了解逆向工程师如何操作以保持领先一步。
恕我直言,逆向工程是一项非常强大和有用的技能。更不用说,它通常很有趣和令人上瘾。就像hmemcpy提到的那样,我不确定我会在我的简历中使用“逆向工程”这个术语,而只使用与之相关的技能/知识。答案 1 :(得分:8)
在我看来,反向工程技术可能有用的其中一个领域是反病毒行业。但是,我不会在我的简历上放置“逆向工程”,而是使用其他反汇编程序/调试程序(如IDA,SoftIce或OllyDbg)和其他相关技能,用汇编语言写下经验。
答案 2 :(得分:8)
逆向工程通常是你做的事情,因为你必须这样做,而不是因为你想要。例如,简单地对产品进行逆向工程存在法律问题!但是有必要的情况 - 例如供应商已经离开并且不再存在或不可联系的情况。一个很好的例子就是您输入问题的WMD编辑器。 SO团队/社区had to reverse engineer this from obfuscated source应用一些错误修复。
答案 3 :(得分:4)
我从事逆向工程项目,他们肯定与黑客攻击无关。我们拥有所有这些项目的源代码(合法地),但是对于其中一个项目,没有人真正知道代码在幕后做了什么,以及它如何与其他系统进行交互。这些信息早已丢失。在另一个项目中,我们有源代码和一些文档,但文档不是最新的,所以我们不得不对源代码进行反向工程以更新文档。
我不介意在我的简历上有这样的项目。事实上,我相信在这个过程中我学到了很多东西。
答案 4 :(得分:2)
只要文档丢失或从未存在过,就需要进行逆向工程。让源有所帮助,但你仍然需要对原始逻辑,流量控制和错误进行逆向工程。
答案 5 :(得分:1)
使用奇怪的硬件通常会迫使您进行逆向工程。例如,我曾经使用过旧的信号采集卡,表现得很奇怪;投入美丽的正弦波产生了非常残缺的数据。事实证明,每隔一个字节都是两个补码,而且每个其他字节都是补码 - 或者至少在解释时,数据变得非常漂亮。当然,这在任何地方都没有记录,并且当与其自己的专有软件一起使用时,该卡可以很好地工作。
答案 6 :(得分:1)
很常见(根据我的经验)遇到有缺陷的旧代码,由于需求变化而变得过时,或者两者兼而有之。通常情况下,文档不足,原始开发人员不再可用。逆向工程代码以了解其工作原理(有时候做出修复或替换决策)是一项重要技能。
如果您拥有源代码,那么进行小规模,精心策划,严格范围的清理通常是合理的。 (我大声暗示,这不能让宝贵的开发时间成为一个下沉洞!)
能够在测试平台中运行代码,以验证它是否符合预期,或者识别,记录,隔离和修复缺陷,这也非常有用。
安全地这样做需要仔细的工作。我强烈推荐Michael Feathers的书Working with Legacy Code,以便在测试此类代码时提供实用指导。
答案 7 :(得分:0)
RCE对于安全人员(研究,开发,IDS,IPS,AV等)来说非常有技巧,但它也证明了你对这个主题有深刻而低级的了解。
在使用第三方图书馆时,更轻松地找到方法。
如果你不在安全行业工作,如果你不擅长ASM,就不用费心去学习,一般来说这很难学。
<强>图书强>
Hacking the art of exploitation从安全的角度讨论这个问题。
您也可以阅读有关Ollydbg和IDA Pro的书籍