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

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

【下载VMProtect最新试用版】

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

将Jmp Handle跟Jmp VMDispatcher分别存储

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

Jmp Handle处理方法

  1. 首先来看ESI_Matching_Array[0]==6,v52成立的条件

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

  2. 然后拿v214->FunAddr去struc_SaveAllDisasmFunData数组里面找到符合

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

  3. DateTimeToStr_2函数查找过程,查找到返回该数组下标,然后用GetItem_7读取出该数组:
    条件是:v214->FunAddr == struct_DisassemblyFunction->LODWORD_VMP_Address。基础版(struc_SaveAllDisasmFunData):

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

  4. 然后判断ESIResults[Number_1]==1,如果成立将找到的DisassemblyFunction结构体保存起来

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

  5. 最后将该找到的DisassemblyFunction结构保存到v7->Esi_Addr[4 * Number_1]

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

Jmp VMDispatcher处理方法

  1. 直接去struc_SaveAllDisasmFunData数组查找,找到直接保存
  2. 与Jmp Handle相比少了ESIResults[Number_1]过滤跟将结果保存到*(_DWORD *)&v7->Esi_Addr[4 * Number_1]

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

执行完毕结果

IDA定义的结构体:

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

OD显示:

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

Jmp VMDispatcher与Jmp Handle的含义是什么意思/span>

如图所示:

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

Jmp VMDispatcher就是:看jmp short 00474989这一句,每个Handle块执行完毕都是跳回到VMDispatcher进行下一轮字节解析

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

Jmp Handle就是:VmpHandle块,每个Handle对应不同的功能

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

—  未完待续  —


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

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

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

相关推荐

发表回复

登录后才能评论