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

问题描述 投票:0回答:2

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

我已经用 IDA pro 反汇编了一些 exe 文件来研究流程结构,并使用 Hex Workshop 编辑十六进制代码并重新编译。所以,我已经掌握了所有这些机制,并且可以成功创建我编辑的 exe。

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

我说的是 jz、jnz、eax、lea、mov、cmp 等。我可以找到一些对各个命令的分散引用,这些命令有些帮助,但不足以用来做有用的事情。我正在寻找关于整个主题的良好入门读物。我可以深入研究一些东西,并对他们所做的事情以及如何改变他们做我想做的事情有一个基本的了解。

hex disassembly
2个回答
1
投票

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

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

示例:当你看到时

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

描述这一行的正确方法是:在地址 0x00428E4A 处是操作码 8B F0。 这些操作码被解码为

mov
指令,源操作数是
eax
寄存器,目标操作数是
esi
寄存器。

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


0
投票

您需要确定编译 EXE 的 CPU。然后你google一下这个CPU的汇编语言。万一找不到它,您可以搜索 CPU 的数据表。

© www.soinside.com 2019 - 2024. All rights reserved.