首页
社区
课程
招聘
[求助]如何利用GetThreadContext得到FS的值
发表于: 2007-7-16 10:41 10222

[求助]如何利用GetThreadContext得到FS的值

2007-7-16 10:41
10222
我最近用DEBUGAPI写了一个小程序,但是被附加的程序有isdebuggerpresent,,现在我想用
GetThreadContext得到FS的值,然后修改isdebuggerpresent的返回值,但是总是但是总是得不到正确的FS的值,另外,我的程序一退出,被附加的程序也会退出,有没有什么方法解决这个问题,还请大侠指点一二。。。。多谢了。。。。。。。。。。。。

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

收藏
免费
支持
分享
最新回复 (6)
雪    币: 314
活跃值: (10)
能力值: ( LV12,RANK:570 )
在线值:
发帖
回帖
粉丝
2
你反汇编一下kernel32.dll找到isdebuggerpresent函数,它的代码前两行就是获得地址.你自己看看,我在哥家,手头没有工具.
2007-7-17 13:40
0
雪    币: 325
活跃值: (97)
能力值: ( LV13,RANK:530 )
在线值:
发帖
回帖
粉丝
3
你把代码注入进去执行。无论如何都可以得到了。
2007-7-17 18:42
0
雪    币: 238
活跃值: (326)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
4
77E6F5A1 ; BOOL IsDebuggerPresent(void)
77E6F5A1           public _IsDebuggerPresent@0
77E6F5A1 _IsDebuggerPresent@0 proc near
77E6F5A1           mov   eax, large fs:18h
77E6F5A7           mov   eax, [eax+30h]
77E6F5AA           movzx eax, byte ptr [eax+2]
77E6F5AE           retn
77E6F5AE _IsDebuggerPresent@0 endp
2007-7-17 20:42
0
雪    币: 86
活跃值: (34)
能力值: ( LV2,RANK:150 )
在线值:
发帖
回帖
粉丝
5
我知道了,谢谢了大家
2007-7-18 08:20
0
雪    币: 304
活跃值: (82)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
6
c++的,我的cooldumpper是这么取fs的实际地址的,不知道是否对lz有帮助       
CONTEXT Context;
LDT_ENTRY SelEntry;
BOOL bOk = false;
Context.ContextFlags = CONTEXT_FULL | CONTEXT_DEBUG_REGISTERS;
bOk = ::GetThreadContext(hThread, &Context);
ASSERT(bOK);
bOk = GetThreadSelectorEntry(hThread, Context.SegFs, &SelEntry);
ASSERT(bOk);
DWORD dwFSBase = ( SelEntry.HighWord.Bits.BaseHi << 24) |
                (SelEntry.HighWord.Bits.BaseMid << 16) |
                SelEntry.BaseLow;

更多的调试api的说明 可以看看这篇文章
http://blog.csdn.net/hackwaly/archive/2007/03/26/1542075.aspx
2007-7-18 09:47
0
雪    币: 86
活跃值: (34)
能力值: ( LV2,RANK:150 )
在线值:
发帖
回帖
粉丝
7
[QUOTE=;]...[/QUOTE]
多谢6楼的兄弟,要的就是你的这个方法。。。。。。
2007-7-19 10:13
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册