首页
社区
课程
招聘
[求助]ResumeThread求助
发表于: 2013-9-6 23:33 4988

[求助]ResumeThread求助

2013-9-6 23:33
4988
我ResumeThread一个线程,GetThreadContext获取eip,为什么都是在系统领空,而不是程序领空
代码附上
#include "stdafx.h"
#include <windows.h>
#include "Tlhelp32.h"
int main(int argc, char* argv[])
{
        DWORD thId=0;
        CONTEXT ct;
        ct.ContextFlags=CONTEXT_CONTROL;
        THREADENTRY32 th32;
        th32.dwSize=sizeof(THREADENTRY32);
        HANDLE h1=CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD,0);
        BOOL ret=Thread32First(h1,&th32);
        while(ret)
        {
                ret=Thread32Next(h1,&th32);
                printf("ProcessId:%d ",th32.th32OwnerProcessID);
                printf("ThreadId:%d\r\n",th32.th32ThreadID);
        }
        printf("请输入线程ID:\n");
        scanf("%d",&thId);
        printf("你输入的线程id是:%d\r\n",thId);
       
        HANDLE h2=OpenThread (THREAD_ALL_ACCESS,FALSE,thId);
        SuspendThread(h2);
        GetThreadContext(h2,&ct);//CONTEXT_FULL
        return 0;
}
eip如下:0x7c92e514

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 1392
活跃值: (5212)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
2
suspend以后,是停在系统空间的,eip为kernel32 的ret。resume后从这个 ret回到用户空间
2013-9-7 08:15
0
雪    币: 116
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
那是不是可以通过esp得到要返回的用户空间地址,也就是知道suspend停在哪里了?
2013-9-7 09:20
0
雪    币: 171
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
那么如何获取SuspendThread暂停的线程的eip啊??
2013-9-7 12:54
0
游客
登录 | 注册 方可回帖
返回
//