APIHOOK实例剖析

APIHOOK实例剖析

ID:44290639

大小:136.50 KB

页数:18页

时间:2019-10-20

APIHOOK实例剖析_第1页
APIHOOK实例剖析_第2页
APIHOOK实例剖析_第3页
APIHOOK实例剖析_第4页
APIHOOK实例剖析_第5页
资源描述:

《APIHOOK实例剖析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、APIHOOK实例剖析关于APIIIOOK的基础知识有很多,女Cldll的相关知识、Ilook的相关知识、系统进程与线程Z间的联系等。具体可以看我的另两篇文章:〃我的D11(动态链接库)学习笔记〃和〃我的Hook学习笔记〃昇)下面进入这篇文章的重点,根据APIHook源码进行APIHook的剖析。一、APIHOOK之dll部分////////////////////////////////APIHook_Dll.cpp//////////////////////////////////////////rivershan写于2002.9.23//////

2、/////////////////////////////////////////////////////////////////////////////////////#inelude"stdafx.h"^includez,APTHook_Dl1.h,z#inelude#include#pragmacomment(lib,,,I^lageHlp,,)//定义全局共享数据段#pragmadataseg("Shared")HMODULEhmodDll=NULL;HHOOKhHook二NULL;#pragma

3、data_seg()#pragmacomment(linker,,Z/Section:Shared,rws,z)//设置全局共享数据段的属性/////////////////////////////////////DllMain函数///////////////////////////////////////////dll的入口点BOOLAPTENTRYDllMain(I[MODULEhModule,DWORDul_rcason_for_cal1,LPVOTD1pReserved){switch(ulreasonforcal1){caseDLL_PRO

4、CESS_ATTACH://if(sHook)caseDLL_PROCESS_DETACH:UnlnstallHook();break;}hmodDll=hModule;returnTRUE;}/////////////////////////////////////HookOneAPI函数///////////////////////////////////////////进行IAT转换的关键函数,其参数含义://pszCa11eeModu1eName:需要hook的模块名//pfnOriginApiAddress:要替换的自l2API函数的地址//

5、pfnDummyFuncAddress:需要hook的模块名的地址//hModCallerModule:我们要查找的模块名称,如果没有被赋值,voidWTNAPTHookOneAPT(LPCTSTRpszCal1eeModuleName,PROCpfnOriginApiAddress,PROCpfnDummyFuncAddress,HMODULEhModCal1erModule){ULONGsize;//获取指向PE文件中的Import中IMAGE_DIRECTORY_DESCRIPTOR数组的指针PIMAGE_IMPORT_DESCRIPTORplm

6、portDesc二(PIMAGE_IMPORT_DESCRIPTOR)ImageDirectoryEntryToData(hModCallerModule,TRUE,IMAGEDIRECTORYENTRYIMPORT,&size);i.f(plmportDesc==NULL)return;//查找记录,看看有没有我们想要的DLLfor(;pImportDesc->Namc;plmportl)esc++){LPSTRpszDllName=(LPSTR)((PBYTE)hModCallerModule+pImportDesc->Name);if(1strc

7、mpiA(pszDlIName,pszCal1eeModuleName)==0)break;Iif(pImportDcsc->Namc二二NULL)return;}//寻找我们想要的函数PTMAGE_TIIUNK_DATApThunk二(PIMAGE_THUNK_DATA)((PBYTE)hModCallerModule+pImportDesc->FirstThunk);//IATfor(;pThunk->ul.Function;pThunk++){//ppfn记录了与IAT表和应的函数的地址PROC*ppfn二(PROC*)&pThunk->ul.F

8、unction;if(*ppfn二二pfnOriginApiAddress){//如果地址和同

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。