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