day13 – 钩子和服务
作者:互联网
远程线程注入dll卸载
FreeLibraryAndExitThread
将已加载的动态链接库(DLL)的引用计数减一,然后调用 ExitThread终止调用线程。该函数不返回。
void FreeLibraryAndExitThread(
HMODULE hLibModule,
DWORD dwExitCode
);
参数
hLibModule
DLL模块的句柄,其引用计数函数递减。在 调用LoadLibrary或 GetModuleHandleEx函数返回该句柄。
不要使用GetModuleHandleEx函数(带有GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT标志)或GetModuleHandle函数返回的句柄来调用此函数,因为它们不维护模块的引用计数。
dwExitCode
调用线程的退出代码。
一般加上一个sleep
windows HOOk(钩子)又称(偷窥)
局部钩子-只能查看自己的窗口信息
全局钩子-可以看系统范围里的所有的消息
将应用程序定义的挂钩过程安装到挂钩链中。您将安装一个挂钩过程来监视系统中的某些类型的事件。这些事件与特定线程或与调用线程在同一桌面上的所有线程相关联。
SetWindowsHookEx
HHOOK SetWindowsHookExA(
int idHook,
HOOKPROC lpfn,
HINSTANCE hmod,
DWORD dwThreadId
);
参数
idHook
类型:int
要安装的挂钩过程的类型。此参数可以是以下值之一。
参数
价值 | 意义 |
---|---|
WH_CALLWNDPROC4 | 在系统将消息发送到目标窗口过程之前,安装用于监视消息的挂钩过程。有关更多信息,请参见CallWndProc挂接过程。 |
WH_CALLWNDPROCRET12 | 安装挂钩过程,以监视目标窗口过程处理完的消息。有关更多信息,请参见CallWndRetProc挂接过程。 |
WH_CBT5 | 安装一个挂钩程序,该程序接收对CBT应用程序有用的通知。有关更多信息,请参见CBTProc挂钩过程。 |
WH_DEBUG9 | 安装一个钩子程序,对调试其他钩子程序很有用。有关更多信息,请参见DebugProc挂钩过程。 |
WH_FOREGROUNDIDLE11 | 安装一个挂钩程序,当应用程序的前台线程即将变为空闲时,该挂钩程序将被调用。该挂钩对于在空闲时间执行低优先级任务很有用。有关更多信息,请参见ForegroundIdleProc挂钩过程。 |
WH_GETMESSAGE3 | 安装挂钩过程,以监视发布到消息队列的消息。有关更多信息,请参见GetMsgProc挂钩过程。 |
WH_JOURNALPLAYBACK1个 | 安装一个挂接过程,该挂接过程将发布以前由WH_JOURNALRECORD挂接过程记录的消息。有关更多信息,请参见JournalPlaybackProc挂钩过程。 |
WH_JOURNALRECORD0 | 安装一个挂接过程,该过程记录发布到系统消息队列中的输入消息。该钩子对于记录宏很有用。有关更多信息,请参见JournalRecordProc挂钩过程。 |
WH_KEYBOARD2个 | 安装挂钩过程,以监视击键消息。有关更多信息,请参见KeyboardProc挂接过程。 |
WH_KEYBOARD_LL13 | 安装钩子过程,以监视低级键盘输入事件。有关更多信息,请参见LowLevelKeyboardProc挂钩过程。 |
WH_MOUSE7 | 安装监视鼠标消息的挂钩过程。有关更多信息,请参见MouseProc挂钩过程。 |
WH_MOUSE_LL14 | 安装钩子过程,以监视低级别的鼠标输入事件。有关更多信息,请参见LowLevelMouseProc挂钩过程。 |
WH_MSGFILTER-1 | 安装挂钩过程,以监视由于对话框,消息框,菜单或滚动条中的输入事件而生成的消息。有关更多信息,请参见MessageProc挂钩过程。 |
WH_SHELL10 | 安装一个挂钩程序,该程序接收对外壳应用程序有用的通知。有关更多信息,请参见ShellProc挂钩过程。 |
WH_SYSMSGFILTER6 | 安装挂钩过程,以监视由于对话框,消息框,菜单或滚动条中的输入事件而生成的消息。挂钩过程会在与调用线程相同的桌面中监视所有应用程序的这些消息。有关更多信息,请参见SysMsgProc挂接过程。 |
lpfn
类型:HOOKPROC
指向钩子过程的指针。如果dwThreadId参数为零或指定由其他进程创建的线程的标识符,则lpfn参数必须指向DLL中的挂钩过程。否则,lpfn可以指向与当前进程关联的代码中的挂钩过程。
hmod
类型:HINSTANCE
DLL的句柄,其中包含由lpfn参数指向的挂钩过程。所述HMOD参数必须设置为NULL,如果dwThreadId参数指定由当前进程,并且如果钩子程序是与当前过程相关联的所述代码中创建的线程。
dwThreadId
类型:DWORD
挂钩过程将与之关联的线程的标识符。对于桌面应用程序,如果此参数为零,则挂钩过程与与调用线程在同一桌面上运行的所有现有线程相关联。对于Windows应用商店应用程序,请参阅“备注”部分。
返回值
类型:HHOOK
如果函数成功,则返回值是挂钩过程的句柄。
如果函数失败,则返回值为NULL。要获取扩展的错误信息,请调用GetLastError。
删除通过SetWindowsHookEx函数安装在挂钩链中的挂钩过程。
BOOL UnhookWindowsHookEx(
HHOOK hhk
);
参数
hhk
类型:HHOOK
钩子的手柄将被卸下。此参数是通过上一次调用SetWindowsHookEx获得的挂钩句柄。
返回值
类型:布尔
如果函数成功,则返回值为非零。
如果函数失败,则返回值为零。要获取扩展的错误信息,请调用GetLastError。
标签:安装,服务,钩子,挂钩,WH,线程,day13,过程 来源: https://www.cnblogs.com/zaixialongaotian/p/15116178.html