如何修改此MOV汇编指令以写入硬编码值?

时间:2016-01-11 17:33:41

标签: assembly x86 reverse-engineering

我有以下x86程序集,我试图

mov     byte ptr [esp+1F4h+var_4], bl

编码为

88 9C 24 F0 01 00 00

...我想修改它来写一个硬编码字节而不是bl寄存器。 ...但我在读取x86操作码表here时遇到了问题,以便修改此字节码。另外,两个尾随空字节是否用来分隔下一条指令的字节代码,还是可以覆盖它们(如果新指令更长)?

1 个答案:

答案 0 :(得分:4)

如果有疑问,只需使用汇编程序;)

  

两个尾随空字节,用于分隔下一个字节代码   指令

那些不是分隔符,它们是偏移量的一部分,存储为32位。新指令的长度应相同。很难适应较长的一个,但较短的一个可以用NOP指令填充。不幸的是,带有常量的版本确实更长:

C6 84 24 F0 01 00 00 42 mov byte [esp+0x1f0], 0x42

你不能把它放在那里,你可能也要弄乱以下说明,以防你缩短它们以腾出空间。