假设对常见CPU架构上的汇编有一个像样的理解(例如: x86),那么如何才能探索一条进入逆向工程领域的潜在途径(职业、乐趣和利润等)?教育指南太少了,所以很难理解它今天的潜在用途(例如:搜索缓冲区溢出漏洞是否仍然很常见,或者堆栈监控程序是否使其变得令人生厌?)。我不是在寻找任何一步一步的程序,只是一些相关的信息,如如何有效地找到一个程序的特定领域的提示。这个行业的基本情况。以及它目前的用途。
因此,简单地说,逆向工程目前的用途是什么?如何才能找到一些关于如何学习交易的基本信息(同样,它不一定是循序渐进的,只要能通过线索的任何东西都会有帮助)。
发布于 2010-05-06 20:32:13
据我所知,正如前面提到的,主要是与恶意软件相关的。为扫描仪公司工作的研究人员的主要任务之一是在实验室或虚拟环境中采集样本并进行调试。
沿着同样的路线,有很多与安全相关的领域使用逆向工程/反汇编。计算机取证是一个你可能想要调查的领域。被没收的计算机可能包含用于各种活动(命令和控制僵尸网络、DoS攻击程序等)的命令和控制程序(但没有来源)。通常,通过对保护程序进行逆向工程来规避受保护的数据方案要容易得多,而不是找出密码或密钥。
硬件和软件中的DRM/安全保护都是一个很大的逆向工程领域。请注意,这可能是问题(和法律)的任何“一方”。考虑DVD复制程序,解除保护,在其他设备上播放iTunes音乐的能力,在Wii上运行自制程序的能力,并行化PS3网格,解锁iPhone,等等。
遗留程序转换在许多领域都是一个巨大的机会,特别是在政府、金融、制造业等领域。有一些任务关键型程序在古老的大型机或迷你机上运行了30年,没有人拥有源代码。团队必须对程序进行逆向工程,以将其转换为更新的东西。
关于学习Win32教程的其他建议也很棒。此外,可悲的是,一些最好的出版作品将是关于破解(游戏)的。搜索一下,有几个教程展示了基础知识。我上过的一门课使用了Peter Szor的“计算机病毒研究和防御的艺术”一书,但它更多地讲述了恶意软件的想法,而不是确切的反汇编部分。
根据你选择的路线,你将需要其他方面的背景知识,但了解汇编将是你最关键的技能。不仅仅是从“我知道代码主要做什么”的角度--你应该能够从头开始写东西,准确地理解给定的一小段代码的作用,并理解同样的代码可以用的其他方式。汇编(编码)包括找出一个问题的解决方案并对其进行编码。拆卸涉及到找出许多不同解决方案中的哪一个最初用于解决问题-要困难得多;)
发布于 2010-05-03 14:41:34
我读到过在安全领域使用反向工程来理解恶意软件和特洛伊木马程序的内部工作原理(对病毒不太确定)。有关安全领域中使用的反向工程的文章,请查看www.openrce.org。
另外,逆向工程并不总是涉及反汇编。对于用Java或C#等语言编写的应用程序,反编译器通常比反汇编程序产生更多关于代码的信息。
因为我个人对Win32逆向工程感兴趣,所以我只能解释我对这个特定操作系统的看法。那么在Linux逆向工程方面我就帮不了你了:(
我发现IDA Pro 4.9的免费版本是一个很好的反汇编程序。它可以检测系统库,这样您就不会在错误的地方浪费时间:)再加上像OllyDbg这样的调试器,您就可以处理大多数Win32的反向项目了。
如果你沿着Win32的路线走下去,你最终将需要理解PE的结构,也许解包和其他东西,但现在的关键是理解x86组装。如果您用C等语言编写过Win32应用程序接口代码,则Win32应用程序的反汇编代码相对容易理解。
要更好地理解32位汇编,请反汇编您自己的应用程序并查看源代码与反汇编输出的对应关系,或者了解如何通过Iczelion's Win32 Assembly tutorials使用汇编语言编写Win32应用程序接口应用程序。
发布于 2010-05-11 20:10:02
这位FFMpeg的当前维护者从反向工程视频编解码器开始,这样他就可以在Linux上运行视频了。他的blog非常有趣,他有一个recent post在谈论一本书,他希望他开始的时候有一本书。
https://stackoverflow.com/questions/2758542
复制相似问题