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

VMProtect通过在具有非标准体系结构的虚拟机上执行代码来保护代码,这将使分析和破解软件变得十分困难。除此之外,VMProtect还可以生成和验证序列号,限制免费升级等等。

下载VMProtect最新试用版

相关链接:

代码保护软件VMP逆向分析虚拟机指令:初步认识与环境搭建(一)

代码保护软件VMP逆向分析虚拟机指令:VMP代码的提取(二)

代码保护软件VMP逆向分析虚拟机指令详细分析(三)

代码保护软件VMP逆向分析虚拟机指令:分析那4条汇编被VM的VM指令

代码保护软件VMP逆向分析虚拟机指令:分析VMP的一些细节

七、附加 分析如果VM的指令中包含了函数调用

材料文件在vmptestcall2文件夹中,不知道为什么我这个vm后的exe总报毒,之前上面那个没报。追踪时一样是按Ctrl+F11记录,我们先看一下原来的汇编是什么样:

然后VMP3后我们下的trace断点:

经过trace 我们得到记录文件。我们接下来截取vm汇编简单分析
首先进入虚拟机:
0043D9C2 主 push 0x7EBD5487 ESP=0012FF88 ; 进入虚拟机前兆 VM_Entry
0043D9C7 主 call vmptestc.0041258D ESP=0012FF84
0041258D 主 push edi ESP=0012FF80
0041258E 主 mov di,0x7063 EDI=00007063
00412592 主 pushfd ESP=0012FF7C
00412593 主 push ebx ESP=0012FF78
00412594 主 clc
00412595 主 neg bx FL=CPS, EBX=7FFD9000
我们直接搜索puts字符串,得到所在位置如下:
00414248 主 jmp vmptestc.0047DE97
0047DE97 主 retn ESP=0012FF84 ; 退出虚拟机环境 进入函数调用内部
puts 主 push 0xC ESP=0012FF80 -----------------------------------------------------------puts
75A68D06 主 push msvcrt.75A68E80 ESP=0012FF7C
75A68D0B 主 call msvcrt.759F9836 FL=0, EAX=0012FF70, ESP=0012FF54, EBP=0012FF80
75A68D10 主 or ebx,0xFFFFFFFF FL=PS, EBX=FFFFFFFF
75A68D13 主 mov dword ptr ss:[ebp-0x1C],ebx
75A68D16 主 xor eax,eax FL=PZ, EAX=00000000
而我们往上看,看出上面是退出虚拟机的代码,特征不要我多说了吧,很多pop,然后只有一个VM_Exit。在往下看看退出puts后紧跟着的是什么:
75A68E4E 主 mov dword ptr ss:[ebp-0x4],-0x2
75A68E55 主 call msvcrt.75A68E6D
75A68E5A 主 mov eax,dword ptr ss:[ebp-0x1C]
75A68E5D 主 call msvcrt.759F987B ECX=75A68E62, EBX=7FFD7000, ESP=0012FF84, EBP=0012FF94, ESI=00000000, EDI=00000000
75A68E62 主 retn ESP=0012FF88 ; 退出puts
0042AB41 主 push 0x7EB991DF ESP=0012FF84 ; 重新进入虚拟机
0042AB46 主 call vmptestc.0041258D ESP=0012FF80
0041258D 主 push edi ESP=0012FF7C
0041258E 主 mov di,0x7063 EDI=00007063
00412592 主 pushfd ESP=0012FF78
00412593 主 push ebx ESP=0012FF74
00412594 主 clc
这里我们看到我们退出puts后,紧跟着并没有看到调用我们的EspArg1函数,而是又进入虚拟机,难道我们的EspArg1内部被VM了,然后我们继续往下分析,找下VM_Exit看看。我们直接搜索特征: 提示我们可以搜索popfd,当然仅限这里,为什么?
00461852 主 popfd FL=PZ, ESP=0012FF7C
00461853 主 cmovne edi,esi
00461856 主 movsx edi,sp EDI=FFFFFF7C
00461859 主 pop edi ESP=0012FF80, EDI=00000000
0046185A 主 jmp vmptestc.004266A6
004266A6 主 retn ESP=0012FF84 ;退出虚拟机
00401008 主 mov dword ptr ss:[esp+0x4],vmptestc.00403018 ---------------------------EspArg1 function
00401010 主 retn ESP=0012FF88
0045AAE7 主 push 0x7EB42BBF ESP=0012FF84 ;进入虚拟机
0045AAEC 主 call vmptestc.0041258D ESP=0012FF80
0041258D 主 push edi ESP=0012FF7C
0041258E 主 mov di,0x7063 EDI=00007063
嗯什么情况,我们看到退出虚拟机,然后下一条就是我们的EspArg1 function里面的内容(“原画”),然后又进入虚拟机。
我们其实VM的就这3句:
push offset HelloWord
call crt_puts
call EspArg1
然后我们可以分析一下有多少次退出虚拟机的操作,我们可以搜索特征去分析,经过分析:
1.VM_Entery

