彩票走势图

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

转帖|使用教程|编辑:李显亮|2020-03-30 12:02:10.397|阅读 603 次

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

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

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

【下载VMProtect最新试用版】

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

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

壳主要干了什么?

①初始化壳模板:指令变形、等价替换。例如:

jmp = push + retn 或则 lea + jmp
lods byte ptr ds:[esi] = mov al,[esi] + inc esi 或则 mov al,[esi] + add esi,1

②优化Handle块代码,将不使用的直接删除

ESIResults[X] == 0表示不使用,这种就会优化
ESIResults[X] == 1表示使用

③找出填充虚拟机上下文的两个Handle块

1、找出壳模板push 0xFACE0002与mov edi,0xFACE0003

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

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

总结:

  • 循环遍历作者设计的Handle块找到符合条件的,例如:规律if(v227 & 0xFFFFFF00) == 0xFACE0000

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

  • 所使用的结构体如下:

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

2、根据pNtHeader_OptionalHeader.Magic筛选ESI_Matching_Array数组

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

首先我们得到的信息有:

  • ESI_Matching_Array每一组是8个字节,一共有0Xcc组,也就是总长度是0x660=8*0xCC,目前已知:
    ESI_Matching_Array[0] == 与Magic有关
    ESI_Matching_Array[1] == ??
    ESI_Matching_Array[2] == VMOpcode
    ESI_Matching_Array[3] == ??
    ESI_Matching_Array[4] == ??
    ESI_Matching_Array[5] == Size
    ESI_Matching_Array[6] == ??
    ESI_Matching_Array[7] == 未使用,都是0
  • v184数组保存所有结果0或则1
  • 第一个判断:v16 = _bittest(v15, Type & 0x7F)成立条件。目前只讨论win32PE结构,Type都是=1,我们发现*(byte*)(ESI_Matching_Array+0)的值只有6(‭0110‬)或则4(‭0100‬)

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


    6=0110 bt 1 第一位的值给CF,就是1,不成立继续执行第二个判断

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


    4=0100 bt 1 第一位的值给CF,就是0,成立v17=0,不继续执行第二个判断

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


总结:

  • v184保存结果的什么时候使用、区别这个有什么意义?1跟0有什么区别?
    1表示使用,0表示未使用(后期优化掉)

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

  • ESI_Matching_Array与VmHandle块对应(我整理了一份,未必全对的只作为参考)

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

3、判断用户解析Opcode有没有需要特殊处理的指令

这些都是一些不常用的指令,如果存在就在ESIResults[X]=1,表示使用

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

假设找到的话执行Vmp_GetVmHandleIndex函数

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

v184==ESIResults就是我们前面筛选的,如果有就在指定位置+1,表示使用

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


--  未完待续  --

VMProtect正版授权专享在线订购特享超低价格!还不赶紧加入你的订购清单?

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP