如果我有一个包含已编译C代码的二进制可执行文件,是否可以使用十六进制编辑器编辑该二进制文件并将特定指令更改为另一个指令,例如nop
或jmp
?如何知道我想要更改的指令的偏移?
是的,这是出于教育目的。
答案 0 :(得分:4)
更新:抱歉,错过了Mach-O标签。这个列表非常适用于标准x86,而不适用于Mach-O。不过,它是标准x86代码的一个很好的列表:)
当然,但最好使用OllyDbg,SoftICE或Immunity Debugger等工具(Olly的一种变体,专为逆向工程设计)。学习x86 asm实际上并不像大多数人那样困难。您可以从http://win32assembly.online.fr/
学习很多Win32程序集如果您确实使用十六进制编辑器进行编辑,则可以在http://ref.x86asm.net/获取操作码列表。
这种东西的更好的工具:
答案 1 :(得分:3)
执行此操作和所有其他形式的二进制操作的事实上的工具是交互式反汇编程序(更好地称为IDA,附带一个很酷的免费试用!)记住你将不得不重新设计其余的如果你改变指令+操作数的大小(IE将x86 nop指令更改为jmp指令,而不是Mach-O中的操作数,那么,很可能会导致二进制文件无法运行,除非你重新调整,哪个IDA当然有一个惊人的实用程序)。
十六进制编辑器将无法做到这一点(至少很容易)。