吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 55326|回复: 68
收起左侧

[分享] 过VMP,TMD的虚拟机检测

  [复制链接]
gxwtk 发表于 2013-12-26 22:01
搜索了论坛,好像只有简单的讲了IN 指令修改( eax,dx清零),其实这个只是一部分,所以很多人在改完了,还是会被检测到。
上2张图。很郁闷吧。

TMD

TMD

61

61

首先,设置下SOD和调试选项。看图

3.jpg 4.jpg .

TMD过检测:
     载入程序:
5.jpg
    我们现在 VirtualAlloc 末尾RET处下好断点,一般这样可以简单的过些断点检测 ;-)

6

6

    F9运行,中断下来了,这时F7,返回到类似于这样的。
7.jpg
   这时,我们把代码窗口拉到最上面。点右键-》查找-》常量,输入564D5868,好,确定搜索。
8.jpg
   这时我们可以搜索到2处,也有搜索到1处的。处理起来都是一样的,就是在最后1处时要稍微注意下。
9.jpg 10.jpg
    在IN指令的上面那一行下硬件访问断点(如果直接在IN指令处下断点,会出现些不明的错误)。下好如下
11.jpg
     重载程序(Ctrl+F2),F9运行,断下来了。
12.jpg
      经典的IN检测(Eax和Dx清零过检测),这里因为我们停在IN的上一条指令,所以,我们只要把EAX清零,然后修改下
mov dx,0x5658

mov dx,0
并在后面的RETN处下个断点(主要是为了把修改的代码撤销掉,就是还原回原来的,避免有内存校验)。如图中红色字体
13.jpg
      F9运行,停在RETN处,把刚才修改的代码选择,右键-》撤销选择处修改,原来修改的代码变回去了,并取消这个断点。
14.jpg
     F9运行,停在第2处IN指令。
15.jpg
     同样的,我们把eax清零,然后修改
    sub     edx, 0x345FE8
成寄存器里edx同样的值(0x34B640),就是要sub 后,让edx变成0;
然后在cmp指令后的某个代码处下个断点,这里我下在图中的位置。目的和刚才说的一样(把修改的代码改回原来的。)
16.jpg
     然后运行,中断下来后,把修改的代码撤销修改,并且把断点取消。看到下面的sldt指令了吧(图中倒数3行)。
F7单步走到sldt指令处。  看下面的信息窗口,此时[esp]的值 :
stack: ss:[0012FFA2]=0000
       我们在  ss:[0012FFA2]=0000 上 右键-》数据窗口跟随,可以看到堆栈中的数据为0000,这2个数据等下要修改的。
18.jpg
       好,F7步过sldt指令,我们发现【0012FFA2】中的数据被改变了
【0012FFA2】=60
【0012FFA3】=40
19.jpg
       在堆栈里把这改成,如图中红色字体处。
【0012FFA2】=00
【0012FFA3】=00
20.jpg
       这样修改后,Shift+F9就可以运行起来了。

BTW:
对于在开始搜索时,只有1处IN指令的。操作一样,这里也简单介绍下,免得有些人不会。
     中断在IN指令的上一条指令处,eax清零,我这里修改寄存器edx=0x345FE8,使
sub edx,0x345FE8
     指令执行后清0.。
在红色标志处下个断点。(在这里下,是因为上面的JNZ不管跳不跳,都会来到这里)。弄好这些,F9运行。
22.jpg
我们就会中断在上图的断点处,好了,F7单步。来到sldt指令。
23.jpg
哈哈,一样的操作。大家都知道了。不知道,就从新看看上面的方法。
TMD的虚拟机检测就到此结束了。我们来看看VMP的吧。
-------------------------------------------------------------------------------------------

VMP:

其实VMP的过检测大牛都说了,就是找VM_RETN。我只是操作给大家看看的。
     载入程序,不用说了吧。
25.jpg
    在EP处右键-》FKVMP->Start(感谢大牛的工具,OD插件名称fkvmp.dl,这个没有的话,自己找l),稍微等下,我们
Alt+L,打开Log窗口,找VM_RETN地址。
26.jpg
在retn那行,右键->复制->地址。我的地址为013942B0。好,按Ctrl+G,填入地址013942B0,我们来到
27.jpg
看到retn那个标签了吧。我们点图中最后那个CALL进入,01393D3E
29.jpg
然后再点下面的JMP 01393171进入,来到这里
30.jpg
我们看到上图中那个红色的js指令吧。这个之前我也没注意,直接在retn的上面那个push指令下断跟踪,怎么弄都被虚拟机检测到,后来我是直接在VM_RETN地址013942B0处直接单步走,才发现,原来这js有时也是会跳转的,他直接跳过了那个RETN。所以我们在图上RETN上面的push指令处下个断点,013931BA。
然后也要顺着js指令的跳转走。遇到call就进入,遇到jmp就跟随跳入。
这样我们也来到这样的一个地方,同样的,在RETN上面的push指令下个断点 01392854。好了,现在我们有2个断点了。
35.jpg
       F9运行,中断下来了。
