【问题标题】:Reverse engineering - choosing an architecture逆向工程——选择架构
【发布时间】:2013-01-16 08:15:54
【问题描述】:

我正在阅读Reversing:逆向工程的秘密这本书,在第二章中,作者说:

如果您打算学习倒车和 汇编语言并且没有考虑特定的平台,请使用 IA-32。

这本书写于 2005 年,所以我想知道这是否仍然相关?如果我没有逆向工程、汇编程序等方面的经验,我应该选择 IA-32 吗?

【问题讨论】:

    标签: architecture reverse-engineering


    【解决方案1】:

    就应用程序而言,IA-32 仍然是 Windows 最常用的架构,但有些应用程序使用 AMD64。我想这一切都取决于你试图逆向工程是什么。

    【讨论】:

    • 嗯,我没有特别的目标,我只想选择最扩展的架构。所以 IA-32 仍然是实际的对吗?
    • 没错。 64 位架构仍然相当新,因此会有更多关于 IA-32 的信息。顺便问一下,您打算使用哪个操作系统进行逆向工程?如果您使用的是 Windows,我建议使用名为 ollydbg 的反汇编程序。 ollydbg.de
    【解决方案2】:

    我认识的大多数优秀的逆向工程师都是从 windows IA-32 程序集开始的,因为 windows 可执行文件(尤其是恶意软件)大多是封闭源代码。您会在具有 IA-32 架构的 Windows 中找到很多二进制文件来练习。之后,您可以切换到另一种架构,例如 AT&T。当您已经熟悉 IA-32 时,只需稍作调整即可适应其他架构。

    【讨论】:

      【解决方案3】:

      实际上,对于现实世界的逆向工程,人们仍然会在未来几年开始使用 x86/IA-32 组装。显然,我们最近看到了 x64/AMD64 的接管,但这些 CPU 能够完全原生地运行 x86 代码(系统调用和 OS API 确实需要像 WoW64 这样的模拟器的帮助)。至关重要的是,x64 指令集的 x86 子集包括初学者无论如何都想首先了解的基本指令。

      当然,在逆向工程中,有一个不同的、更引人注目的动机来关注 IA-32 代码,特别是原生 x86 程序的大量可用性。从纯粹的倒转的角度来看,如果您打算为 x64 CPU 开发程序,您真的只需要了解任何关于 x64 CPU 的信息。

      正如我已经暗示的那样,这些差异远不足以使 x86 知识变得毫无价值。架构方面有一些变化(例如,RAX 之类的扩展寄存器以及您可以使用它们的东西的变化)和指令集方面的一些变化(例如,您的一些常见指令将需要 64 位寄存器操作数)但是相同之处远多于不同之处。

      还有其他平台,例如 ARM,您的问题也会一直在讨论,但这些在您感兴趣的设备中并不普遍。默认情况下学习 x86 汇编的建议很好一个。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-06-03
        • 2010-09-08
        • 2012-07-08
        • 1970-01-01
        • 2017-04-08
        • 2017-03-29
        • 2012-08-26
        相关资源
        最近更新 更多