首页 > 编程知识 正文

ped文件格式转换,mysql数据文件后缀

时间:2023-05-03 22:00:11 阅读:163780 作者:2879

VA VA (虚拟地址) :虚拟地址是存储器内的地址,各存储器空间有地址表示。 这是打开OD或加载程序的虚拟地址,里面的每个地址都是虚拟地址。 VA如下图所示,PE文件加载到内存中的VA都是由imageBase (基本地址)、RVA (相对虚拟地址)形成的绝对虚拟地址VA

RVA相对虚拟地址(RVA ) :相对虚拟地址存储在PE结构的大多数字段中,而选项标题中的字段是ImageBase。 例如,如果ImageBase在00400000子句标题中的VirtualAddress为1000,则您子句中的表数据将映射到内存中的VA )。

FOA FOA )文件偏移地址)文件中包含PE数据的地址相对于文件开始位置的偏移为FOA。 例如,如果你的文件的开始偏移是0,而你的节标题字段的PointerToRawData是400,那么你的节表数据在文件中的地址就是400。 如下图所示

这是400号。 区段表数据所在的位置。 区段表在文件中的大小必须是对齐值的倍数,具体取决于文件中的对齐大小。 节表在内存中占用的空间也必须看内存对齐值,并为对齐值的倍数。 对齐值位于选项标头字段文件对齐(和section对齐)中

RVA例如转移到你的RVA=1100。 这是看你的RVA属于哪个部分。 如果RVA=节表中RVA节表的内存大小记得算对齐值)指示它属于此节,则表示它属于此节。 此时,如果您查看此部分文件中的地址FA,则此RVA将位于文件中

偏移=RVA-部分的RVAFOA=偏移部分的FOA求出的FOA与文件中你的RVA从位置(FOA ) VA到FOA的转移相同,但先计算RVA,然后从RVA到FOA

根据RVA=va=image base (http://www.Sina.com/)偏移=RVA-部分的RVAFOA=偏移部分的FOA求出的FA是文件中您的va位置。 (FOA ) PE文件加载)映射)内存结构为http://www.SOA

导入表注意如果你的基址不是可选头里面的建议基址,就自己用od查看一下实际基地址:包含可执行文件或dll (都称为PE文件)中使用的其它模块的导数

其他的FA转RVA是一样的这个只要求出偏移,然后加上偏移就可以了,看下面的PE加载进内存的图结构就知道了,图是引用百度的:使用了哪个模块? 你使用了哪个dll? 你使用了dll的哪个函数

导入表结构的定义如下。 //最后以全0的结构结尾,每个项目是一个结构,项目有8个字节。 typedef struct _ image _ import _ descriptor { union { dwordcharacteristics; DWORD OriginalFirstThunk; (; //指定导入函数名称,如果为0,则查找FirstThunk DWORD TimeDateStamp; //时间,一般不用魔兽世界; //链表前面的结构一般不使用DWORD Name; //DLL名称的RVA偏移DLL名称DWORD FirstThunk; 与//IAT的RVA偏移. originalFirstThunk不同,如果地址指向的值为0,则跳过当前循环,然后选择下一个DLL //IAT结构类型typedef struct _ image _ thunk dword订单; pimage _ import _ by _ nameaddressofdata; (u1; } IMAGE_THUNK_DATA32;导入表的作用

系统加载导入表的过程是找到数据目录中的第二项,跳到导入表的第一个地址并遍历模块数组。 (系统遍历到20个字节的全部0末尾,表示模块加载完成。 )、数组的每个元素结构_IMAGE_IMPORT_DESCRIPTOR通过字段OriginalFirstThunk或字段FirstThunk与函数名(IAT )或INT关联函数GetProcAddress将函数的地址复盖字段FirstThunk所指向的IAT。 以这种方式循环遍历每个模块,并将每个模块的导入函数重写到相应模块的IAT中。 参照上图,流程实际调用api时,用于隐式加载的是导入表IAT中存储的函数地址,显示加载(

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。