关于binary rewriting的,不知道放这里合不合适,不过也没找到二进制的分组,只好放在这里了。
问题描述:
首先,会将二进制反汇编,然后将反汇编里的某些指令,如:call XXX替换成jmpXXXX,这样做就会导致偏移,因此就需要二进制重写。
目前采用的方式:
定位代码中所有地址相关的内容,根据上步操作的偏移计算所有的地址移位并修改。
问题:
怎么才能定位所有的地址呢?
除了jmp call 接地址外,貌似mov这样的操作有时也会处理地址,这些地址该如何定位呢?
------解决方案--------------------------------------------------------
应该是在预处理或者parser时,将mov操作中的那些地址保存在某块内存中。执行mov指令时,直接去那块内存取地址。
------解决方案--------------------------------------------------------
填充 nop 指令