首页
社区
课程
招聘
[原创][求助]VMP 2.07 脱壳测试 --> 脱壳DUMP后一点问题请教大牛!
发表于: 2011-8-18 21:21 13369

[原创][求助]VMP 2.07 脱壳测试 --> 脱壳DUMP后一点问题请教大牛!

2011-8-18 21:21
13369

020588A4    call Test_3.01FDC1E5   -->这是程序载入 OD 后的入口   
020588A9    lea esp,dword ptr ss:[esp+0x8]
020588AD    je Test_3.0209E009
020588B3    lea ebx,dword ptr ss:[esp+0xEDE09A4A]
020588BA    pushad
020588BB    call Test_3.02056812
020588C0    lea esp,dword ptr ss:[esp+0x48]
020588C4  ^jnz Test_3.01FE5C41

下 BP VirtualProtect + 13 断点  --> F9 直到堆栈出现

0012F668   FFFFFFFF  |hProcess = FFFFFFFF
0012F66C   01D43000  |Address = Test_3.01D43000
0012F670   00024B54  |Size = 24B54 (150356.)
0012F674   00000002  |NewProtect = PAGE_READONLY
0012F678   0012FF98  \pOldProtect = 0012FF98

取消断点,查看内存窗口 --> 在 .text 段下内存访问断点,程序停在以下地方,删除内存断点

0209FB6C    xor al,byte ptr ds:[edx]  --> 跟网上找的教程类似
0209FB6E    push ebx                      -->
0209FB6F    push esp
0209FB70    call Test_3.020A0973      -->这 3 句跟教程不一样,F7跟进

                        ↓

020A0973    mov byte ptr ss:[esp+0x4],0xDE
020A0978    inc edx                                             ---> edx=004035EF
020A0979  ^jmp Test_3.020A0132

                        ↓

020A0132    dec dword ptr ss:[ebp]                  -->SS:[0012F794]=00000D98
020A0135    pushad
020A0136    lea esp,dword ptr ss:[esp+0x30]
020A013A  ^jnz Test_3.0209F3FC                    --->在这个地方 F4 步过
020A0140    push 0x5BB6FB7C               

在 .text 段下内存访问断点,程序还是一样停在 (在原地循环,跳不出验证)

0209FB6C    xor al,byte ptr ds:[edx]  --> 跟网上找的教程类似

------------------------->继续F7跟进到

020A013A  ^jnz Test_3.0209F3FC                    --->在这个地方 F4 步过
020A0140    push 0x5BB6FB7C       

在这里换个步骤;查看内存窗口,在.data 段下内存访问断点,程序停在 -->

0096B208    mov edi,edi                ---->很明显,像是VC++8.0入口的第一
0096B20A    push ebp                ---->个CALL,分析下,返回调用的地
0096B20B    mov ebp,esp                ---->方
0096B20D    sub esp,0x10
0096B210    mov eax,dword ptr ds:[0xC558CC]
0096B215    and dword ptr ss:[ebp-0x8],0x0
0096B219    and dword ptr ss:[ebp-0x4],0x0
0096B21D    push ebx
0096B21E    push edi

返回到调用这个 CALL 的地方,来到这个位置 --> (很明显的VC++8.0 入口)

0096AAAF   .  call Test_3.0096B208        -->在此处新建 EIP
0096AAB4   .^jmp Test_3.0096A7EF
0096AAB9      int3

0096A7EF   >push 0x58
0096A7F1   . push Test_3.00C0EFD8
0096A7F6   . call Test_3.0096AE50
0096A7FB   . xor ebx,ebx
0096A7FD   . mov dword ptr ss:[ebp-0x1C],ebx
0096A800   . mov dword ptr ss:[ebp-0x4],ebx
0096A803   . lea eax,dword ptr ss:[ebp-0x68]
0096A806   . push eax                                            ; /pStartupinfo
0096A807   . call dword ptr ds:[0xB1E11C]             ; \GetStartupInfoA

打开 LoadPE --> dump Test_3.exe进程....,试运行后 出现 004FBD4A 引用的 0016FC30 不能为READ

...

位置在以下代码;

004FBD3D   .  mov eax,dword ptr ss:[ebp]
004FBD40   .  pushfd
004FBD41   .  mov byte ptr ss:[esp],0x17
004FBD45   .  push 0xF53DA4D0
004FBD4A   .  mov eax,dword ptr ds:[eax]
004FBD4C   .  pushad
004FBD4D   .  mov byte ptr ss:[esp+0x4],dl
004FBD51   .  mov dword ptr ss:[ebp],eax

首次判断为 antidump .... 按 patch 方法 ,下 BP LocalAlloc +2,断下后,ALT+F9 返回到用户代



01FEA741    not si               
01FEA744    pushfd
01FEA745    mov ebx,eax
01FEA747    call Test_3.01FE5643
01FEA74C    push dword ptr ss:[esp+0x4]

--> EAX = 0016FFD8

SOD 申请内存,写入一段 patch,
       
pushad
push 40
push 3000
push 1000
push 0
call VirtualAlloc
cmp eax,400000
jb XXXXXXX
popad
nop
nop

之后从新 用LoadPE -->dump ,新建内存PATCH的区段,运行后还是出错。

问下各位大牛,我这样脱法正确么?那个错误是antidump?怎么解决?为什么那个入口跟断点后的特征
跟教程的差别很大...

附上软件地址:http://u.115.com/file/dnh7lykd#
Back.rar    8.76MB


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 7
支持
分享
最新回复 (5)
雪    币: 57
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
嗯  有可能是在用LoadPE -->dump时 出错   LoadPE 设置问题、、、、、、
2012-5-18 19:23
0
雪    币: 544
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
VMP没这么简单的。。。随机校验和内存校验解决了?
2012-5-18 19:31
0
雪    币: 57
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
嗯  咱重新看啦下你的过程  前小部份是对的 后半部份貌似 过程有误  请自己再重新来过、、、、、、
2012-5-18 19:33
0
雪    币: 205
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
路过,看看。
2012-7-29 07:57
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
如果看不明白 VM 的运作方式,不要去脱 VMP ,给你对照着某个例子不明不白脱出来,根本就没用
下次换个方式你马上就卡住了,请相信我的话,当你看到 VM 已经不是 VM 时,什么 ANTI_DUMP 都是浮云
2012-7-30 14:26
0
游客
登录 | 注册 方可回帖
返回
//