能力值:
( LV4,RANK:50 )
|
-
-
2 楼
1.动态连接库在每个进程的地址不一定相同,但是都是同一个线性地址的映射.
2.dll的各个导出函数地址都重写到各进程的导入表中.不知为什么要偏移.
3.GetProcAddress取当前进程空间某个dll函数的地址.
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
那GetProcAddress拿到的地址代表什么意思呢?
|
能力值:
( LV13,RANK:970 )
|
-
-
4 楼
所谓的重定位是说把你自己的数据在其他进程中重新定义一个位置.比如你现在在你的代码里用了一个局部变量,叫[ebp-08],但是如果把这段代码嵌入到人家进程,就不能这么用,就必须确定自己的位置(base),然后base+ebp-08才是正确的地方,重定位就是完成查找base的工作.
如果用汇编,一般来说有很多方法重定位,如果用高级语言,就稍微麻烦一些,一般采用指针,有些语言没有指针,可以采用变量索引.
理解了这个原理,应该就可以想到什么时候应该用,什么时候不能用,比如你上面说的获得的API地址,一般不需要重定位,直接CALL就可以,甚至可以JMP过去.
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
经nbw一说,俺清楚多了,万分感谢!
|
|
|