首页
社区
课程
招聘
[旧帖] [求助]关于pe结构的数据段! 0.00雪花
发表于: 2008-12-31 16:28 4572

[旧帖] [求助]关于pe结构的数据段! 0.00雪花

2008-12-31 16:28
4572
问题一,
pe文件中一般都会有一个data的section,
请问这个section是怎么组织那?有没有数据结构来描述?
我想把这个段移动到其他地方,除了节表里的要改地址外,其他地方要改吗?
注明:我所用的pe文件的目录结构里,没有数据在此section里,

我把data段整个下移100H后,用loadpe把节表里.data段的相应地址改成新的后,运行还是出错,

问题二,
我改了data段的文件偏移后(rva没有改),假如可以运行,data段是不是被装载到内存里同样的位置?

问题三,
假如我在程序里定义了一个全局变量,被编译在data段中,运行的时候装载到内存某个位置,那么程序是如何在内存中找到这个变量的那?再假如我想把这个变量换个位置放,那我怎么告诉程序,我把这个变量挪到一个新的地方那???

先谢了

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
2
想来想去....只有书呆能回答你
但是他最近没空
等他考完看有没有心情回答你
2008-12-31 17:26
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
你把pe中的data节移了位置,除了改节表,text节中很多你也要改,因为这里面指令还在访问改前的地址阿
2008-12-31 17:41
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这是一个非常麻烦的事。我也正在做此类尝试
2009-7-23 23:39
0
雪    币: 73
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
同样遇到了这个问题 没人能提示一下么
2010-3-31 19:37
0
雪    币: 249
活跃值: (25)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
6
刚才拿了一个EXE试了一下,可以运行,我移动的是.rdata段,原理是一样的。
问题一:只需要修改段表,但是只能修改段起始地址的文件偏移,不能修改内存偏移(修改后变量会找不到)。要注意一点,需要注意按照FileAlignment对齐,你只是向下移动100H,File Alignment应该有200H和1000H之分,好像没有100H,所以你这样是错误的。要保证段的开始是一个对齐的位置。
问题二:RVA不变,加载到内存应该不会改变,这个没试,如果改变了,程序肯定不会运行了~~
问题三:想要在.data段中查找某个全局变量,这个不知道,可能需要看编译链接~~但是可以把全局变量放到一个单独的数据段中,这样你在外部可以用16进制编辑器修改它的值。这样程序运行的时候刚开始此全局变量就是这个值。
#pragma data_seg(".new")
DWORD g_dwTest = 0;
#pragma data_seg()
这样就把全局变量放到一个单独的段中,你在外面可以看到,也可以修改。注意此变量要初始化,否则此变量还是在.data段中。
以上是我的一点经验,希望可以帮到你~~
2010-4-1 10:43
0
游客
登录 | 注册 方可回帖
返回
//