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=

本文详细介绍了HOOK Windows API的步骤,包括定义假API函数、获取API函数入口、保存和恢复API入口的前5个字节,适用于学习API HOOK技术。
最低0.47元/天 解锁文章
2万+

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



