考虑进入逆向工程/反汇编

时间:2010-05-03 13:59:34

标签: reverse-engineering

假设对常见CPU架构(例如:x86)上的汇编有一个很好的理解,那么如何才能探索逆向工程领域的潜在路径(职业,乐趣和利润等)?那里的教育指南很少,所以很难理解今天它有什么潜在的用途(例如:正在寻找仍然常见的缓冲区溢出漏洞,或者堆栈监控程序是否使这一点成为现实?)。我不是在寻找任何一步一步的程序,只是一些相关的信息,如有关如何有效地找到程序的特定区域的提示。交易中的基本内容。以及今天它目前使用的内容。

那么回顾一下,今天逆向工程产量的当前用途是什么?如何才能找到一些关于如何学习交易的基本信息(同样,它不必一步一步,只需通过线索就可以提供任何帮助)。

6 个答案:

答案 0 :(得分:14)

如前所述,我所知道的主要问题与恶意软件有关。为扫描仪公司工作的研究人员的主要任务之一是在实验室或虚拟环境中采集样本并对其进行调试。

同样,有许多安全相关领域使用逆向工程/反汇编。计算机取证是您可能想要研究的领域。被没收的计算机可能包含各种活动(命令和控制僵尸网络,DoS攻击程序等)的命令和控制程序(但没有源代码)。通过对保护而不是计算密码或密钥的程序进行逆向工程来规避受保护的数据方案通常要容易得多。

硬件和软件中的DRM /安全保护是一个很大的逆向工程领域。请注意,这可能是问题的“侧面”(和法律)。考虑DVD复制程序,保护删除,在其他设备上播放iTunes音乐的能力,在Wii上运行自制程序的能力,并行化PS3网格,解锁iPhone等等。显然,还有许多非法律选项(反向)设计老虎机计时器,ATM机认证等)。

传统的程序转换在许多领域都是一个巨大的机会,特别是政府,金融,制造等。有一个关键任务计划已经在古老的大型机或迷你上运行了30年,没有任何人有源代码。团队必须对程序进行逆向工程,以将其转换为更新的程序。

关于学习Win32教程的其他建议很棒。另外,遗憾的是,一些最好的出版作品将是破解(游戏)。搜索并在那里有一些教程,显示基础知识。我上过的课程使用了Peter Szor撰写的“计算机病毒研究和防御的艺术”一书,但它对恶意软件的想法更加沉重,而不是精确的反汇编部分。

根据您选择的路线,您将需要其他方面的背景,但了解装配将是您最关键的技能。不仅仅是从“我理解代码主要做什么”的立场 - 您应该能够从头开始编写内容并准确理解代码中的代码所做的事情,并了解编写相同代码的其他方法。汇编(编码)涉及找出问题的一个解决方案并对其进行编码。反汇编包括弄清楚最初使用的许多不同解决方案中的哪一个来解决问题 - 更难了;)

答案 1 :(得分:5)

我读过在安全领域使用逆向工程来理解恶意软件和木马的内部工作(对病毒不太确定)。有关安全领域中使用的逆向工程的文章,请查看www.openrce.org

逆向工程也并不总是涉及拆卸。对于用Java或C#等语言编写的应用程序,反编译器通常会产生有关代码的更多信息,而不是反汇编程序。

由于我个人对Win32逆向工程的兴趣,我只能解释我对这个特定操作系统的看法。无法帮助你进行Linux逆向工程:(

我发现IDA Pro 4.9的免费软件版本是一个出色的反汇编程序。它检测系统库,这样你就不会花时间在错误的地方徘徊:)与OllyDbg这样的调试器相结合,你已经准备好解决Win32的大多数逆转项目了。

如果沿着Win32路线走下去,你最终需要了解PE结构,可能是解包和东西,但现在关键是了解x86汇编。如果您使用C语言完成Win32 API编码,则Win32应用程序的反汇编代码相对容易理解。

要更好地理解32位汇编,请反汇编您自己的应用并查看源代码如何与反汇编输出相对应,或了解如何使用汇编语言Iczelion's Win32 Assembly tutorials对Win32 API应用进行编码。

答案 2 :(得分:3)

FFMpeg的当前维护者开始使用逆向工程视频编解码器,因此他可以在Linux上使用视频。他的blog非常有趣,他有recent post谈论他希望他开始时有的书。

答案 3 :(得分:2)

我看到的最大潜在用途之一是像samba(http://www.samba.org/

这样的项目

总会有像这样的封闭式专有系统,我们总是需要工程师来扭转这些系统,以便其他人也可以使用它。

答案 4 :(得分:2)

Eldad Eilam写的一本书Reversing:Reverse Engineering的秘密; Elliot Chikofsky  mybe有帮助你四个

答案 5 :(得分:0)

最近的调查显示,应用程序漏洞是大型组织中IT管理的主要问题,因此了解软件如何破解在评估应用程序架构和编码漏洞评估方面非常有用。