高级内存代码注入技术样本.pdfVIP

  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文档。上传文档
查看更多
资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 高级内存代码注入技术 1、 概述 1.1 PE 注入 我们知道进程注入的方法分类主要有以下几种 : DLL注入 利用注册表注入 利用 Windows Hooks注入 利用远程线程注入 利用特 洛伊 DLL注入 不带 DLL 的注入 直接将代码写入目标进程 , 并启动远程线程 本文中的技术不同于以往的 DLL注入和 shellcode 注入。经过此方法可将一个进 程的完整镜像完全注入到另外一个进程的内存空间中 , 从而在一个进程空间中 包含了两套不同的代码。与 DLL注入相比 , PE 注入的主要优势是不需要很多文 件 , 只需要 MAIN.EXE注入到其它进程并唤起自身代码即可。 1.2 影响 利用该方法能够达到一下多个效果 : 创立 Socket 及网络访问 访问文件系统 创立线程 访问系统库 访问普通运行 时库 远控 键盘记录 2、 技术原理 2.1 进程代码注入 资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 将代码写入进程的方法较简单 , Windows提供了进程内存读取和写入的系统 API 。 首先需要获取某个进程的 PID 号 , 然后打开该进程 , 能够利用 Kernel32 链接库 中的 OpenProcess 函数实现。 注 : 远程打开进程是受限的 , 从 Vista 起, 就存在了类似 UAC之类的防护措施。 其中主要的进程内存保护机制是 Mandatory Integrity Control( MIC) 。MIC 是基于”完整性级别” 的对象访问控制保护方法。 完整性级别包括如下四个级别 : 低级别 : 被限制访问大部分系统资源 ( 如 IE) ; 中级别 : 开启 UAC时非特权用 户和管理员组用户启动的进程 ; 高级别 : 以管理员权限启动的进程 系统级别 : SYSTEM用户启动的进程 , 如系统服务。 根据以上完整性级别要求 , 我们的进程注入将只允许注入低级别或同等级别的 进程。 本文将利用 explorer.exe 来举例 , 远程打开进程后利用 VirtualAllocEx 函数申 请一段可保存本进程镜像的内存段 , 为了计算需要的内存大小我们能够经过读 取 PE头信息来获取。 ? 1 /* 获取进程模块镜像 */ 2 3 module = GetModuleHandle(NULL); 4 5 /* 获取 PE头信息 */ 6 7 8 9 /* 获取代码长度 */ 10 11 DWORD moduleSize = headers-OptionalHeader.SizeOfImage; 资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 2.2 获取二进制地址 代码注入中遇到的一个常见问题是模块的基地址会不断变化的问题。 一般情况下 , 当进程启动时 , MAIN 函数的基地址是 0当我们将代码注入到其它进 程中时 , 新的基地址将产生在虚拟地址中不可预测的位置。 在一个 EXE文件中 , 编译和链接后 , 所有的代码和数据地址都是固定的 , 并建 立在虚拟内存基址。 对于 PE注入 , 需要使用完整地址指针来修改数据的基地址

文档评论(0)

火化 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档