0

我正在玩逆向工程软件。我有基本的编码经验,但只使用 java 和 python 等顶级语言。

我已经用 IDA pro 反汇编了一些 exe,以查看流程结构,并使用 Hex Workshop 编辑十六进制代码并重新编译。所以,我把所有这些机制都搞定了,可以成功创建我编辑的 exe。

是否有任何关于命令是什么以及它们如何工作的好的指南?我的 google-fu 找不到任何东西。我什至不确定它们叫什么。它与我习惯的编码如此不同,以至于我真的很难在脑海中解析它。

我说的是 jz、jnz、eax、lea、mov、cmp 等等。我可以找到一些对个别命令的零散参考,这些参考有些有用,但不足以用来做有用的事情。我正在寻找关于整个主题的良好入门。我可以完成一些事情,并对他们所做的事情以及如何改变他们做我想做的事情有一个基本的了解。

谢谢。

4

2 回答 2

1

jz, mov, 等等...那些被称为指令,而不是命令(除了eax,它是一个寄存器)。

您正在编辑的字节称为操作码,这些是处理器从内存中获取并解码为指令的内容。

例子:当你看到

.text:00428E4A  8B F0    mov   esi, eax

描述这一行的正确方法是:地址 0x00428E4A 是操作码 8B F0。这些操作码被解码为mov指令,源操作数是eax寄存器,目标操作数是esi寄存器。

此处详细信息的权威来源是英特尔® 64 和 IA-32 架构软件开发人员手册。具体来说,您需要第 2 卷,指令集参考,AZ。

于 2013-03-07T06:51:42.073 回答
0

您需要确定编译 EXE 的 CPU。然后你用谷歌搜索这个 CPU 的汇编语言。在不太可能的情况下,您找不到它,您可以搜索 CPU 的数据表。

于 2013-03-07T06:51:12.543 回答