Cari 发表于 2014-10-16 12:14

VMProtect肤浅认知记录(一)

本帖最后由 Cari 于 2014-10-16 19:50 编辑

VMProtect肤浅认知记录(一)
大家好!我是Cari别人还是喜欢叫我阿狸。好吧。有洋气的名字也不错呢。
到鲨鱼哥的论坛不发点什么不好意思了。
我啥也不会,肤浅探讨。
感谢ximo LCF-AT 等各种前辈写的zeus插件以及脚本。不借助前辈们的插件,脚本手脱VMP简直无法想像。
论坛看到个这帖子


是这么一个东西,那就简单说说自己了解的一点点肤浅认识,

题外话:VMP的虚拟机检测
方法一:从程序上处理(感觉每个程序都去搞好麻烦的样子)
Ctrl+F


原理:
in eax,dx这条指令在R3下会产生异常,而VMP在SEH里重新设置了新的EIP,初始化了新的VMContext,而在虚拟机里,这个异常不会触发。

先下个CC断点试试F9运行


bom触发了VMP的检测了。
我们F4运行到选定位置

Oh 这程序真是激情四射。
F8继续 把EDX,EBX置0F9运行
由于我物理机是xp sp3的 没法看。这方法我也不推荐。此处就不截图了。
方法二:关闭虚拟机的后门 实现避开检测虚拟机
找到我们虚拟机镜像的路径

图中是我的一个路径

找到这玩意。这是我们镜像的配置文件
monitor_control.restrict_backdoor = "true"
在我们的最后这里 加这么一句话 保存
这样基本可以避开大部分的壳检测,VMP,SE。TMD部分,而且不会卡
这么来比方法一的要简单,而且是针对镜像的。可是有个弊端,VMtool运行不起来了
那么双向拖拽复制粘贴功能也没了。在关闭后门之前双机装好内网传输工具解决疑问。
如果你的配置够好,那么
isolation.tools.getPtrLocation.disable = "TRUE"
isolation.tools.setPtrLocation.disable = "TRUE"
isolation.tools.setVersion.disable = "TRUE"
isolation.tools.getVersion.disable = "TRUE"
monitor_control.disable_directexec = "TRUE"
monitor_control.disable_chksimd = "TRUE"
monitor_control.disable_ntreloc = "TRUE"
monitor_control.disable_selfmod = "TRUE"
monitor_control.disable_reloc = "TRUE"
monitor_control.disable_btinout = "TRUE"
monitor_control.disable_btmemspace = "TRUE"
monitor_control.disable_btpriv = "TRUE"
monitor_control.disable_btseg = "TRUE"
保险起见全加了。【尽管这样。TMD壳加的好的还是一样检测到。】


-------------------------------------------------------------------------------------------------
VMP自校验:
很多人喜欢对VMP程序打补丁。不知道你们打补丁有没有发现 时机不对打着打着就被检测了,然后你的程序整个没法用。
还有的人直接保存出来了。暗自高兴,修改完保存了。一运行。被检测。
这就是VMP的一个自校验。
怎么看有没有校验?
方法一:
Winhex打开我们的程序

到最后随便修改下,保存运行。File corrupted!. This program has been manipulated and maybe
it's infected by a Virus or cracked. This file won't work anymore.

方法二:

把程序拖拽到Lordpe重建pe(操作前先备份原程序)运行
File corrupted!. This program has been manipulated and maybe
it's infected by a Virus or cracked. This file won't work anymore.

第三种方法:
PE编辑器

非多处理器系统打勾。确定-保存-运行

VMP对文件校验三种方式:
1,      文件校验
2,      内存校验
3,      解码校验
之前也有人写个相关的教程说如何过掉文件校验,最简单的方法就是把输入表中的GetModuleFileNameW改成GetModuleFileNameA 这样使得VMP无法获取文件路径,接着后面CreateFileW返回的自然也就是-1,这样文件校验就可以过去了。不过这个方法到后期的版本貌似是不管用了。这里我介绍一个统一的方法。
进行这三种校验handler是GetHash这个handler,可以用fkvmp找到。
这个handler的主要功能就是对一段给定大小和起始地址的数据进行自定义的hash运算。 得到的结果在虚拟机里面进行比较。
除去文件校验以外,其他两种校验因为涉及到区域比较多,所以均在程序里面对应一个表,这个表包含多个大小为0xC的结构:
+0 RVA
+4 size
+8 hash