36.jpg
返回的地址是系统的,我们不用管,直接F9。这样,当返回是系统的,我们直接F9通过,当中断返回是程序段的,我们就要
F7跟踪。
37.jpg
好了,返回时程序领空,我们F7单步,来到
38.jpg
看到了吧,来到了str指令(也是个虚拟机检测指令)。此时[esp]的数据为0000(信息窗口  ss:[0012f794]=0000),
在ss:[0012f794]=0000上右键 数据跟随,我们看到上图中堆栈里的数据也是0000的。
      F7单步通过str指令,我们发现此时原来的[esp]处的数据变成了0040,好,我们把它改成0000,如下图堆栈窗口
39.jpg
   改好后,F9运行,中断时,返回地址是程序领空的,我们都F7跟踪。这样,我们都会碰到那些经典的虚拟机检测指令。
因为上面TMD里都有介绍,这里就不多说了,上图就好了。
41.jpg
IN指令,把eax,edx都清零就好了。
     最后,我们还会看到如下的虚拟机检测指令,不知道是插件已经帮我们patch了,还是这些指令不起作用,不需要进行什么
修改也没检测到虚拟机。
POPFD
RDTSC
指令
vmware处理rdtsc的一个漏洞,在TF标志职位的情况下执行rdtscvmware和真机对eip处理不同,前者多加了1  。
45.jpg
POPFD
CPUID
指令
这里引发单步异常,去检测cpuid返回。
47.jpg

   一般走到popfd cpuid,我们的程序已经完了。所以,我们只能从头再来过。在碰到POPFD RDTSC这个指令时,把我们
原来下的断点都禁止掉。然后 shift + f9就可以运行起来了。
48.jpg

好了VMP的也搞定了。
这里上个VMP的做例子给大家试试吧。步骤我就直接放图了。大家可跟跟试试。VMP的壳,可能会报毒。
VMPCrackMe.rar (872.39 KB, 下载次数: 514)

49.jpg
跟进call
50.jpg
又跟进Call,在push下断
52.jpg
f9
53.jpg
不管,再f9
54.jpg
f7跟进
55.jpg
str指令,熟悉吧。
f7后。
56.jpg
自己修改值咯。
57.jpg
改好后,f9
58.jpg
f7跟进,又看到IN指令了,这里我改好了哦。
60.jpg
OVer,shift + f9 运行起来了。
---------------------------------------------------------------------------------

抓图可真不容易啊。




30.jpg

免费评分

参与人数 8热心值 +8 收起 理由
newer + 1 用心讨论,共获提升!
smile1110 + 1 这篇文章非常有用
黑的思想 + 1 谢谢@Thanks!
蚯蚓翔龙 + 1 收藏了,会有人知道的
Cari丶 + 1 已答复!
yjd333 + 1 支持
Bds1r + 1 帅气!
马斯维尔 + 1 Thanks! It's useful....

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

currwin 发表于 2014-5-25 12:39
wyongbin 发表于 2014-5-3 20:31
vmp按照楼主的方法不成功,于是处理了一下POPFD RDTSC,就成功了,奇怪,楼主的机子难道不用处理这个吗

求教一下大大,popfd rdtsc那一部分应该怎么处理呢?
wyongbin 发表于 2014-5-25 17:26
currwin 发表于 2014-5-25 12:39
求教一下大大,popfd rdtsc那一部分应该怎么处理呢?

走到rdtsc时nop掉,单步步过后撤销还原

免费评分

参与人数 1热心值 +1 收起 理由
currwin + 1 应该过了,可是程序会提示某个地址指令错误.

查看全部评分

jiaxiangyida 发表于 2013-12-26 22:04
179836774 发表于 2013-12-26 22:09
有空试试   看着是不错  嘿嘿
1354669803 发表于 2013-12-26 22:19
每一次都要这样操作 调试起来不方便啊
hash0530 发表于 2013-12-26 22:23
这个我是新手 完全不懂..
MC红桃A 发表于 2013-12-26 22:30
不错   看看  学习哈
yhym599 发表于 2013-12-26 22:31
来支持一下楼主,感谢分享经验,辛苦了。
小淫仙 发表于 2013-12-26 22:32
学习了 !!
cui464450064 发表于 2013-12-26 22:59
收藏了,谢谢了,老被检测到 真恶心
Cari丶 发表于 2013-12-27 00:03
唔。一般来说虚拟机检测VMP和SE以及TMD的话 关闭虚拟机的后门再禁止二进制 原版OD+SOD可以过大部分。TMD的是重点。学习了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-16 20:46

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表