早就知道这个了,但自己总结出来感觉透彻了不少。
PE文件病毒感染时会在宿主上附加代码,但每次感染内存地址不同,修改代码内的地址是不现实的。所以就有了重定位技术,利用偏移值的确定性使代码可用。
重定位代码很短:
JMP rebase ;1
rebase: ;2
POP EBX ;3
SUB EBX, offset rebase ;4
1. JMP语句会将下一条语句的地址压栈。注意是物理上的下一条,不是EIP指向的下一条。也就是说如果1,2之间有其他语句的话,压入的就相应地址而不是POP语句的地址了。当然中间加入语句也是可以