Compiler construction 十六进制汇编编辑器命令入门?

Compiler construction 十六进制汇编编辑器命令入门?,compiler-construction,hex,disassembly,Compiler Construction,Hex,Disassembly,我在玩逆向工程软件。我有基本的编码经验,但只使用java和python等顶级语言 我已经与IDA pro解构了一些exe,以查看流程结构,并且正在使用Hex Workshop编辑Hex代码并重新编译。所以,我有所有这些机制下来,可以创建我的编辑exe成功 对于命令是什么以及它们是如何工作的,有什么好的指南吗?我的谷歌浏览器什么也找不到。我甚至不知道它们叫什么。它与我习惯的编码方式大不相同,我真的很难在脑海中解析它 我说的是jz、jnz、eax、lea、mov、cmp等等。我可以找到一些对单个命令

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

我已经与IDA pro解构了一些exe,以查看流程结构,并且正在使用Hex Workshop编辑Hex代码并重新编译。所以,我有所有这些机制下来,可以创建我的编辑exe成功

对于命令是什么以及它们是如何工作的,有什么好的指南吗?我的谷歌浏览器什么也找不到。我甚至不知道它们叫什么。它与我习惯的编码方式大不相同,我真的很难在脑海中解析它

我说的是jz、jnz、eax、lea、mov、cmp等等。我可以找到一些对单个命令的零散引用,这些引用有些帮助,但不足以处理有用的事情。我在找一本关于整个主题的好入门书。我可以深入了解他们所做的事情,以及如何改变他们去做我想做的事情


谢谢。

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

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

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

示例:当你看到

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


这里详细信息的最终来源是。具体来说,您需要第2卷,指令集参考,A-Z。

人们不知道英特尔手册,我总是感到惊讶。如果您要进行(x86)二进制分析,这些是至关重要的!一个小提示:当查看二进制代码(即反汇编,而不是汇编)时,请务必参考《英特尔手册》第2卷中的“附录A:操作码映射”(目前在第2b卷PDF中)。第2卷允许您通过助记符查找asm指令,而操作码映射允许您通过操作码(字节编码)查找指令。查找“汇编语言”指南,特别是针对x86或x86-64的指南。莱因哈特的答案中有参考资料的链接,但在使用之前,你可能需要阅读一本教程。