首页
社区
课程
招聘
[求助]驱动中esp-4的位置是什么
发表于: 2012-3-11 00:24 5361

[求助]驱动中esp-4的位置是什么

2012-3-11 00:24
5361
驱动环境,在windbg中发现[esp-4]中的值始终等于eflag寄存器的值,且这个值不能修改,比如
xchg ecx,[esp-4]
[esp-4]还是原来的值一点没改,好像低于这个的如[esp-8]等也不能通过指令修改,请问这是什么特性?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 275
活跃值: (51)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
esp-4这个不确定吧。一般来说有可能是下一层堆栈函数的参数吧,
2012-3-11 08:59
0
雪    币: 579
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这得根据上下文来定吧。谁知道现在esp现在指向哪呢。
esp总是在变的。
2012-3-11 09:31
0
雪    币: 415
活跃值: (34)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
4
栈顶指针,会变的,自己用OD观察下。esp=??,[esp]=??
2012-3-11 10:09
0
雪    币: 260
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
[QUOTE=笨奔;1052155]栈顶指针,会变的,自己用OD观察下。esp=??,[esp]=??[/QUOTE]
堆栈指针我知道啊,你试试用windbg调试驱动环境下,[esp-4]的值一直是eflag寄存器的值,比如执行push 123456后,esp减4了,原来[esp-4]处成了123456,然后新的[esp-4]处仍变成了eflag的值,且这个值不能通过指令修改。
为什么在驱动环境下,无论esp怎么变化,[esp-4]的值一直保持为eflag寄存器的值?
2012-3-11 13:02
0
雪    币: 155
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
[QUOTE=baijianli;1052200]堆栈指针我知道啊,你试试用windbg调试驱动环境下,[esp-4]的值一直是eflag寄存器的值,比如执行push 123456后,esp减4了,原来[esp-4]处成了123456,然后新的[esp-4]处仍变成了eflag的值,且这个值不能通过指令修改。
为什么在驱动环境下,无论esp怎么变化...[/QUOTE]

这是调试器的特性,调试器会用esp-4来存放数据。

以前Icesword有一个反调试的技巧就是检查esp-4如果发现被改了说明是被调试自动破坏线程块
2012-8-12 17:36
0
雪    币: 6524
活跃值: (4316)
能力值: ( LV10,RANK:163 )
在线值:
发帖
回帖
粉丝
7
这句的上面一个push xxx就是了
2012-8-12 19:23
0
游客
登录 | 注册 方可回帖
返回
//