从 MOV 指令更改为 ADD 或 SUB 指令

Change from MOV instructions to ADD or SUB instructions

我想从mov指令改成SUB指令(我想,我们也可以改成ADD指令),我想调整数值,让整个程序的功能保持不变。

   for_real_programmers:
     mov dx, 0 ; 
     inc dx ;

   for_leet_hackorz:
     mov word ptr [for_real_programmers], 0d929h ; ?
     mov word ptr [for_real_programmers+2], 0d9f7h ; ?
     mov byte ptr [for_leet_hackorz], 0c3h ; ?
     jmp restart

对于此 self-modifying 代码,您要修改的 machine-code 字节每次都是相同的(假设它只运行一次),所以是的,可以只 add dst, desired - orig_dst 而不是 mov dst, desired.

首先将 mov 助记符更改为 addsub,然后 assemble 并查看列表或 hexdump。这为您提供了目的地的起始值,因此您可以计算出要使用的立即数。

在您的 asm 源中进行这些更改并再次重建 + 测试。

您 self-modifying 的字节与 mov / add / sub 的直接操作数是分开的。您更改的一个字节是用 C3 ret 替换 for_leet_hackorz 中第一条指令的操作码(真的吗?),这就是为什么您需要更改助记符以添加或减去 之前 计算开始与期望之间的差异。