一个完整的hook,如果hook程序是以dll形式生成的,是分两步:1.完成dll本身的设计和生成,2.完成dll注入程序的设计和生成
本文完成第一步。
第二步在http://blog.csdn.net/arvon2012/article/details/7767437有详细讲解。
最近在64位win7上hook文件复制,拖拽和剪切的hook(这个要通过hook IFileOperating接口实现)。所以学习了API hook。这里是对自己的学习做个简单的总结,希望和hook新手们共同探讨和进步~~~
最后有全部源码下载地址(无毒无害)
inline hook API的原理:
最简单的说,hook api就是找到api所在的位置,然后在这个位置里做些文章。这样,当系统调用这个API的时候,它不知不脚的就运行了我们篡改过的代码,达到我们不可告人的目的~~~网上介绍用detour库进行APIhook,detour库是微软开发的专用的api hook库,内部hook原理和inline hook是一样的,但是因为添加了一些处理调用冲突的代码,所以会比直接手工inline hook稳定些。
而上面说的“做文章”,具体是干什么呢?还是根据例子说的清楚。
下面是一个helloworld级别的hook api,目标:(弹出对话框函数:MessageBoxW)
第一步:找到要hook的api!
我们想hook住这个MessageBoxW,就要知道系统调用它的时候,它在哪里。有些童鞋懂应该上MSDN查,然后大声吼出:在windows.h!!
擦!少年~你弱爆了(其实我在描述当时自学的自己,不是说你的,亲~)。
要知道windows系统在调用这些函数的时候,他们调用的当然是编译好的可执行函数(动态链接库--dll文件),当然不是调用源代码。MSDN这个函数的头文件下面就写着:
| DLL |
|
|---|

本文介绍了API Hook的基本原理和一个简单的实现案例,特别是在64位Windows系统上的应用。首先,文章阐述了如何找到并hook API函数,接着展示了如何使用inline hook来替换API函数的原始代码,实现功能的篡改。文中还提到,虽然Detour库提供更稳定的API Hook方案,但本文选择直接进行inline hook以展示核心原理。最后,作者分享了生成DLL并利用DLL注入技术实现在目标进程中进行API Hook的方法,强调在64位环境下需要注意的部分。
,以dll线程注入方式使用(win7-64bit)&spm=1001.2101.3001.5002&articleId=7766439&d=1&t=3&u=399ac0d59e1048e29d76b79479e0a71d)
3万+

被折叠的 条评论
为什么被折叠?



