将mov更改为设置常量0

Jon*_*nas 1 x86 assembly reverse-engineering ida

这是可执行文件的指令:

mov dword_1006530C, esi -> 89 35 0C 53 06 10
Run Code Online (Sandbox Code Playgroud)

如何更改十六进制以将零移动到地址?

Mar*_*oom 5

没有足够的空间来编写将零写入该地址的指令序列.
仅编码为立即数的地址将占用四个字节.只留下两个字节:a)保存寄存器b)将其归零c)执行存储d)恢复寄存器.

如果发生某些其他寄存器中的零,则可以将指令更改为

mov DWORD [1006530ch], <reg>
Run Code Online (Sandbox Code Playgroud)

您可以使用NASM快速找到此类代码的机器代码:只需将代码写入文件,BITS 32然后在开头添加.
组装它并使用十六进制编辑器检查输出文件.
例如mov DWORD [1006530ch], edi89 3D 0C 53 06 10.

如果没有准备就绪,唯一的解决方案是将指令替换为jmp文本部分中的空闲点(总有一个空闲点),您可以粘贴机器代码,最后跳回到原始程序流程.