《Windows核心编程》之“API Hooking”(一)

本文深入探讨了《Windows核心编程》中的API Hooking技术,包括两种方法:代码覆盖和修改导入段。API Hooking用于拦截API调用,扩展其功能,如资源清理。文中介绍了导入段和导出段的概念,以及如何通过修改导入段实现API Hooking,详细解析了运行时调用过程和IAT的填充机制。
摘要由CSDN通过智能技术生成

    《Windows核心编程》中介绍了两种API Hooking的方法 —— “Overwritting Code”(代码覆盖)和“API Hooking by Manipulating a Module's Import Section”(修改导入段)。本文在以学习这两种API Hooking为目的,介绍相关的内容,包括:API Hooking的作用、导入段的获取和修改、detours库、使用WM_COPYDATA进行进程间通信、UIPI等知识。


一、What is API Hooking

    先来看Stack Overflow上对这个问题的答案:http://stackoverflow.com/questions/10562055/what-is-subclassing-and-api-hooking

    它的大意就是:API Hooking与Subclassing类似,都是通过拦截Windows固有的流程,添加自定义代码,来扩展新特性。Subclassing主要是拦截window message,扩展WndProcedure的特性;API Hooking主要是拦截应用程序对Windows API的调用,从而改变(扩展)Windows API的原有行为。广义来说,API Hooking不但可以拦截Windows API,也可以用于拦截一些第三方DLL库的API。

    API Hooking有什么用?

    Jeffrey从他遇到的一个客户需求——数据库扩展DLL卸载时的资源清理问题,引入API Hooking技术,控制“ExitProcess”系统函数的行为,让它先调用客户DLL的某个资源清理函数,待客户DLL清理完毕后,再执行原始的“ExitProcess”,卸载进程的各个DLL模块(顺序不可控)。

    除此之外,我还想到一个修改第三方DLL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值