此文档主要讲解导出表,重定位信息:
使用例子为: Windows.UI.Xaml.dll、010editor
1、导出表,重定位表的地址存放在哪里
DOS头-àPE头文件(_IMAGE_NT_HEADERS)-à扩展头(IMAGE_OPTIONAL_HEADER32)-à数据目录表
数据目录表中的内容:
structIMAGE_DATA_DIRECTORY Export (1)
……
StructIMAGE_DATA_DIRECTORY BaseRelocationTable (6)
Typedef struct IMAGE_DATA_DIRECTORY {
DWORDVirtualAddress ; //此处地址为在内存中的地址
DWORD size ;
}
如下图信息:
 
2、这里是VirtualAddress,如何转变成相对文件地址:
根据pe文件的区段表进行转换:
去段表的结构:
Typedefstruct _IMAGE_SECTION_HEADER{
BYTEName[0x8];
Union{
DWORDPhysicalAddress;
DWORDVirtualSize ;
}
DWORDVirualAddress ;
DWORDSzieOfRawData;
DWORDPointerToRawData;
DWORDPointerToRelocations;
DWORDPointerToLinenumbers;
WORDNumberOfRelocations;
WORDNumberOfLinenumbers;
DWORDCharacteristics;
}
查看需要转换的RVA在哪一个区段中。比如:VirualAddress (比如:此地址为第一个模块地址)<RVA <VirualAddres(第二个模块地址),那么RVA应该依据第一个模块进行转换:RVA-VirualAddress+PointerToRawData=offset(相对文件偏移)

 
                   
                   
                   
                   本文详细介绍了PE文件的导出表和重定位信息,包括导出表的结构、如何转换虚拟地址到相对文件地址,以及重定位表的数据结构和计算重定位位置的方法。通过实例展示了如何查找导出函数地址和进行重定位操作。
本文详细介绍了PE文件的导出表和重定位信息,包括导出表的结构、如何转换虚拟地址到相对文件地址,以及重定位表的数据结构和计算重定位位置的方法。通过实例展示了如何查找导出函数地址和进行重定位操作。
           最低0.47元/天 解锁文章
最低0.47元/天 解锁文章
                           
                       
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
              
             
                   481
					481
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
            


 
            