1

我正在阅读《逆向:逆向工程的秘密》一书,在第二章中,作者说:

如果您计划学习逆向和汇编语言并且没有考虑特定的平台,请使用 IA-32。

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

4

3 回答 3

0

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

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

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

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

于 2012-12-13T23:01:58.597 回答
0

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

于 2012-07-29T03:53:19.753 回答
0

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

于 2012-07-27T02:02:39.217 回答