已安装的windows挂钩列表
如何获取Windows中全局安装的钩子列表(使用SetWindowsHookEx API)?一种不好的方法是在其他任何钩子函数有机会之前钩住所有钩子函数。请参阅已安装的windows挂钩列表,windows,winapi,hook,Windows,Winapi,Hook,如何获取Windows中全局安装的钩子列表(使用SetWindowsHookEx API)?一种不好的方法是在其他任何钩子函数有机会之前钩住所有钩子函数。请参阅 查找与其他操作相比的挂钩,枚举已安装的 钩子很容易 特定于线程的挂钩记录在每个线程的win32k数据中 结构被标记为THREADINFO,这是一种相当富有想象力的方式。这是 基本上是一个类似ETHREAD/TEB的结构,但需要定制 专门用于用户和gdi信息。其成员之一 (aphkStart)是一个16元素的指针数组,每个指
或相关的问题和答案在这里
但是我仍然没有找到一个可靠的方法来做这件事。@DavidStratton我想他是在要求列出所有调用
SetWindowsHookEx
的东西。SetWindowsHookEx将应用程序定义的钩子过程安装到钩子链中。我想要这条钩链。这条信息有什么用?如果您试图检测应用程序是否已被钩住,攻击者只会钩住虚构的EnumerateHooks
函数!我想检测系统中安装的键盘记录器。在本页底部,请不要在我的机器上使用它。我知道可以安装我自己的钩子,它将在任何其他钩子之前被调用,但它不能告诉我的钩子调用CallNextHookEx时有多少注册的钩子,而不是那种钩子。导入SetWindowsHookEx
上的函数挂钩。这样你就可以计算进程调用该函数的时间。我明白了,但我如何确保在有人调用SetWindowsHookEx之前钩住它?从驱动程序开始,并尽最大努力使它成为第一个加载到系统的驱动程序。“在其他任何程序有机会之前”?在你找到你的钩子之前,怎样才能阻止某些东西这么做呢?“此网页不可用”。具体请参见:“为链接提供上下文:鼓励链接到外部资源,但请在链接周围添加上下文,以便您的其他用户了解它是什么以及为什么存在。始终引用重要链接的最相关部分,以防无法访问目标网站或永久脱机。”
struct tagHOOK
{
THRDESKHEAD head; // info about the creator
struct tagHOOK* phkNext; // next entry in linked list
int iHook; // WH_ hook type
UINT_PTR offPfn; // RVA to hook function in ihmod library
UINT flags; // HF_ flags (GLOBAL, ANSI)
int ihmod;
THREADINFO* ptiHooked; // the hooked thread
PVOID rpDesk; // saved desktop pointer
ULONG nTimeout :7;
ULONG fLastHookHung :1;
};