关于代码重定位问题

来源:互联网 发布:mac mpv 安装教程 编辑:程序博客网 时间:2024/05/17 23:03

在远程线程注入中,由于编程和实际运行处于不同的内存空间,势必会出现API内存地址不一致的情况,导致某些包含绝对地址的指令无法正常运行。解决这个问题的办法是代码重定位方法,具体代码如下:

dwVar dd ?

           call @F

           @@:

           pop ebx

           sub ebx,offset @B

           mov eax,[ebx,offset dwVar]

通过call/pop/sub三个指令组合,能计算出代码当前的位置和设计时位置的偏移值之差,只要使用这个差值去修正包含绝对地址的指令,如全局变量的指令,能保证修正后的地址是正确的,这就解决了重定位问题。

原创粉丝点击