能力值:
( LV5,RANK:73 )
|
-
-
2 楼
呃呃呃 昨天问的时候都还是dnf.exe 咋今天就变成kdc.exe了
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
Sprite雪碧
呃呃呃 昨天问的时候都还是dnf.exe 咋今天就变成kdc.exe了
都是韩服的东西 都一样
|
能力值:
( LV5,RANK:73 )
|
-
-
4 楼
BOOL __stdcall Wow64GetThreadContext(HANDLE hThread, PWOW64_CONTEXT lpContext)
{
unsigned int v2; // eax
v2 = RtlWow64GetThreadContext(hThread, lpContext);
if ( (v2 & 0x80000000) == 0 )
return 1;
BaseSetLastNTError(v2);
return 0;
}
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
Sprite雪碧
BOOL __stdcall Wow64GetThreadContext(HANDLE hThread, PWOW64_CONT ...
先谢谢您 但是 RtlWow64GetThreadContext 这个函数 报没有定义 ? 你这个是内核 还是R3 的 ?
|
能力值:
( LV5,RANK:73 )
|
-
-
6 楼
函数是内核的 Wow64GetThreadContext 直接声明就能用 参数是线程句柄 函数的底层实现是 RtlWow64GetThreadContext 应该也是通过 ETHREAD 去取的⑧ 不清楚
RtlWow64GetThreadContext 是从其他文件导入的
最后于 2019-7-27 12:54
被Sprite雪碧编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
Sprite雪碧
函数是内核的 Wow64GetThreadContext 直接声明就能用参数是线程句柄 函数的底层实现是 RtlWow64Get ...
十分感谢 我去DBG 看看这个函数 不知道 X64下32位程序 是不是 走这里。 再次谢谢
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
|
能力值:
( LV5,RANK:73 )
|
-
-
9 楼
那就是我搞错了。函数是r3的,刚仔细看了下,这玩意最终还是进入的是NtQueryInformationThread。 result = ObReferenceObjectByHandleWithTag((ULONG_PTR)hThread, 0x746C6644, (unsigned __int64)&EThread, 0i64, v93);
if ( result >= 0 )
{
v77 = PspWow64GetContextThreadOnAmd64((__int64)EThread, (int *)v67->m128i_i64, v70);
ObfDereferenceObject(EThread);
if ( v77 >= 0 && a5 )
*(_DWORD *)a5 = 716;
result = v77;
} 取Context应该就是这个了 剩下的应该看得懂吧
最后于 2019-7-27 13:59
被Sprite雪碧编辑
,原因:
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
问题没有解决 不知道 这个Wow64GetThreadContext 如何去找地址来HOOK DBG 中看不到
|
能力值:
( LV5,RANK:73 )
|
-
-
11 楼
yyinzlf
问题没有解决 不知道 这个Wow64GetThreadContext 如何去找地址来HOOK DBG 中看不到
不是给你说了最终进入了 ntquerythread了吗 上面伪代码写的很清楚了 Wow64GetThreadContext 是r3调用的
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
Sprite雪碧
不是给你说了最终进入了 ntquerythread了吗 上面伪代码写的很清楚了 Wow64GetThreadContext 是r3调用的
汗 你上面说 是内核代码所以我才看的, 32位进程在 X64下 调用 GetContextThread 在内核是 走的 NtQueryInformationThread 这个 但是 我目前面临的问题是如何 返回个没有硬件断点的 CONTEXT 给 应用层 而同时还可以实现 自己设定的硬件断点 即在内核层 CONTEXT 不是空的、 我的实现方式是在0层 而非R3
X32下 HOOK NtGetContextThread 就可以办到这点, 但是 X64却不是走的这个函数 所以目前卡在了
NtQueryInformationThread
这块的处理上
最后于 2019-7-27 14:43
被yyinzlf编辑
,原因:
|
能力值:
( LV5,RANK:73 )
|
-
-
13 楼
我这句更正的话已经说的很明白了吧,贴的就是NtQueryInfoThread取Context的代码。 你hook query后,判断是不是检测调用的,如果是,直接返回注册没断点的寄存器。 如果不是检测调用的,就手动调用这个psp开头的api不就行了
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
你上边的更正没注意到 只看贴的代码了 不好意思
问题是怎么判断 是检测调用的 ? 这问题就在这里呢
最后于 2019-7-28 19:17
被yyinzlf编辑
,原因:
|
能力值:
( LV1,RANK:0 )
|
-
-
15 楼
x32都来辣
|
能力值:
( LV3,RANK:20 )
|
-
-
16 楼
NGS好像没有r0的检测
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
GetThreadContext NtQueryInformationThread -> ThreadWow64Context -> PWOW64_CONTEXT 两种方式么?
|
|
|