首页
社区
课程
招聘
[讨论]程序的.data段是怎么分配来的?
发表于: 2008-7-3 15:01 5487

[讨论]程序的.data段是怎么分配来的?

2008-7-3 15:01
5487
一个没有加任何壳的程序在运行到OEP之前,先hook到,然后在hook的代码力想释放掉数据段(.data,这是VC的程序)的内存,用VirtualFree((LPVOID)0xxx000, 0, MEM_RELEASE),失败,LastError是87(ERROR_INVALID_PARAMETER  87 The parameter is incorrect) 。请问,这个段在装载的时候是单独分配的内存吗?
另外问一个PE头的问题,就是PE的这些段之间能不能有空隙,不是要写入代码的那种空隙,是两个段的地址本身就不相连的那种。我试着修改过段的大小和sizeofimage,只要段之间不是相连的,就提示不是合法的win32程序。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
关注一下,我只知道那个段是可以在程序编译的时候就修改的.
2008-7-4 17:23
0
雪    币: 208
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
多谢关注。
我是想问程序装载时的情况,因为根据内存断点的原理,同时从OD的内存列表上来看,数据段应该是单独的一块内存,只是我无法在运行到OEP之前使用VirtualFree来释放到那块内存(OEP之后也不行),所以想了解一下那块数据段在装载时是怎么分配来的,也许对这些内存不能简单的认为就是VirtualAlloc来的。
2008-7-5 18:21
0
雪    币: 208
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
还是要自己来解决自己的问题,经过研究发现,整个pe文件是根据SizeOfImage一次Alloc来的。
结贴了
2008-7-9 12:06
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
5
f-.-
膜拜....请问你怎么看的?
2008-7-9 12:41
0
雪    币: 208
活跃值: (40)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
用 VirtualQuery 就知道了
2008-7-11 13:20
0
游客
登录 | 注册 方可回帖
返回
//