Windows API Inlinehook库基本使用-MinHOOK
本帖最后由 bester 于 2021-5-24 17:03 编辑#### 下载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。
bester 发表于 2021-5-24 19:25
Mhook和MinHook是两个不同的库
哈哈,我是说怎么看着眼熟。
大佬有时间的话,要不补充下这两个库的异同,优缺点吧,方便像我这样的菜鸟学习!十分感谢! sam喵喵 发表于 2021-5-24 19:29
哈哈,我是说怎么看着眼熟。
大佬有时间的话,要不补充下这两个库的异同,优缺点吧,方便像我这样的菜鸟 ...
后续会出,现在只是作铺垫 感谢大神, 这个之前是不是发过一次,有哪些更正吗 sam喵喵 发表于 2021-5-24 19:16
这个之前是不是发过一次,有哪些更正吗
Mhook和MinHook是两个不同的库 bester 发表于 2021-5-24 19:30
后续会出,现在只是作铺垫
Detour这个是不是收费的,MinHOOK里面用到的可以免费用吗 这个能用在Delphi/c++ builder上吗?{:301_1009:} sam喵喵 发表于 2021-5-24 19:33
Detour这个是不是收费的,MinHOOK里面用到的可以免费用吗
minhook和mhook都是免费的 冥界3大法王 发表于 2021-5-24 19:40
这个能用在Delphi/c++ builder上吗?
如果支持C++语法的话,我想mhook是能用的
页:
[1]
2