2.VM_Exit
3.Call puts
4.VM_Entery

5.VM_Exit
6.Call EspArg1
7.VM_Entery

8.VM_Exit
我们主要分析的是被VM代码中存在调用函数时的问题,所以其他我们不多管,只管这个是怎么处理调用函数的,现在应该可以大致知道是什么调用的了吧。所以知道为什么有的代码被VM了,我们还能东扣西扣的了没。看到源码 call puts 与call EspArg1中间可是没有代码的 ,但还是要重新进入虚拟机。

如果您对该加密/解密软件感兴趣,欢迎加入vmpQQ交流群:740060302

代码保护软件VMP指令中包含了函数调用相关推荐

  1. 代码保护软件VMP逆向分析虚拟机指令:VMP代码的提取

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

  2. 代码保护软件VMP逆向分析虚拟机指令

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

  3. 代码保护软件 VMProtect 用户手册:分析,破解和保护软件

    是一款虚拟机保护软件,是目前最为流行的保护壳之一.VMProtect将保护后的代码放到虚拟机中运行, 这将使分析反编译后的代码和破解变得极为困难.除了代码保护,VMProtect 还可以生成和验证序列 ...

  4. 代码保护软件VMProtect用户手册主窗口之控制面板“项目”部分(4)

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

  5. 代码保护软件 VMProtect 用户手册之使用VMProtect: 准备项目

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

  6. ajax获取的数据中包含html代码,执行ajax返回数据中包含的script脚本代码

    ajax虽然很方便,提升了我们的交互体验,但是它也有可恨之处,就是ajax请求得到的数据中如果包含脚本代码,比如说请求得到的是一块html内容,我们把这块html内容插入到网页中的某个地方,但是其中明 ...

  7. 代码保护软件VMProtect用户手册之内置功能(1)——字符串功能作用

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

  8. 代码保护软件VMProtect用户手册之内置脚本的使用(2)——PE文件

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

  9. 代码保护软件 VMProtect 用户手册之准备项目: 使用标记

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

最新文章

  1. 流式大数据处理的三种框架:Storm,Spark和Samza
  2. PAT:1034 Head of a Gang (30分)
  3. wordpress主题部署到github pages(调研+具体操作-还没有完成)
  4. Android使用缓存优化ListView
  5. 【Python】有效资源爬取并集
  6. caffe common 程序分析 类中定义类
  7. 利用BFS和DFS解决 LeetCode 130: Surrounded Regions
  8. Java集合系列---ConcurrentHashMap源码解析
  9. 选中连线的话,整个连线会显示在一个框里面
  10. php 正则断言里面使用*+
  11. 首届CCF计算机职业资格认证考试题解(C++)
  12. feign.codec.DecodeException: Error while extracting response for type
  13. c语言中,偷机取巧,输出超市购物小票的票头
  14. VSS2005局域网配置
  15. CSS给元素添加边框(样式、颜色、宽度)
  16. scite使用日常收集
  17. python模块学习之locust性能测试
  18. uniapp 的多选框传值
  19. 软件正在吞噬整个世界
  20. 数据中心的直流电源与交流电源

热门文章

  1. 基于SSM框架的音频分享平台的设计与实现计算机毕业设计源码74192
  2. Maya mash系统的简单介绍--通用节点Distribute节点
  3. 程序员因为女孩而美丽
  4. WireGuard 安装
  5. 代码版本管理工具介绍
  6. Gitlib cicd 流水线 mvnw Permission denied 问题处理
  7. 在 Qt 设计器中使用布局
  8. l1、l2正则化在pytorch框架下的实现方式
  9. 星巴克中国加速零售创新步伐,与红杉中国达成战略合作
  10. 基于TF-IDF算法,来创建自己的词典库(文本预处理并结合关键词库)