首页
社区
课程
招聘
[旧帖] 请教一下PE文件装载到运行装到内存后....(见正文) 0.00雪花
发表于: 2009-11-16 14:46 3461

[旧帖] 请教一下PE文件装载到运行装到内存后....(见正文) 0.00雪花

2009-11-16 14:46
3461
请教一下PE文件装载到运行装到内存后还能读到PE的DOSHEADER\OP32HEADER等信息吗?
用CREATEFILE后读出的相关信息,怎么和运行装载后内存的位置对应起来.

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
个人看法:   可以读的,  首先 节表以前的信息是连续的,这部分的内存影象和其在文件中的影象是一样的。 节表以后的各节的RA可以通过baseimage+vra 得到,并按内存要求对齐。
2009-11-16 15:17
0
雪    币: 2523
活跃值: (520)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
程序加载进内存的基址就是DOS头的起始位置,从那儿开始按照PE结构读取相关信息即可
第2个没听明白,加载PE和你CreateFile有必然联系么?
2009-11-16 15:27
0
雪    币: 254
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
一个是文件对齐一个是内存对齐了
2009-11-16 15:35
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢您们的回复.
是这样的,我用CreateFile和ReadFile可以得到ImageDosHeader等结构,但是我用OpenProcess和ReadProcessMemory就得不到,
另外我用ReadProcessMemory从地址0开始读,读不到.
我实际上就是想找到程序的数据段和代码段的地址范围,不知道用PE的头里能不能得到.
2009-11-16 18:38
0
雪    币: 100
活跃值: (30)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
肯定可以,PE文件的信息都加载到内存里了.HOOK API有一种方法不就是改变IAT表中的数据吗?不加载到内存中怎么改.并且加载后读取内容比用ReadFile方便一些,因为不用再RVA和文件偏移转换了
  你如果还拿不准的话你可以找个EXE文件用OD加载,然后跳到0x00400000看看,从MZ开头,全都一样.至于你用ReadProcessMemory读不到,可能你程序写得不对,或者有些地方有内存保护属性而你没有去掉所以读不到了.(VirtualProtect)
2009-11-16 19:04
0
游客
登录 | 注册 方可回帖
返回
//