首页
社区
课程
招聘
[旧帖] [求助]将一个进程(或线程)暂停后,如何获取这个进程被暂停的时候的EIP指针(即这个线程在被暂停时执行到的那句指令)以及上下文信息保存的contest结构呢? 0.00雪花
发表于: 2009-10-5 20:43 10878

[旧帖] [求助]将一个进程(或线程)暂停后,如何获取这个进程被暂停的时候的EIP指针(即这个线程在被暂停时执行到的那句指令)以及上下文信息保存的contest结构呢? 0.00雪花

2009-10-5 20:43
10878
请大家指导一下, 按理来讲,一个线程被暂停后为了恢复时能继续执行 会被其EIP 等上下文(contest结构)保存起来, 我想问:暂停进程 (线程)后如何定位contest结构的地址 以及其中的eip值?
不管老鸟才能,回答我问题的就是好。。。

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

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
PsGetThreadContext,PsSetContextThread啊,CONTEXT结构是公开的,你什么时候能学会搜索啊~
2009-10-5 21:44
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
3
打错了,是PsSetThreadContext,http://gr8os.googlecode.com/svn-history/r56/trunk/kernel/inc/ps.h
2009-10-5 21:59
0
雪    币: 246
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢大牛的鼓励 ,1.不过比起调用api 我发此贴其实是希望自己定位到这个结构,2.那个能不能问一下这个用来保存上下文的contest的声明是什么?。了解更底层的东西,我总是想了解更底层的。。。。
2009-10-5 22:07
0
雪    币: 2134
活跃值: (14)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
5
可以看看msdn, CONTEXT结构在vc中可以定位到~
http://msdn.microsoft.com/en-us/library/ms679362(VS.85).aspx
2009-10-5 22:23
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
6
psgetcontextthread实际会从kthread->trapframe或线程当前stack上存储的trapframe来取context
看看源码就知道了
2009-10-5 22:59
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
7
未知的秘密很多,很多人都想知道啊,可是你既不会搜索查找前人发表的知识,自己又不会去挖掘和探索,总是在这儿问了又问,勤学好问可不是像你这样的
2009-10-5 23:35
0
雪    币: 284
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
完全不懂,专程膜拜教主来的·~
教主所到之处,都会找到膜拜的我。
2009-10-6 09:04
0
雪    币: 246
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
nt!_CONTEXT
   +0x000 ContextFlags     : Uint4B
   +0x004 Dr0              : Uint4B
   +0x008 Dr1              : Uint4B
   +0x00c Dr2              : Uint4B
   +0x010 Dr3              : Uint4B
   +0x014 Dr6              : Uint4B
   +0x018 Dr7              : Uint4B
   +0x01c FloatSave        : _FLOATING_SAVE_AREA
   +0x08c SegGs            : Uint4B
   +0x090 SegFs            : Uint4B
   +0x094 SegEs            : Uint4B
   +0x098 SegDs            : Uint4B
   +0x09c Edi              : Uint4B
   +0x0a0 Esi              : Uint4B
   +0x0a4 Ebx              : Uint4B
   +0x0a8 Edx              : Uint4B
   +0x0ac Ecx              : Uint4B
   +0x0b0 Eax              : Uint4B
   +0x0b4 Ebp              : Uint4B
   +0x0b8 Eip              : Uint4B
   +0x0bc SegCs            : Uint4B
   +0x0c0 EFlags           : Uint4B
   +0x0c4 Esp              : Uint4B
   +0x0c8 SegSs            : Uint4B
   +0x0cc ExtendedRegisters : [512] UChar 

会用windbg真好!可是为什么用windbg列出来的东西会和微软网站上的结构不同呢? 是不是只要在windows中出现context结构都是windbg这种结构 ?还是只有在内核里 context结构才这样
2009-10-6 09:59
0
雪    币: 246
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
原来你也喜欢用大牛头像啊.

psgetcontextthread用的是内核Stack ,而线程用的是 用户层的Stack psgetcontextthread 怎么在当前 Stack 上能取到用户的制定线程的 trapframe中的context呢?

还有一点 我不太懂啊 , 一个进程有很多个kthread结构 ,每一个线程都有一个kthread结构,那么psgetcontextthread函数是如何确定当前运行到哪个线程呢? 他取哪个kthread结构呢?
2009-10-6 10:16
0
雪    币: 251
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
个人理解:
Public Symbol的问题是,部分信息会丢失,比如很多结构的定义以及typedef之类的,另外它是针对特定windows版本的
而msdn中有很多结构也是Public版本,是仅仅用来占位,大小是完全正确的,但是隐藏了实现的信息,比如说把一个指针变成PVOID之类的,归根到底,MSDN是让你知道怎么用API的而不是介绍windows内部是如何工作的;而它对不同版本的结构应该会分别介绍
2009-10-6 12:56
0
雪    币: 246
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
bsMS 顺便帮看一下 第10楼的问题呗! 谢谢了啊
2009-10-6 14:28
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
要是MS公开源码就好了,现在什么都搞不清楚。。。
2009-10-7 00:02
0
雪    币: 123
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
看下函数的参数。。。
2009-10-7 11:50
0
雪    币: 0
活跃值: (954)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
15
有什么确实不知道怎么去搜索。。
2009-10-8 10:58
0
游客
登录 | 注册 方可回帖
返回
//