2011.06.18_ximo_VMP antidump 之补区段法

http://hi.baidu.com/ximo2006/blog/item/ee78110342cf621f1c9583a0.html

以前也写过处理VMP antidump方法的文章,当时用强制修改vm_jmp的方法来解决的,需要对VM有一定的了解,并且还要手动patch,可能比较麻烦,而且还有副作用,就是VM的内存随机效验,当然内存效验可能通过vm_rdtsc来解决。现在就介绍个用补区段的方法来解决,不需要再patch代码,从而省去了patch代码,效验等诸多麻烦。

本文只讲述对付heap antidump,其他的,比如寻找OEP,IAT跨平台,CPUID antidump等就不再赘述。

1.bp LocalAlloc+2

断下后,ATL+F9,记下当前的EIP

//返回到这里

00554D85    55              push ebp
00554D86    59              pop ecx
00554D87    8B4D FC         mov ecx,dword ptr ss:[ebp-4]
00554D8A    E8 A9D4FFFF     call UnpackME.00552238
00554D8F    9C              pushfd
00554D90    8F4424 28       pop dword ptr ss:[esp+28]
00554D94    9C              pushfd

 此时,eax中保存的值,即为保存antidump数据的地方。由于地址小于文件的基址,因为不好补区段,所以,我们得申请个新的空间,为了方便我们补区段。

用插件申请段新空间,或者找个空白区,新建EIP,patch如下代码:

00B70000    60              pushad
00B70001    6A 40           push 40
00B70003    68 00300000     push 3000
00B70008    68 00100000     push 1000
00B7000D    6A 00           push 0
00B7000F    E8 4D9AC97B     call kernel32.VirtualAlloc
00B70014    3D 00004000     cmp eax,400000
00B70019  ^ 72 E6           jb short 00B70001
00B7001B    61              popad
00B7001C    90              nop
00B7001D    90              nop

bp 00B7001B,F9运行后,记下eax的值 = 00B80000,走过popad后,修改eax的值为00b80000

然后,定位到原来的EIP处

00554D85    55              push ebp
新建EIP。

然后,就用以前的方法,到达OEP。

接下来做的,就是dump,然后,自定义dump,dump出00b80000,大小为1000的区段。

在dump出的文件中,补上这段区段,最后重建PE,完工。

 做个简单的视频演示,画质不大好,凑合着看吧。

http://u.115.com/file/clitsg44



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值