bester 发表于 2021-5-24 16:57

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。




sam喵喵 发表于 2021-5-24 19:29

bester 发表于 2021-5-24 19:25
Mhook和MinHook是两个不同的库

哈哈,我是说怎么看着眼熟。
大佬有时间的话,要不补充下这两个库的异同,优缺点吧,方便像我这样的菜鸟学习!十分感谢!

bester 发表于 2021-5-24 19:30

sam喵喵 发表于 2021-5-24 19:29
哈哈,我是说怎么看着眼熟。
大佬有时间的话,要不补充下这两个库的异同,优缺点吧,方便像我这样的菜鸟 ...

后续会出,现在只是作铺垫

王雪峰 发表于 2021-5-24 19:00

感谢大神,

sam喵喵 发表于 2021-5-24 19:16

这个之前是不是发过一次,有哪些更正吗

bester 发表于 2021-5-24 19:25

sam喵喵 发表于 2021-5-24 19:16
这个之前是不是发过一次,有哪些更正吗

Mhook和MinHook是两个不同的库

sam喵喵 发表于 2021-5-24 19:33

bester 发表于 2021-5-24 19:30
后续会出,现在只是作铺垫

Detour这个是不是收费的,MinHOOK里面用到的可以免费用吗

冥界3大法王 发表于 2021-5-24 19:40

这个能用在Delphi/c++ builder上吗?{:301_1009:}

bester 发表于 2021-5-24 19:59

sam喵喵 发表于 2021-5-24 19:33
Detour这个是不是收费的,MinHOOK里面用到的可以免费用吗

minhook和mhook都是免费的

bester 发表于 2021-5-24 20:00

冥界3大法王 发表于 2021-5-24 19:40
这个能用在Delphi/c++ builder上吗?

如果支持C++语法的话,我想mhook是能用的
页: [1] 2
查看完整版本: Windows API Inlinehook库基本使用-MinHOOK