教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 教学研究 >

第九章 动态链接库与钩子编程

来源:网络收集 时间:2026-08-25
导读: 第9 章 动态链接库与钩子 动态与静态链接库在Windows操作系统环境中,库函数类型主要有两种: 静态链接库( Static Link Library, 即 Lib), 动态链接 库(Dynamic-Link Library, 即DLL) 两种库使用的主要区别是使用静态链接库的应用程序从函 数库中得到所引用

第9 章

动态链接库与钩子

动态与静态链接库在Windows操作系统环境中,库函数类型主要有两种: 静态链接库( Static Link Library, 即 Lib), 动态链接 库(Dynamic-Link Library, 即DLL)

两种库使用的主要区别是使用静态链接库的应用程序从函 数库中得到所引用的函数的执行代码,把执行代码放进程序 自身的执行文件中, 应用程序在运行时就可以不再需要静态函数库的支持了; 而动态链接库是一种用来为其它可执行文件(包括EXE文 件和其它DLL)提供共享的函数库, 应用程序中需要使用DLL的应用程序,我们可以调用DLL中 的导出函数(imported function),

静态链接库 静态链接库的扩展名为.lib 。 应用程序在运行时就可以不再需要静态函数库的支持, 通常库中存放是常见的数学函数等。 Windows编程主要使用动态链接库,但也有许多是使用 静态链接库。

创建动态链接库工程

新建工程,选择 Win32 Dynamic-Link Library,命名; 单击OK,弹出对话框,三个中任选一项; 打开创建的文件框架并修改、添加导出函数:BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } void ExportFunc(…) // 用户自定义导出函数。

导出函数的使用 修改创建中产生的.h文件,以便函数可被其他模块调用。 装载期间链接:模块像调用本地函数一样调用其他模块的 导出函数。 运行期间的链接:模块使用LoadLibrary或LoadLibraryEx 函数在运行期间加载DLL。 在代码中明确的加载所使用的DLL,使用指针来调用 DLL中的导出函数,使用完毕之后,必须卸载。 例题见注释

Windows钩子 钩子是Windows消息处理机构中的一部分 通过钩子,应用程序可以监视系统中的消息往来 能在消息到达目的窗口过程之前处理某种类型的 消息 Windows系统中含有多种不同类型的钩子 每种类型都提供了一种Windows系统消息处理机制 中不同方面的的通路。(钩子类型取值:见注释文档)

Windows系统钩子链

Windows系统为每一种类型的钩子管理一个钩子链, 钩子链是一个指向特殊的,称为钩子过程的应用程序定 义的回调函数的指针列表。 如果有与某种特定类型钩子相应的消息,Windows系统 把这条消息一个接一个地传给钩子链中的每个钩子过程。 钩子过程的操作取决于钩子的种类,有些类型的钩子只 能监视消息,而另外一些则能够修改或停止他们在链中 的传播,禁止他们到达下一个钩子过程或窗口过程。

钩子的安装与卸载安装

钩子:SetWindowsHookEx( int idHook, // 钩子类型 HOOKPROC lpfn, // 钩子函数地址 … ); 钩子函数: LRESULT CALLBACK HookProc( int nCode, DWORD wParam, DWORD lParam); 卸载钩子:UnhookWindowsHookEx(…)

挂钩(Hook API)

Windows应用程序是建立在API上的,截获API 是一项有用的技术; 目的在于干预程序的执行流程; HOOK API 是用来截获特定进程或系统对某个 API的调用,使得API的执行转向指定代码; 最常见的一种技术是改变目标进程中调用API 函数的代码,使得他们对API的调用改为对用 户自定义函数的调用。

第九章 动态链接库与钩子编程.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1569063.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)