能力值:
( LV2,RANK:10 )
|
-
-
2 楼
谁来帮我啊,在线等啊
|
能力值:
(RANK:350 )
|
-
-
3 楼
你找一个DLL文件,用LordPE打开,查看重定位表部分“Directory Table/Relocation/ L按钮”,就很容易理解了。
402000h和403030h是没有重定位时的地址数据,即按默认基址定位的地址。
假设最后映射到870000h处:是整个DLL文件都被映射到这个地址上,可以这样理解:870000h就是新点
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
去看了,Lordpe里面的可以看得明白,跟书的的差不多,得出的RVA换成文件偏移就能找到402000和403030这2个值.这些我都能找的到,也理解他的找法.就是不明白他的整个重定位流程,书上给的例子只是找到402000和403030这2个默认定位的地址.重定位的过程并有解释.希望老大能就上面的1,3问题帮我解说一下.
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
第一个问题理解了,sizeofblock是指IMage_base_relocation整个结构的大小,扣掉8个字节就是typeoffset的所占字节数.typeoffset是以word对齐的.所以再除以2就是typeoffset数组的大小
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
还剩下第三个问题,重定位的具体流程,请高手们帮我解释一下,先谢谢了
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
不懂这样理解对不对(全以书中数据为例):
1,系统决定把dll加载到870000h处,加载器服从系统决定,把基址调到870000上处,并算出了差值470000h
2,加载器又把470000h与60f里402000h,623里的403030h的值分别相加,并写回60f,623里,这样60f里的值
就变成了872000h,623里的值就变成了873030h
3,需要重定位的块就自动从各自相对应的地址里(60f,623)取出真正的映射地址完成映射.(至于怎么找到跟自已
对应的加载在址就不大明白了)
|
|
|