为什么od里分析了代码后做出来的内存补丁没用
展开全部
如果空间足够,可以直接原地改,如果知道机器码,直接编辑二进制数据,否则选择菜单中的汇编,输入汇编指令。有空间剩余,用空指令补齐
如果没有足够空间,则需要跳转到足够大空白处,跳转处如有空间剩余,也用空指令补齐,完成后再跳回来,
-----------------------------------------------------------
PUSH ERSoe_Te.10925854
PUSH 5B
应是为子程序100A1FB0传递参数,不建议在此处插入代码,一定要这样做的话,我认为可以有两个方案:
1.常用的方法,一个短跳,跳到附近的空白处,retn语句后可能是一个好去处,具体是不是,要具体分析。完工后再跳回来。
PUSH 5B占用两个字节,短跳也占用两个字节,正好!
2.因为retn语句之后可能是片可以利用的空白,PUSH 5B附近是子程序调用,应该也不会有什么语句直接跳到这里来,且代码极少,可以考虑向下移动,将反汇编的代码依次汇编,工作量不大。
空白就是指程序没有使用的空间,我们拿来用,也不会影响到程序原有的功能,如果我们使用了程序使用的空间,就会破坏原有的代码或数据。大片的相同数据多数情况下就是空白,这个可以作为参考,但不是依据!
如果没有足够空间,则需要跳转到足够大空白处,跳转处如有空间剩余,也用空指令补齐,完成后再跳回来,
-----------------------------------------------------------
PUSH ERSoe_Te.10925854
PUSH 5B
应是为子程序100A1FB0传递参数,不建议在此处插入代码,一定要这样做的话,我认为可以有两个方案:
1.常用的方法,一个短跳,跳到附近的空白处,retn语句后可能是一个好去处,具体是不是,要具体分析。完工后再跳回来。
PUSH 5B占用两个字节,短跳也占用两个字节,正好!
2.因为retn语句之后可能是片可以利用的空白,PUSH 5B附近是子程序调用,应该也不会有什么语句直接跳到这里来,且代码极少,可以考虑向下移动,将反汇编的代码依次汇编,工作量不大。
空白就是指程序没有使用的空间,我们拿来用,也不会影响到程序原有的功能,如果我们使用了程序使用的空间,就会破坏原有的代码或数据。大片的相同数据多数情况下就是空白,这个可以作为参考,但不是依据!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询