如果我有一个包含已编译 C 代码的二进制可执行文件,我是否可以使用十六进制编辑器来编辑该二进制文件并将特定指令更改为另一个指令,例如nop
或jmp
?我如何知道要更改的指令的偏移量?
是的,这是出于教育目的。
如果我有一个包含已编译 C 代码的二进制可执行文件,我是否可以使用十六进制编辑器来编辑该二进制文件并将特定指令更改为另一个指令,例如nop
或jmp
?我如何知道要更改的指令的偏移量?
是的,这是出于教育目的。
更新:对不起,错过了 Mach-O 标签。此列表实际上是针对标准 x86,而不是专门针对 Mach-O。尽管如此,它仍然是标准 x86 代码的一个很好的列表 :)
当然可以,但最好使用 OllyDbg、SoftICE 或 Immunity Debugger(Olly 的一种变体,专为逆向工程设计)之类的工具。学习 x86 asm 实际上并不像大多数人想象的那么难。你可以从http://win32assembly.online.fr/学到很多 Win32 汇编
如果您真的准备使用十六进制编辑器进行编辑,您可以在http://ref.x86asm.net/获得操作码列表。
这类东西的更多好工具:
执行此操作和所有其他形式的二进制操作的事实上的工具是Interactive Disassembler(更好地称为 IDA,带有一个很酷的免费试用版!)请记住,如果您更改二进制文件的大小,您将不得不重新设置二进制文件的其余部分。指令 + 操作数(IE 将 x86 nop 指令更改为带有 Mach-O 中操作数的 jmp 指令很可能会导致二进制文件无法运行,除非您重新设置基址,IDA 当然有一个惊人的实用程序)。
十六进制编辑器将无法做到这一点(至少很容易)。