这个表是经过加密的,使用的时候在虚拟机里面逐个解密,这个表就是我们的突破口。
在进行校验的时候,程序会循环读取这个表的内容,解码后进行校验。这样就意味着有一个循环变量来指示循环的结束,也就是这个表的大小。幸运的是,vmp在进行后面两次校验之前会首先校验其对应的hash表 来保证hash表的合法性,这就给了我们机会找到这个表的位置和大小。

值得注意是:在内存校验的时候,循环变量用的是表项数,也就是表的大小/0xC, 而文件校验的时候使用的是这个表的大小
知道表的位置和大小了,就可以处理了,主要有两个思路:
1,把hash表的每一项都改成相同的,也就是让程序一直在校验同一个地方。然后再修改下gethash这个handler,让他在校验hash表的时候返回正确的值即可。
2,找到循环变量,把变量改成最小值,让程序以为已经读完整个表,继而结束校验。

烟雨Hyperchem大牛演示过第二种方法,不过操作视频已经消失了。
Ximo的另一种方法:
HOOK VM_Add32然后把eax的值0和4置换。
好了。题外话就到这里。
*******************************************************************
接下来看下论坛小伙伴的这个程序用ximo的方法(只是其中一种方法不要对号入座说有的zeus无效。)这个比较简单,其余方法看心情慢慢发
OD载入

我哩个擦。这都啥。
Zeus一番蹂躏后

哦多K
庆幸OEP没被偷也没被V。运行

发帖这个小伙伴说的关机什么的倒是没发生呢。
关OD 清空UDD。接下来修复iat

OD载入。M来到内存

找到神器蹂躏后的区段 NewIAT 复制地址跟到这里

{:6_215:}丝固一。就是这

打开UIF

啪啪啪。就各种填
第一个参数Process ID 就是我们的PID你可以从

这里得到也可以这样

接下来Start

真不少啊

此时我们的OD界面内容已经这样了。
先别关闭UIF。 打开ImpREC

修改参数


获取下输入表
全部有效,接下来抓取文件把程序dump出来





然后转储到dump文件。
运行
如果程序不是打算拿去卖,自己用就可以逆向直接保存使用了。


此时完成了IAT的一个修复。本机可以运行。如果程序VM了部分代码那么此时放到别的xp下运行 就会报错,因为CPUID还没处理
**************************************************
接下来找CPUID    一种是patchpatch会触发内存随机校验一种是补区段
接下来说patch
清空UDD   载入OD。
下个帖子再说{:6_214:}









微笑的耗子 发表于 2014-10-16 12:19

看起来好麻烦的样子。。。。

Shark恒 发表于 2014-10-16 12:36

Cari系列精华.1

keke120 发表于 2014-10-16 12:55

等待你的VMProtect肤浅认知记录(二)

最好来个视频教程哈哈 先谢谢楼主了我处理了CPUID可是还是不行技术不行啊。等待你的续集

lixjiy 发表于 2014-10-16 13:39

我也正在弄cpuid找到登陆窗口地址了,貌似还不可以运行,不知道是哪一步出错了

heiheidz 发表于 2014-10-16 17:52

http://www.unpack.cn/thread-71059-1-1.html
算是原创吧,毕竟贴上图片

heiheidz 发表于 2014-10-16 17:54

你这个IAT没有修复好,你难道没发现吗

heiheidz 发表于 2014-10-16 17:55

你还没有搞清楚什么crc,什么IAT修复区别,生搬硬套,那个是没用的

heiheidz 发表于 2014-10-16 18:02

我觉得你说不对,你试试修复看看吧,我估计会不行,

keke120 发表于 2014-10-16 18:09

heiheidz 发表于 2014-10-16 17:52
http://www.unpack.cn/thread-71059-1-1.html
算是原创吧,毕竟贴上图片

老大 看不见呢
页: [1] 2 3 4 5 6 7
查看完整版本: VMProtect肤浅认知记录(一)