2

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


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

4

2 回答 2

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(十六进制编辑器/结构编辑器)
于 2011-10-28T19:41:12.513 回答
4

执行此操作和所有其他形式的二进制操作的事实上的工具是Interactive Disassembler(更好地称为 IDA,带有一个很酷的免费试用版!)请记住,如果您更改二进制文件的大小,您将不得不重新设置二进制文件的其余部分。指令 + 操作数(IE 将 x86 nop 指令更改为带有 Mach-O 中操作数的 jmp 指令很可能会导致二进制文件无法运行,除非您重新设置基址,IDA 当然有一个惊人的实用程序)。

十六进制编辑器将无法做到这一点(至少很容易)。

于 2011-10-28T19:33:51.537 回答