看流星社区

 找回密码
 注册账号
查看: 2917|回复: 2

Ring3系统消息钩子实现

[复制链接]

该用户从未签到

发表于 2011-8-8 14:04:48 | 显示全部楼层 |阅读模式
游客,如果您要查看本帖隐藏内容请回复
  1. //MsgHook.h


  2. #ifndef    __MSGHOOK__
  3. #define __MSGHOOK__


  4. int EnumMessageHook(CSortListCtrl *m_MessageHookList);
  5. //////////////////////////////////////////////////////////////////////////
  6. typedef enum  _HANDLE_TYPE
  7. {
  8.     TYPE_FREE = 0  ,                  //must be zero!
  9.         TYPE_WINDOW = 1 ,                 //in order of use for C code lookups
  10.         TYPE_MENU = 2,
  11.         TYPE_CURSOR = 3,
  12.         TYPE_SETWINDOWPOS = 4,
  13.         TYPE_HOOK = 5,
  14.         TYPE_CLIPDATA = 6  ,              //clipboard data
  15.         TYPE_CALLPROC = 7,
  16.         TYPE_ACCELTABLE = 8,
  17.         TYPE_DDEACCESS = 9,
  18.         TYPE_DDECONV = 10,
  19.         TYPE_DDEXACT = 11,          //DDE transaction tracking info.
  20.         TYPE_MONITOR = 12,
  21.         TYPE_KBDLAYOUT = 13   ,           //Keyboard Layout handle (HKL) object.
  22.         TYPE_KBDFILE = 14    ,            //Keyboard Layout file object.
  23.         TYPE_WINEVENTHOOK = 15  ,         //WinEvent hook (EVENTHOOK)
  24.         TYPE_TIMER = 16,
  25.         TYPE_INPUTCONTEXT = 17  ,         //Input Context info structure
  26.         TYPE_CTYPES = 18         ,        //Count of TYPEs; Must be LAST + 1
  27.         TYPE_GENERIC = 255               //used for generic handle validation
  28. }HANDLE_TYPE;

  29. typedef enum  _HOOK_TYPE{
  30.     MY_WH_MSGFILTER = -1,
  31.         MY_WH_JOURNALRECORD = 0,
  32.         MY_WH_JOURNALPLAYBACK = 1,
  33.         MY_WH_KEYBOARD = 2,
  34.         MY_WH_GETMESSAGE = 3,
  35.         MY_WH_CALLWNDPROC = 4,
  36.         MY_WH_CBT = 5,
  37.         MY_WH_SYSMSGFILTER = 6,
  38.         MY_WH_MOUSE = 7,
  39.         MY_WH_HARDWARE = 8,
  40.         MY_WH_DEBUG = 9,
  41.         MY_WH_SHELL = 10,
  42.         MY_WH_FOREGROUNDIDLE = 11,
  43.         MY_WH_CALLWNDPROCRET = 12,
  44.         MY_WH_KEYBOARD_LL = 13,
  45.         MY_WH_MOUSE_LL = 14
  46. }HOOK_TYPE;


  47. typedef struct HANDLEENTRY{
  48.     PVOID  phead;          //pointer to the real object
  49.     ULONG  pOwner;          //pointer to owning entity (pti or ppi)
  50.     BYTE  bType;           //type of object
  51.     BYTE  bFlags;       //flags - like destroy flag
  52.     short  wUniq;       //uniqueness count
  53. }HANDLEENTRY,*PHANDLEENTRY;

  54. typedef struct SERVERINFO{     //si
  55.     short wRIPFlags ;               //RIPF_ flags
  56.     short wSRVIFlags ;              //SRVIF_ flags
  57.     short wRIPPID ;              //PID of process to apply RIP flags to (zero means all)
  58.     short wRIPError ;              //Error to break on (zero means all errors are treated equal)
  59.     ULONG cHandleEntries;          //count of handle entries in array
  60. }SERVERINFO,*PSERVERINFO;

  61. typedef struct SHAREDINFO{
  62.     PSERVERINFO psi;                   //tagSERVERINFO
  63.     PHANDLEENTRY aheList;                //_HANDLEENTRY - handle table pointer
  64.     ULONG pDispInfo;              //global displayinfo
  65.     ULONG ulSharedDelta;           //delta between client and kernel mapping of ...
  66. }SHAREDINFO,*PSHAREDINFO;



  67. typedef struct HEAD
  68. {
  69.     HANDLE h;
  70.     ULONG cLockObj;
  71. }HEAD;

  72. typedef struct THROBJHEAD
  73. {
  74.     HEAD headinfo;
  75.     PVOID pti; //PTHREADINFO
  76. }THROBJHEAD;

  77. typedef  struct DESKHEAD
  78. {
  79.     PVOID rpdesk; //PDESKTOP
  80.     PBYTE pSelf ; //PBYTE
  81. }DESKHEAD;

  82. typedef struct THRDESKHEAD
  83. {
  84.     THROBJHEAD ThreadObjHead ;
  85.     DESKHEAD DesktopHead ;
  86. }THRDESKHEAD;

  87. typedef  struct HOOK  //hk
  88. {
  89.     THRDESKHEAD tshead ;
  90.     HOOK * phkNext ;
  91.     HOOK_TYPE iHook;           //// WH_xxx hook type
  92.     ULONG offPfn;        //函数地址偏移
  93.     UINT flags ;           //// HF_xxx flags
  94.     int  ihmod ;
  95.     PVOID ptiHooked;          ////PTHREADINFO - Thread hooked.
  96.     PVOID rpdesk ;              //// Global hook pdesk. Only used when  hook is locked and owner is destroyed
  97. }HOOK,*PHOOK;

  98. typedef struct W32THREAD
  99. {
  100.     //W32THREAD
  101.     PVOID    pEThread ;
  102.     ULONG   RefCount ;
  103.     ULONG  ptlW32 ;
  104.     ULONG  pgdiDcattr ;
  105.     ULONG   pgdiBrushAttr ;
  106.     ULONG   pUMPDObjs ;
  107.     ULONG    pUMPDHeap ;
  108.     ULONG    dwEngAcquireCount ;
  109.     ULONG    pSemTable ;
  110.     ULONG    pUMPDObj ;
  111.     //*********************
  112.     PVOID ptl;
  113.     PVOID ppi;
  114. }W32THREAD;
  115.   

  116. typedef struct MsgHookInfo
  117. {
  118.     HANDLE  hHook ;
  119.     HOOK_TYPE     iHookType;
  120.     PVOID   pEThread ;
  121.     ULONG    offPfn ;
  122.     PVOID modBase;
  123.     PVOID funAdd;
  124.     ULONG TID;
  125.     ULONG PID;
  126. }MsgHookInfo;






  127. #endif


复制代码

该用户从未签到

发表于 2019-3-28 14:42:21 | 显示全部楼层
支持楼主,支持看流星社区,以后我会经常来!

该用户从未签到

发表于 2019-3-28 17:36:35 | 显示全部楼层
支持楼主,支持看流星社区,以后我会经常来!
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-4-20 19:36

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表