在病毒里面经常会使用到这种技术,因为病毒的启动往往不是通过windows来加载,那么各个地址的重定位也就需要手工来完成,如果代码本身就具备重定位功能的话,那么手工加载病毒就会容易的多,可以轻易把病毒塞入一块任意的由VirtualAlloc分配的内存.
经典的代码是这样的






实际上我们做的工作就是windows加载时要做的工作,上面的代码如果通过windows来加载完成,那么相对偏移就会被windows重定位,与绝对地址的差值为0.但是如果是手工加载,那么这个差值就与加载地址密切相关了.
在病毒里面经常会使用到这种技术,因为病毒的启动往往不是通过windows来加载,那么各个地址的重定位也就需要手工来完成,如果代码本身就具备重定位功能的话,那么手工加载病毒就会容易的多,可以轻易把病毒塞入一块任意的由VirtualAlloc分配的内存.
经典的代码是这样的
实际上我们做的工作就是windows加载时要做的工作,上面的代码如果通过windows来加载完成,那么相对偏移就会被windows重定位,与绝对地址的差值为0.但是如果是手工加载,那么这个差值就与加载地址密切相关了.