• pspcidtable 学习


    PspCidTable   is  an  undocmented variable  in  Windows  kernel...  it contains HANDLE_TABLE...

    if get address of PspCidTable , i find the follow methods to get it  in net...  thx for sudami 's article...

    1. 通过暴力搜索特征值的办法得到 PspCidTable的地址。。

    要搜索的函数有:

    PsLookupProcessThreadByCid()
    PsLookupProcessByProcessId()
    PsLookupThreadByThreadId()

    从wrk上看到的 PsLookupProcessByProcessId() 的原码:

    Code

    里面有这样的一段:

    .........

     20      KeEnterCriticalRegionThread (&CurrentThread->Tcb);

     21      CidEntry = ExMapHandleToPointer(PspCidTable, ProcessId);

    .........

    这样找到这个函数的汇编代码,然后穷搜这一句就可以了。。。

    通过windbg看到的反汇编代码:

    kd> u nt! PsLookupProcessByProcessId+0x12
    nt!PsLookupProcessByProcessId+0x12:
    80572960 ff8ed4000000            dec     dword ptr [esi+0D4h]
    80572966 ff3560245680            push    dword ptr [nt!PspCidTable (80562460)]
    8057296c e8dc50ffff                  call    nt!ExMapHandleToPointer (80567a4d)
    80572971 8bd8                         mov     ebx,eax
    80572973 85db                         test    ebx,ebx
    80572975 c745080d0000c0        mov     dword ptr [ebp+8],0C000000Dh
    8057297c 7432                         je      nt!PsLookupProcessByProcessId+0x62 (805729b0)
    8057297e 57                            push    edi

    便找到PspCidTable的地址了。。。

    代码实现如下:


     

    Code
  • 相关阅读:
    在消息框中添加帮助按钮
    如何隐藏一个窗口在任务栏
    不透明的形式在c#中
    实现观察者模式在一个非常简单的例子
    更新使用回调模态对话框的内容
    检查Windows应用程序的现有实例,并设置MDI子程序的MDI父窗体
    更改对话框内容的简单方法
    MSIUninstaller.exe(控制台应用程序)
    启用或禁用控制更有效的和有效的方式
    一个c++ OCX,用于在应用程序的任何窗口上绘图
  • 原文地址:https://www.cnblogs.com/herso/p/1430261.html
Copyright © 2020-2023  润新知