就应用程序而言,IA-32仍然是Windows最常用的架构,但有些应用程序使用AMD64。我想这一切都取决于你试图逆向工程的内容。
实际上,对于现实世界的逆向工程,人们仍将在未来几年开始使用x86 / IA-32组装。显然我们最近看到了x64 / AMD64接管,但这些CPU能够完全本地运行x86代码(系统调用和OS API确实需要像WoW64这样的仿真器的帮助)。至关重要的是,x64指令集的x86子集包括初学者最初想要了解的基本指令。
当然,在逆向工程中,有一种不同的,更具吸引力的动机来关注IA-32代码,特别是本机x86程序的大量可用性。从纯粹的逆转角度来看,你真的只需要知道 什么 关于x64 CPU,如果你打算为他们的程序工作。
正如我已经暗示的那样,差异远远不足以使x86知识变得毫无价值。架构方面有一些变化(例如扩展寄存器) RAX 并改变你可以使用它们的东西)和一些在指令集方面(例如你的一些常见指令将期望64位寄存器操作数),但是远远超过不同的东西。
RAX
还有其他平台,比如ARM,你的问题也会讨论,但这些在你感兴趣的设备中并不普遍。默认情况下学习x86程序集的建议很好。
我认识的大多数优秀的逆向工程师都是从Windows IA-32装配开始的,因为Windows可执行文件(尤其是恶意软件)大多是封闭源代码。你会在Windows中找到很多带有IA-32架构的二进制文件来练习。之后您可以切换到AT& T之类的其他架构。当你已经很好地使用IA-32时,只需要稍微调整一下其他架构。