首页
社区
课程
招聘
[求助]EXE文件和DLL文件创建View时存在差异吗?
发表于: 2010-10-23 18:09 3837

[求助]EXE文件和DLL文件创建View时存在差异吗?

2010-10-23 18:09
3837
在写程序的时候发现一个很奇怪的问题,使用函数
      CreateFile,
      CreateFileMapping,
      MapViewOfFile
     将一个PE文件映射入当前进程后,解析这个PE文件的导出表。发现解析的时候对于DLL文件,需要将IMAGE_DIRECTORY_ENTRY_EXPORT中导出表的RVA转换成文件偏移地址(Raw Offset),用文件偏移地址加上映射入的基地址才可以定位到导出表。然而对于EXE文件,则不用。直接将RVA加上映射到的基地址就可以定位到导出表。
  
     在内核中,使用
     ZwCreateFile
     ZwCreateSection
     ZwMapViewOfSection
     将一个PE文件映射入当前进程,解析导出表的时候。对于EXE文件,则需要将RVA转换成文件偏移,再加上映射的基地址才可以定位到导出表。然而对于DLL,则不用,直接用RVA加上映射的基地址就可以了。
     Ring3 和 Ring0 情况完全相反?而且不管在用户空间还是内核空间,为什么对于EXE和DLL文件处理的方式也不一样?
     恳请大家指教!

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 403
活跃值: (330)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
2
丢人了~Rva2RawOffset函数写错了~
2010-10-23 19:36
0
游客
登录 | 注册 方可回帖
返回
//