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

转帖|使用教程|编辑:李显亮|2020-04-09 10:50:13.683|阅读 26 次

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

# 您正在找协同办公软件吗?点击这里站长给您推荐 #

相关链接:

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

【下载VMProtect最新试用版】

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

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

根据前面符合Jmp Handle满足条件的Number_1作为循环因子
  1. 经过前面筛选Number_1=0XCC,一般HandleX与ESI_Matching_Array都是一一对应,大小都是0xCC
  2. 只是设置的基本的Mod信息跟VmpOpcode=0x23
  3. new出来的struct_VmFunctionAddr结构只是设置了助记符=0xB
  4. 强行扩充到0xFF大小,不足的new struc_SavePartDisasmFunData和struct_VmFunctionAddr结构,具体作用不明

将不符合条件的struc_SaveAllDisasmFunData和struc_SavePartDisasmFunData1从数组中删除
  1. 专门找ESIResults[X] == 0的
  2. ESIResults[X]与v7->Esi_Addr[4 * X]一一对应
  3. 找到VmpOpcode值是:0~9、0xC则退出,符合条件的基本上是:Jmp VMDispatcher找到后把该数组元素删除
  4. 清零v7->Esi_Addr[4 * X] = 0
  5. 看了一圈基本上是把整个HandleX解析信息的都删除,jmp XXXX标志结束
  6. 未被删除的如下:

总结

  1. ESIResults[X]与v7->Esi_Addr[4 * X]一一对应
  2. ESIResults[X]==0,那么取对应的v7->Esi_Addr[4 * X]数组内容(struc_SaveAllDisasmFunData结构体)
  3. struc_SaveAllDisasmFunData与struc_SavePartDisasmFunData1数组里删除该HandleX信息
  4. 判断到jmp XXXX为结束点,也就是整个Handle解析的信息都清除掉
  5. ESIResults[X]==0就是不使用的了

随机数填充struct_VmpOpcodePY_80结构

sub_49FB90函数分析:

sub_49F958函数分析:

  1. 通过随机数取word_4EE0D8数组的下标,符合条件的跳到赋值的地方
  2. 退出条件是:要Add添加几组元素由Constant(参数2)决定,外加一句RandInt(1),百分之50%几率再来一次
  3. 它们使用的结构如下:

总结

  1. 变形总结对照
    RandomWord_4EE0EC是对add al,bl的变形
    RandomWord_4EE0D8是对add bl,al的变形
  2. 填充这些数据到底怎么使用?
  3. struc_47数据使用。我们发现执行完毕后一共有6组
    • 第一组:
      struc_47->RandomWord_4EE0D8=0x29 ->inc
      struc_47->AddrRandomBuff=0x1
    • 第二组:
      struc_47->struc_47->RandomWord_4EE0D8=0x43 ->rol
      struc_47->struc_47->AddrRandomBuff=0x5
    • 第三组:
      struc_47->struc_47->RandomWord_4EE0D8=0x5C ->not
      struc_47->AddrRandomBuff=0x5
    • 第四组:
      struc_47->RandomWord_4EE0D8=0x34 ->sub
      struc_47->AddrRandomBuff=0xB0
    • 第五组:
      struc_47->struc_47->RandomWord_4EE0D8=0x5C ->not
      struc_47->AddrRandomBuff=0x0
    • 第六组:
      struc_47->RandomWord_4EE0D8=0x05 ->xor
      struc_47->struc_47->AddrRandomBuff=0x7A
    刚好对应以下6句,因为1、3、5是单操作数所以struc_47->AddrRandomBuff不使用
  4. struct_VmpOpcodePY_80->RandomWord_4EE0EC使用
    • 第一种RandomWord_4EE0EC=0x4,注意看405069跟40507B这两句是add
    • 第二种RandomWord_4EE0EC=0x34,注意看405069跟40507B这两句是sub
    • 第三种RandomWord_4EE0EC=0x5,注意看405069跟40507B这两句是xor
--  未完待续  --

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


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,尊重他人劳动成果

文章转载自:看雪论坛 https://bbs.pediy.com/thread-253669.htm

登录 慧都网发表评论


暂无评论...

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关厂商
相关产品
VMProtect

新一代软件保护系统,将保护后的代码放到虚拟机中运行,代码反编译软件反破解。

在线
客服
咨询
电话
400-700-1020
在线
QQ
购物车 反馈 返回
顶部
在线客服系统
live chat