代码保护软件VMProtect学习笔记——Handle块优化与壳模板初始化(四)

小编大家整理了大佬们的使用技巧和经验与大家分享,希望能够帮助你解决实际运用中遇到的问题。本文继续讲解Handle块优化与壳模板初始化。

VMProtect是一种很可靠的工具,可以保护应用程序代码免受分析和破解,但只有在应用程序内保护机制正确构建且没有可能破坏整个保护的严重错误的情况下,才能实现最好的效果。

【下载VMProtect最新试用版】

小编大家整理了大佬们的使用技巧和经验与大家分享,希望能够帮助你解决实际运用中遇到的问题。本文接着介绍关于反汇编引擎。

第四章:Handle块优化与壳模板初始化 

使用struct_VmpOpcodePY_80~A0结构

代码保护软件VMProtect学习笔记——Handle块优化与壳模板初始化

  1. 目前发现符合if条件的只有register寻址方式的并且是add aXX,BXX这种,每次都是两条组合出现
    代码保护软件VMProtect学习笔记——Handle块优化与壳模板初始化
  2. 通过i来区分到底取struct_VmpOpcodePY_80、struct_VmpOpcodePY_84~90、struct_VmpOpcodePY_94~A0其中一组
  3. 判断v227->RandomWord_4EE0EC!=4
    代码保护软件VMProtect学习笔记——Handle块优化与壳模板初始化
    • 第一种:RandomWord_4EE0EC!=4执行流程
      代码保护软件VMProtect学习笔记——Handle块优化与壳模板初始化
    • 第二种:RandomWord_4EE0EC==4执行流程
      代码保护软件VMProtect学习笔记——Handle块优化与壳模板初始化 代码保护软件VMProtect学习笔记——Handle块优化与壳模板初始化
㈠SetDisassemblyFunction函数分析

如果说Vmp_Disassembly函数是将Opcode解析。那么SetDisassemblyFunction就是将解析后的Opcode再重新组装回去

代码保护软件VMProtect学习笔记——Handle块优化与壳模板初始化 代码保护软件VMProtect学习笔记——Handle块优化与壳模板初始化

判断是否存在前缀

代码保护软件VMProtect学习笔记——Handle块优化与壳模板初始化

根据前面Opcode选择读取对应主操作码,假设该Opcode操作码需要依赖Mod寻址就执行sub_49DFD0

代码保护软件VMProtect学习笔记——Handle块优化与壳模板初始化

根据ModRm_Mod寻址方式判断,从而构造不同的指令

代码保护软件VMProtect学习笔记——Handle块优化与壳模板初始化

总结

  1. 设置struct_DisassemblyFunction的内容
  2. 用struct_DisassemblyFunction 提供的Opcode信息还原回一条完整的汇编指令
  3. struc_SaveAllDisasmFunData与struc_SavePartDisasmFunData1数组里删除该HandleX信息

总结

  1. 第一次执行才使用struct_VmpOpcodePY_80,非第一次都是使用struct_VmpOpcodePY_84~90或则struct_VmpOpcodePY_94~A0
    代码保护软件VMProtect学习笔记——Handle块优化与壳模板初始化 代码保护软件VMProtect学习笔记——Handle块优化与壳模板初始化变形成:
    代码保护软件VMProtect学习笔记——Handle块优化与壳模板初始化

—  未完待续  —


VMProtect正版授权专享在线订购特享超低价格!还不赶紧加入你的订购清单/span>>>更多详情可点击咨询购买
标签:

来源:慧都

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年3月11日
下一篇 2020年3月11日

相关推荐

发表回复

登录后才能评论