首页
社区
课程
招聘
[已解决]如何获取段的基址及计算偏移后的内存地址?
发表于: 2012-6-21 23:29 5561

[已解决]如何获取段的基址及计算偏移后的内存地址?

2012-6-21 23:29
5561
如下所示的各寄存状态

C 0  ES 0023 32位 0(FFFFFFFF)
P 1  CS 001B 32位 0(FFFFFFFF)
A 0  SS 0023 32位 0(FFFFFFFF)
Z 1  DS 0023 32位 0(FFFFFFFF)
S 0  FS 003B 32位 7FFDE000(FFF)
T 0  GS 0000 NULL

假如,我想获得FS段的基址,用汇编指令如何操作?

MOV DWORD PTR FS:[0004008], EAX

上面的MOV指令中的"FS:[0004008]"所指的具体内存地址如何计算?以及用汇编指令如何获得该地址。

问题已解决:

如果是使用OdbgScript脚本的话,使用脚本的GOPI命令即可获取;如果是动手写插件,可以调用插件命令Disasm填充t_disasm结构,从结构中取得。

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

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 166
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
获取FS段的基址:mov eax,fs:[0],eax就是你想要的结果。
根据你提供的数据,fs的基址等于7FFDE000,所以FS:[0004008]=7FFDE000(基址)+0004008[偏移]
所以FS:[0004008]=7FFE2008。
你的明白?
2012-6-22 08:57
0
雪    币: 239
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
来看看,学习下
2012-6-22 11:04
0
雪    币: 203
活跃值: (174)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
[QUOTE=地精锁匠;1081890]获取FS段的基址:mov eax,fs:[0],eax就是你想要的结果。
根据你提供的数据,fs的基址等于7FFDE000,所以FS:[0004008]=7FFDE000(基址)+0004008[偏移]
所以FS:[0004008]=7FFE2008。
你的明白?[/QUOTE]

测试了一下,执行 mov eax,fs:[0]  后, 是将 fs:[0] 所在地址的内存数据传送到了eax,并不是 fs:[0] 的地址,用什么指令可以得到 fs:[0] 的地址呢?
2012-6-22 16:11
0
游客
登录 | 注册 方可回帖
返回
//