分类: WINDOWS
2017-03-17 19:00:50
我们写正常程序的时候根本不用关心变量(常量)的位置,因为源程序在编译的时候,变量(常量)在内存中的位置都计算好了。程序装入内存时,系统不会为它重定位。编程时需要用到变量(常量)的时候直接用变量(常量)名访问,编译后就通过偏移(指针)地址访问。这与JMP或者CALL指令的段内转移不同,因为段内转移的指令在编译的时候使用“位移”计算。虽然代码在内存中的实际地址无法确定,但是在程序中所有代码之间相互的偏移量是固定不变的。因此,无论病毒程序被插入到宿主程序哪里,段内转移都会正确执行。