虚拟机、虚拟环境及代码动态变形技术.pptVIP

虚拟机、虚拟环境及代码动态变形技术.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文档。上传文档
查看更多
虚拟机、虚拟环境与代码动态变形技术 玩命 目录 虚拟机保护的简介 x86虚拟机保护的构建 指令扩展式的构建 第三方虚拟机的构建 代码乱序 代码替换 花指令的构建 问题 虚拟机保护的简介 起源 保护的目的 保护的对象 保护的手段 x86虚拟机保护的构建 为什么要选取x86虚拟机 开发周期短 稳定性高 避免重定位修复 x86虚拟机保护的构建 直接使用x86虚拟机做保护的不安全性 编码的公开 对x86虚拟机解释代码保护 OPCODE表随机映射 字节码的加解密 变形后的指令处理句柄 虚拟机上下文结构随机 x86虚拟机保护的构建 x86虚拟机保护的构建 字节码的加解密 加密后指令1 - decoder(随机的密钥) - 指令1 - HASH(指令1) = key1 加密后指令2 - decoder(key1) - 指令2 - HASH(指令2) = key2 加密后指令3 - decoder(key2)- 指令3 - HASH(指令3) = key3 ... x86虚拟机保护的构建 变形后的指令处理句柄 花指令插入 指令扩展 重定位 x86虚拟机保护的构建 虚拟机上下文结构随机 结构字段的变换 虚拟机上下文重定位结构 用于与上下文结构一同传递,还原原始的上下文结构 x86虚拟机保护的构建 进入虚拟机之前要做的事情 切换堆栈 保存当前运行上下文 x86虚拟机保护的构建 异常的模拟 内存访问权限不足 未知指令 指令扩展保护 源于《扭曲加密变换》 直接作用于PE文件 指令模板化 重定位的修复 指令扩展保护 指令模板化 指令扩展保护 例如一条指令 add eax, 1 我们可以将它转化为 call ADD_EAX_1 Jmp ADD_EAX_1_END ;; 这里为垃圾代码 ADD_EAX_1: push ebp mov ebp, esp sub esp, 0x08 push ebx mov dword ptr [ebp-0x04], 5 mov ebx, 4 sub dword ptr [ebp-0x04], ebx add eax, dword ptr [ebp-0x04] mov esp, ebp pop ebp Ret ADD_EAX_1_END: 指令扩展保护 重定位修复 遍历代码,找出所有的跳转指令 随机的插入代码 重新遍历代码,找出所有的跳转指令 通过第一次找出的偏移进行新偏移的修订 第三方虚拟机 最早可以在某些crackme中见到,用于保护算法 指令编码的设计 汇编器的设计 调试器的设计 第三方虚拟机 壳的虚拟化 壳的重要部分,IAT表修复,加解密运算,反调试模块使用新的汇编语言进行编写 第三方虚拟机 用户的自定义功能扩展 编写反调试模块 增加类似真实指令的伪指令区块 第三方虚拟机 第三方虚拟机 x86代码 - 虚拟机BYTECODE 虚拟机保护可能出现的BUG 外部函数动态跳转引发的状况 从外部函数直接跳入到被保护的函数中,而不是头地址 跳转是一个动态跳转,无法修复 mov eax, BaseAddress add eax, Offset jmp eax 代码乱序 增加逆向的难度 让壳重新获得程序的控制权 代码乱序 代码替换 将要保护的代码替换为花指令,将被保护的代码放置到新的内存内。 在执行被保护的代码时跳转到新的内存。 代码替换 找到两个JMP/CALL/JCC之间的代码段并记录到结构 遍历这个结构,把要替换的代码段搬运到新的空间,在新的空间末尾添加一个跳入原先代码段结束的地址 将原先的代码块的首5个字节添加一个JMP跳入到搬运后的地址。并填充同样长度的花指令 将这个代码块除了首5个字节其余字节以花指令填充 偏移的修复 设:目标地址为y,从JMP或者CALL后取出的偏移为x, JMP或者CALL的指令长度为I,当前地址为C。 第一个公式y = C+ x + I 第二个公式y = C - (((~x) + 1) - I) 花指令的产生器的构建 根据随机率产生随机的花指令 根据要产生的长度随机产生花指令 花指令的产生器的构建 花指令的产生器的构建 动态壳布局 参考资料 看雪论坛关于VMP逆向的所有资料 《扭曲加密变化》(刘涛涛) 感谢 看雪论坛 SSCON会务组 问题 ? * *

文档评论(0)

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

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

1亿VIP精品文档

相关文档