可以使用十六进制编辑器来编辑可执行二进制文件中的指令吗?

2 x86 mach-o hex-editors machine-code

如果我有一个包含已编译 C 代码的二进制可执行文件,我是否可以使用十六进制编辑器来编辑该二进制文件并将特定指令更改为另一个指令,例如nopjmp?我如何知道我要更改的指令的偏移量?


是的,这是出于教育目的。

Pol*_*ial 5

更新:抱歉,错过了 Mach-O 标签。这个列表实际上是针对标准 x86 的,而不是专门针对 Mach-O 的。尽管如此,这是标准 x86 代码的一个不错的列表:)

当然,但您最好使用诸如 OllyDbg、SoftICE 或 Immunity Debugger(专为逆向工程设计的 Olly 变体)等工具。学习 x86 asm 实际上并不像大多数人所说的那么困难。你可以从http://win32assembly.online.fr/学到很多 Win32 程序集

如果您真的准备使用十六进制编辑器进行编辑,您可以在http://ref.x86asm.net/ 上获得操作码列表。

这类东西的更多好工具:

  • PE Info(免费的 EXE 头文件编辑器)
  • CFF Explorer(免费的 EXE 头文件编辑器/重建器。比 PE 信息更多的功能)
  • PE Explorer(商业EXE头文件和资源编辑器)
  • TrID(文件类型标识符)
  • PEID(可执行文件/打包程序标识符)
  • IDA Pro(静态可执行分析)
  • procmon(活动分析)
  • procexp(类似于 taskmgr,但更好更深入)
  • ildasm(CIL 反汇编程序)
  • ilasm(CIL 汇编程序)
  • RedGate Reflector(.NET 逆向工程工具)
  • .NET Reflector(.NET 逆向工程工具)
  • XVI32(十六进制编辑器)
  • Hex Workshop(十六进制编辑器/结构编辑器)