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. asp.net input怎么获取值
  2. Linux 服务器如何修改主机名
  3. 【自然框架】之通用权限(四):角色表组
  4. signature=4d4ce610ff2d4a5f2093452c24b70492,Reading Chromatin Signatures
  5. maven build后Downloading maven-metadata.xml
  6. java io流屏幕输出_java IO流 之 输出流 OutputString()的使用
  7. Web.config常用节点解析:
  8. 优化UITableViewCell高度计算的那些事
  9. centos8网络配置开启wifi_在centos 8中安装各种路由协议
  10. 正本清源:LBS(基于位置服务)技术——高精准IP地址定位的8大误区(下)
  11. android ui设计最新字体,手机ui设计常用字体一般有哪些,UI设计中的字体有什么规范要求...
  12. J1939协议简介【小白入门】
  13. 为什么要对数据仓库分层
  14. [其他] ATI HD6630M 显卡在Win10下终于有救了(DEll 14R N4120)
  15. win7系统老是弹窗怎么解决_Win7电脑右下角弹出广告如何解决?
  16. 计算机组成原理:原,反,补码,加减运算,溢出判断,符号扩展
  17. 树莓派制作内网dns服务器,树莓派使用dnsmasq搭建DNS服务器
  18. for(int i:nums){.....}的含义
  19. pytorch一小时速成
  20. 网络营销策略——4P

热门文章

  1. 移动开发免费收费api及网站收藏
  2. CM211-2-CH-通刷Hi3798MV300/MV310-当贝纯净桌面-卡刷固件包
  3. byte,short,int和long有符号整数
  4. CSDN中博客字体颜色大小【推荐】
  5. HTML5前端入门教程:Ajax 异步请求技术
  6. 【笔记】【一文搞定】java - 多线程:内存模型、生命周期、方法/关键词、并发问题、线程池、案例
  7. 10.操作系统实战——二级引导器探查收集信息(检查CPU,获取内存布局,初始化内核栈,放置内核文件和字库文件,建立MMU页表,设置图形模式,显示LOGO)
  8. c语言锥形图案,圆锥形c的分类
  9. 快速云:五分钟了解几款磁盘测试与IO查看的工具
  10. 计算机基础知识填空题及答案,计算机基础知识习题与答案(填空)