Tea9源码网 - 免费分享精品源码、教程、软件|全网干货资源收集,免费下载。

Windows API Inlinehook库基本使用-MinHOOK

发布:资源收集工2021-6-4 8:25分类: 其它源码 标签: Hook源码 VC

下载MHOOK库


下载地址:

https://github.com/TsudaKageyu/minhook/releases //源码

https://github.com/liunan1111/use-example-of-minhook //例子

添加到VC工程


需要的文件:<br>
1.libMinHook.x86.lib

2.MinHook.x86.lib

必要的项目设置


1.常规--字符集--使用Unicode字符集<br>
2.调试--命令   设置加载该动态链接库的宿主进程,需注意的是宿主进程需主动调用该动态链接库,如需远程注入调用,则无法使用VS进行调试动态链接库代码

实际应用


MH_Initialize 初始化

MH_CreateHook 创建HOOK

MH_EnableHook 开启HOOK

MH_DisableHook 关闭HOOK

MH_RemoveHook 卸载HOOK

MH_Uninitialize 卸载初始化   

//该翻译仅为我个人理解


1.打开minhook-master\build\VC16中的MinHookVC16.sln文件,由于我的是vs2017 所以我直接选的是vc16,根据对于的vs版本选择对应的文件夹

2.点击生成--生成解决方案,得到libMinHook.x86.lib和MinHook.x86.lib并复制到我们的dll项目文件夹当中并引入

3.在我们的dll项目中的dllmain.cpp的最上边,include代码的下边,添加

#pragma comment(lib, "MinHook.x86.lib")

#pragma comment(lib, "libMinHook.x86.lib")

4.将minhook-master中的include文件夹复制到我们的dll项目文件夹当中并引入

#include"./include/MinHook.h"

5.由于我是调试环境,所以我用MFC写了一个demo动态加载DLLHOOK动态链接库,所以我写了一个没用hello导出函数,像远程注入到其他进程的话,不需要写这个导入函数

6.MinHOOK 相对于mhook使用是复杂些的,MH_CreateHook(&MessageBoxA, &DetourMessageBoxW, reinterpret_cast<LPVOID*>(&P_MyMessage)) != MH_OK  中注意,第一个是API函数,第二个是中转函数,第三个是函数指针

7.图中DetourMessageBoxW应该是DetourMessageBoxA,因为参数是窄字节的,我忘记把W改成A了  hhh。

20210604082709.png20210604082736.png

温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!

已有 26 人阅读