首页
社区
课程
招聘
[未解决,已结帖] [求助]关于X64位下 32位进程的硬件断点 50.00雪花
发表于: 2019-7-26 22:48 1988

[未解决,已结帖] [求助]关于X64位下 32位进程的硬件断点 50.00雪花

2019-7-26 22:48
1988
搞一个外服游戏是32位进程, 有硬件断点检测 经过查资料得知  X64位系统中 32位程序 GetContextThread 是经过 NtQueryInformationThread 而非调用 PsGetContextThread  然而我 HOOK  NtQueryInformationThread 处理掉 CONTEXT中的数据后  发现自己设置的硬件断点也失效了  请问有什么办法可以处理这个问题。
代码 如下
    pName = PsGetProcessImageFileName( PsGetCurrentProcess());   

    if (_stricmp(pName,"KDC.exe")==0)
    {
        if (ThreadInformationClass == ThreadWow64Context &&ThreadHandle!=NULL)
        {
            ntstaus = ((_NtQueryInformationThread)pfNtQueryInformationThread)(ThreadHandle,ThreadInformationClass,ThreadInformation,ThreadInformationLength,ReturnLength);
            RtlZeroMemory(ThreadInformation,ThreadInformationLength);
            return ntstaus;
        }

    }

    ntstaus = ((_NtQueryInformationThread)pfNtQueryInformationThread)(ThreadHandle,ThreadInformationClass,ThreadInformation,ThreadInformationLength,ReturnLength);
    return ntstaus;

虽然另一贴问了一下这个问题, 但 新手着实不懂 还望 前辈 不吝赐教。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 168
活跃值: (33)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
问题解决 步骤如下 只说原理 根据 ThreadHandle 获取 线程 _ETHREAD 根据 _ETHREAD 结构中 第一项 即 Tcb 来获取 TrapFrame 这个结构体如下
typedef struct _KTRAP_FRAME
{
    ULONG   DbgEbp;         // Copy of User EBP set up so KB will work.
    ULONG   DbgEip;         // EIP of caller to system call, again, for KB.
    ULONG   DbgArgMark;     // Marker to show no args here.
    ULONG   DbgArgPointer;  // Pointer to the actual args 

    ULONG   TempSegCs;
    ULONG   TempEsp; 

    ULONG   Dr0;
    ULONG   Dr1;
    ULONG   Dr2;
    ULONG   Dr3;
    ULONG   Dr6;
    ULONG   Dr7;

    ULONG   SegGs;
    ULONG   SegEs;
    ULONG   SegDs;

    ULONG   Edx;
    ULONG   Ecx;
    ULONG   Eax;

    ULONG   PreviousPreviousMode;

    PEXCEPTION_REGISTRATION_RECORD ExceptionList; 

    ULONG   SegFs;

    ULONG   Edi;
    ULONG   Esi;
    ULONG   Ebx;
    ULONG   Ebp;

    ULONG   ErrCode;
    ULONG   Eip;
    ULONG   SegCs;
    ULONG   EFlags;

    ULONG   HardwareEsp;    // WARNING - segSS:esp are only here for stacks
    ULONG   HardwareSegSs;  // that involve a ring transition.

    ULONG   V86Es;          // these will be present for all transitions from
    ULONG   V86Ds;          // V86 mode
    ULONG   V86Fs;
    ULONG   V86Gs;
} KTRAP_FRAME;
以上信息来自《寒江独钓》

而这个结构体中 包含的东西  正是我要找的, 到这里就可以了。
2019-7-29 15:14
0
游客
登录 | 注册 方可回帖
返回
//