如何使用十六进制编辑器更改指令?

Posted

技术标签:

【中文标题】如何使用十六进制编辑器更改指令?【英文标题】:How does one change an instruction with a hex editor? 【发布时间】:2012-08-15 21:00:30 【问题描述】:

我在搞一些逆向工程,但我不知道如何使用十六进制编辑器将 jnz 更改为 jz。我知道它会因系统而异,但我不确定在哪里可以找到这些信息。我正在使用 Mac OS X 64 位,并使用 IDA Pro 反汇编代码。

【问题讨论】:

【参考方案1】:

我假设正确的方法是找出感兴趣指令的操作码(操作码)。由于您对 jz 和 jnz 指令感兴趣,我推断您在 Intel x86-64 机器上。这意味着您需要查看英特尔的参考资料http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html。我相信,您可能会在此处找到有关英特尔 64 位程序集的所有信息。您将能够在任何地方应用这些知识,例如,在十六进制编辑器中编辑操作码。

【讨论】:

【参考方案2】:

如果您找到了jz,则它可能看起来像74 XX0F 84 XX XX XX XX。如果是74,请将其更改为75。如果是84,则将其更改为85。此信息可在英特尔手册(第 2A 卷)等其他地方找到。

只要它们都是基于 x86 的,它不会因系统而异,如果不是,那么 jzjnz 甚至可能不存在。..

【讨论】:

以上是关于如何使用十六进制编辑器更改指令?的主要内容,如果未能解决你的问题,请参考以下文章

十六进制编辑 dll 以更改依赖项名称?

编辑 ELF 二进制调用指令

更改 Mach-o 二进制文件中的函数引用

如何对RS485设备进行地址的设置?

16进制通讯指令tcp如何发送

如何使用十六进制更改自定义数字格式颜色?