HOOK Windows API

本文详细介绍了HOOK Windows API的步骤,包括定义假API函数、获取API函数入口、保存和恢复API入口的前5个字节,适用于学习API HOOK技术。

HOOK Windows API

只能HOOK 本地的API,适用于入门学习

HOOK API的一般步骤:

1.定义假API函数

假API函数,除了函数名称和真API不一样之外,其它的都要跟真API的定义相同,如参数类型和返回值、调用形式等。

int WINAPI MyMessageBoxW(HWND hWnd,LPCWSTR lpText,LPCWSTR lpCaption,UINT uType)
{
//定义假API时,具体的函数体代码暂时可不写…
return 0;
}

2.定义API函数类型

定义API函数类型,来定义一个变量保存获取到的真API函数的地址

//原函数类型定义
typedef int (WINAPI* MsgBoxW)(HWND hWnd,LPCWSTR lpText,LPCWSTR lpCaption,UINT uType);
原函数类型定义中的函数返回值和参数类型要跟MessageBoxW的定义相同。

定义一个变量保存获取到的真API函数的地址

MsgBoxW OldMsgBoxW=NULL;//指向原函数的指针

因为系统API是在dll文件中的,有了API函数类型后,还需要一个远指针类型的变量

FARPROC pfOldMsgBoxW; //指向函数的远指针

3.获取API函数入口

有了保存原API函数地址的变量OldMsgBox和指向原API函数的远指针,就可以获取真API的地址了

//获取原API入口地址
HMODULE hmod=::LoadLibrary(_T(“User32.dll”));
OldMsgBoxW=(MsgBoxW)::GetProcAddress(hmod,“MessageBoxW”);
pfOldMsgBoxW=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值