将mov更改为设置常量0

时间:2016-11-11 08:00:14

标签: assembly x86 reverse-engineering ida

这是可执行文件的说明:

mov dword_1006530C, esi -> 89 35 0C 53 06 10

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

1 个答案:

答案 0 :(得分:5)

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

如果碰巧在其他寄存器中有零,则可以将指令更改为

mov DWORD [1006530ch], <reg>

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

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