版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
功能简HookAPIWindows32APIWindowsAPIHookAPIDLL1.5系统特点APIDelphiVBInstDLLHookAPI运行和开发平台为Windows包含的文件列表【 :调用InstHook.dll来安装HookAPI的执行程【 :安装HookAPI的DLL程【 :NT/2000/XP/XP下截获32位API函数的DLL程【HOOKAPI9x.dllWin9x32APIDLL【 :HookAPI.exe的源【 :截获Socket函数的mydll例【 :截获表函数的mydll例【 :截获文件存取的mydll例【 :win9x下的截获文件存取的mydll_9x例【 :截获文件存取的Delphi下的mydll的例【 :截取Socket函数的Delphi下的mydll的例InstHook.dll中的安装/卸载函数就可以实现自己的截获过程。开发指用户需要做的就是编写一个替换老API函数的mydll.dll,并在自己的程序中调用InstHook.dll中的安装/卸载函数就行了。Mydll文件的编写DLLmydll_9x.dll,其他操作系统(NT/2K/XP)mydll.dllmydll.cppDLLmydll.def4)mydll.dll/mydll_9x.dllmydll.cpp文件的编从三个例子程序可以看出,mydll.cpp文件其实非常简单,它包含如下内容1)mydll.hMYAPIINFO结构说明:typedefstruct{char*module_name;char*function_name;char*myfunc_name;module_nameDLLfunction_nameAPIDLLC中的说明格connect函数为:connect(SOCKET,structsockaddr*,INT)myfunc_name为自己编写的替代函数的名称,如自己编写了myconnect函数,则为win9x下的dll文件(mydll_9x.dll)#ifdef#pragma#pragmacomment(linker,"/SECTION:.bss,RWS/SECTION:.data,RWSwin9xdll文件(mydll_9x.dll){{"WSOCK32.DLL","socket(INT,INT,INT)",{"WSOCK32.DLL","connect(SOCKET,structsockaddr*,INT)",{"WSOCK32.DLL","recv(INT,char*,INT,INT)",{"WSOCK32.DLL","send(INT,char*,INT,INT)", MYAPIINFO*GetMyAPIInfo(){return}DWORD ame(type1param1,type2,param2,其中函数必须为WINAPI调用方式(Delphi下为stdcall),函数的参数必须和原api函数intWINAPImyconnect(SOCKETs,structsockaddr*name,int{structsockaddr_in*paddr=(structsockaddr_inchar*ip=inet_ntoa(paddr->sin_addr);intport=ntohs(paddr->sin_port);intret=connect(s,name,namelen);interr=WSAGetLastError();Wriog("connect:ip=%s,port=%d,ret=%d\n",ip,port,//checkfilterreturnret;}函数connect,那么在myconnect返回时,也要使用WSASetLastError或SetLastError来正确另外,在win9x下,最好在mydll中调用一下任意一个原先的api函数,以便mydll能调用dllHook不成功。mydll.def文件的编mydll.defGetMyAPIInfo InstallHook.dll文件的使InstHook.dll中的内容很简单,只有四个函数(InstHook.h):1)intWINAPIInitHookAPI();2)intWINAPImydllAPI3)intWINAPIUnhookAllProcesses();mydll4)intWINAPINTHookProcess(DWORDNTmydllAPI,进程必须已经存在5)intWINAPINTUnhookProcess(DWORDprocess_id);NTmydllAPIintWINAPINTHookProcess2(charNTHookmod_nameintWINAPINTUnhookProcess2(char此函数在NT下Unhook此函数在NT下截获和替换某个文件或模块名为mod_name的进程,例子说Socket函数的例本例子中演示了截获Windows32位SocketAPIDLL文件为WSOCK32.dll,socket,connect,recv,send。mysocketsocket()socket值,从而在所有的socket函数调用中实现虚网络调用,应用程序。myconnect函数:写日志。用户可以在此如下修改myconnect函数:不调用connect()而直接返回成功,应用程序;connect另外一个主机地址;connect另外一个端口。myrecvmyrecvrecv()函数而直接填充自己的buf,应用程序;调用recv,记录分析接收的数据包;调用recv,数据recvsend和另一端再次通讯;等等。mysend函数:写日志。用户可以在此如下修改mysend函数:不调用send()函数而直接返回成功,应用程序;记录分析要发送的数据包;加密数据包(使用另一个buffer),然send将加密包发送出去;等等。SocketAPI并不能获取所有系统对网络存取的内容,如驱动程序对网络的截获表函数的例于去除日期限制等应用。但截获标准表API并不能获取所有系统对文件存取的内容,如驱动程序对表的存取,如果要截获所有表存取情况,可以看regmon的源码,在编程上有。截获文件存取的例情况,可以看filemon的源码,在编程上有。根据上述例子,用户可以编写自己感的mydll,截获系统API或某些应用程序附带的dll中的函数的使用情况,来实现自己的特殊功能,如通过截获CreateProcessW来限编译和运myd
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 村庄人防规划方案
- 材料采购税务优化研究报告
- 2021年瑞祥实验学校学生健康体检实施方案
- 调价函格式范文
- 地下排水设施建设方案
- 2024年北京市公租房居民互助协议
- 武汉市某大型高层住宅小区消防系统工程施工组织设计方案
- 2024年外遇离婚协议书
- 港口建设BIM、CIM技术应用方案
- 2024年医院护士雇佣合同范本
- 第一章第三节《氧化还原反应》第一课时高一上学期化学人教版(2019)必修第一册
- 高三政治月考试卷讲评
- 蓝色简约风中国空军成立75周年纪念日
- 期中考试卷(试题)-2024-2025学年苏教版二年级数学上册
- 2024年全国企业员工全面质量管理知识竞赛题库(含答案)(共132题)
- 《国有企业采购操作规范》【2023修订版】
- 野生动物管理学智慧树知到答案章节测试2023年东北林业大学
- 城市经济学习题与答案
- 迅达SWE30-100K自动扶梯电路分析_图文
- 唐朝服饰.ppt
- 医院保密工作总结(共5篇)
评论
0/150
提交评论