Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Architecture 逆向工程-选择体系结构_Architecture_Reverse Engineering - Fatal编程技术网

Architecture 逆向工程-选择体系结构

Architecture 逆向工程-选择体系结构,architecture,reverse-engineering,Architecture,Reverse Engineering,我正在读《逆向:逆向工程的秘密》一书,在第二章中,作者说: 如果你打算学习倒车和 汇编语言,没有特定的平台,使用IA-32 这本书写于2005年,所以我想知道这是否仍然相关?如果我没有逆向工程、汇编程序等方面的经验,我应该选择IA-32吗?IA-32仍然是windows应用程序中最常用的体系结构,但有些应用程序使用AMD64。我想这一切都取决于你想做什么样的逆向工程。我认识的大多数优秀逆向工程师都是从windows IA-32汇编开始的,因为windows可执行文件(尤其是恶意软件)大多是封闭源

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

如果你打算学习倒车和 汇编语言,没有特定的平台,使用IA-32


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

IA-32仍然是windows应用程序中最常用的体系结构,但有些应用程序使用AMD64。我想这一切都取决于你想做什么样的逆向工程。

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

现实地说,对于真实世界的逆向工程,在未来的几年中,人们仍然会开始使用x86/IA-32汇编。显然,我们最近看到了x64/AMD64的接管,但这些CPU能够完全以本机方式运行x86代码(不过,系统调用和操作系统API确实需要类似WoW64的仿真器的帮助)。至关重要的是,x64指令集的x86子集包括初学者首先要学习的基本指令

当然,在逆向工程中,有一种不同的、更令人信服的动机,即特别关注IA-32代码,这就是本机x86程序的大量可用性。从完全相反的角度来看,如果您计划为x64 CPU开发程序,您实际上只需要了解有关x64 CPU的任何信息

正如我已经暗示的那样,这些差异远远不足以让x86知识变得一文不值。在体系结构方面有一些变化(例如扩展寄存器,如
RAX
,以及对您可以使用它们的内容的变化),在指令集方面也有一些变化(例如,一些常见指令需要64位寄存器操作数),但相同的远多于不同的


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

我没有特别的目标,我只想选择扩展最广泛的体系结构。那么IA-32仍然是真实的对吗?没错。64位体系结构仍然相当新,因此将有更多关于IA-32的信息。顺便问一下,你打算用哪个操作系统进行逆向工程?如果您使用的是windows,我建议使用名为ollydbg的disassember。