[Windows Hook]MinHook库的使用方式


MinHook的GitHub地址: https://github.com/TsudaKageyu/minhook

官方文档说明:MinHook - The Minimalistic x86/x64 API Hooking Library

MinHook就是通过Inline Hook实现的,通过生成库文件,在我们的项目中包含头文件以及对应库文件就可以实现Hook。

学习一个库,先学习怎么用,然后再阅读源码学习原理。

1.Hook

简单引入:

“Hook” 翻译过来的意思是“挂钩” “钩子”,在程序执行的时候,在适当的位置对程序运行流程进行监控拦截即为Hook技术。

这里可以看我之前的文章:《Windows Hook的简单介绍——此树是我栽,此路是我开》

2.MinHook

极简主义的x86/x64API挂钩库.

MinHook通过Inline Hook实现的,通过生成库文件,在我们的项目中包含头文件以及对应库文件就可以实现Hook。

2.1文件结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DqeOSf22-1634385579059)(C:\Users\11073\AppData\Roaming\Typora\typora-user-images\image-20211014224154089.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存失败,源站可能有防盗链机制,建议将图片保存下来直接上传下上传(i2Xz9guPZKbw-1634380852832)(C:\Users\11073\AppData\Roaming\Typora\typora-user-images\image-20211014224154089.png)(C:\Users\11073\AppData\Roaming\Typora\typora-user-images\image-20211014224154089.png)]

build目录:包含各种版本解决方案,可以选择对应的

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
运行时 hook 动态是一种动态修改程序运行过程中函数行为的技术。在运行时,动态通过修改函数的代码或者替换函数的入口地址来改变函数的行为。这在许多场景中非常有用,比如在调试程序、分析程序行为或者实现动态插桩等方面。 要实现运行时 hook 动态,一般需要以下步骤: 1. 加载目标程序和目标函数所在的动态。可以使用诸如`dlopen()`函数之类的函数来加载动态,并使用`dlsym()`函数获取目标函数的地址。 2. 修改目标函数的代码或者替换函数的入口地址。可以通过修改函数的二进制代码来实现,也可以通过将目标函数的入口地址替换为自定义的函数地址来完成。这样,在程序执行到目标函数时,将会跳转到我们自己的代码中执行。 3. 编写自定义的代码来替代目标函数的行为。自定义的代码可以实现各种功能,比如记录函数调用信息、修改函数参数或返回值等。 4. 执行目标程序。当目标程序执行到目标函数时,会跳转到自定义的代码中执行。我们可以在自定义的代码中改变函数的行为,或者在执行完自定义代码后再调用原始的目标函数来实现原功能。 总之,运行时 hook 动态是一种强大的技术,可以在不修改目标程序源代码的情况下改变程序的行为。通过加载目标程序和动态,并修改目标函数的代码或替换入口地址,可以实现自定义的功能。这为调试、分析和插桩等应用场景提供了很大的便利。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值