陷阱式APIHook的原理及其在截取串口数据中的应用..pptVIP

陷阱式APIHook的原理及其在截取串口数据中的应用..ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
陷阱式APIHook的原理及其在截取串口数据中的应用.

基本原理 and 在截取串口数据中的应用 ygm5169@ * * * * 利用API Hook技术将我们的程序代码注入其他进程 修改系统中的ReadFile、WriteFile、CreateFile和CloseHandle函数 * * 1、Windows为了保护进程而不允许进程之间的访问。 2、使用API Hook 给目标进程设置一个特定消息Hook,在发生这种消息的时候就会自动调用Hook函数。 3、Hook函数只能存在与DLL中,因为只有DLL可以“大家一起用”。 4、当Hook函数被调用时,它所在的DLL也一起映射进入了目标进程。 5、如果我们在DLL中修改了某些系统API,系统就会自动的调用我们自己定义的API,实现既定的功能。 * * WinAPI WINMAIN(…){ … SetDIPSHook … } SetDIPSHook{ SetWindowsHookEx(…) } …… Call ReadFile; …… GetMsgProc(){ } 1 目标进程载入DLPSLIB.dll (寄生程序) 同时修改ReadFile跳转到NewReadFile DLPSLIB.dll DLPSLIB.dll 2 3 共享内存 6 SimpleDIP.exe 目标进程 设定要 将GetMsgProc() 注射进 目标进程 NewReadFile(){ } SetDIPSHook{ SetWindowsHookEx(…) } GetMsgProc(){ } NewReadFile(){ } ReadFile(){ …… } 目标进程载入dll时,dll就已经成为其一部分了 4 5 思考:能直接跳转吗? 控制进程 截获的数据放在这里能够被任何进程访问 * * 只要两个函数的参数一样,即堆栈结构一样,就可以相互代替 jmp NewReadFile ReadFile函数的修改和使用 修改ReadFile 将ReadFile的第一条指令修改为jmp NewReadFile 使用ReadFile 将要写入文件的数据进行修改 将ReadFile的第一条指令还原 调用ReadFile完成其功能 将ReadFile的第一条指令修改为jmp指令 * * …… Call ReadFile …… NewReadFile(){ 还原ReadFile 调用ReadFile 修改ReadFile ret } ReadFile(){ …… ret } 调用 自定义函数 被劫持函数 * * …… Call ReadFile …… NewReadFile(){ 还原ReadFile 调用ReadFile 修改ReadFile ret } ReadFile(){ jmp NewReadFile …… ret } 调用 自定义函数 被劫持函数 1 2 3 4 1 2 3 4 5 6 7 8 9 截取串口数据,实际上就是利用上述原理修改系统的4个API:CreateFile、ReadFile、WriteFile和CloseHandle,利用NewCreateFile截获串口打开时的设备句柄,在NewReadFile和NewWriteFile中用串口设备句柄识别串口的读写操作并对其数据进行观察控制。 * * * * NewCreateFile(文件名){ 还原CreateFile; Handle = CreateFile(文件名); 修改CreateFile; if(文件名==“COM2”) 保存Handle到共享内存变量ComHandle中 } * * NewWriteFile(文件句柄,数据){ if(文件句柄=ComHandle) 修改“数据” 还原WriteFile; WriteFile(文件句柄,数据); 修改WriteFile; } * * NewReadFile(文件句柄,数据){ 还原ReadFile; ReadFile(文件句柄,数据); 修改ReadFile; if(文件句柄=ComHandle) 修改“数据” } * * NewCloseHandle(文件句柄){ 还原CloseHandle; CloseHandle (文件句柄); 修改CloseHandle; if(文件句柄=ComHandle) ComHandle=NULL; } 上述API Hook在运行中要反复修改被劫持的API。在Windows多线程环境下会出现大量的内存错误。 解

文档评论(0)

叮当文档 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档