laoxing 发表于 2014-7-25 18:29

手脱VMP2.09教程【转】我只是搬运工

【文章标题】: 手脱VMP2.09
【文章作者】: bbchylml
【软件名称】: 飞鸽传书
【软件大小】: 156k
【下载地址】: 网上有下载
【加壳方式】: VMProtect v 2.09
【编写语言】: Microsoft Visual C++ 6.0
【使用工具】: VMProtect V2.09、OD、PEID v0.94、ImportREC_fix
【操作平台】: winXP
【软件介绍】: 大家熟知的局域网聊天文件传输工具
【作者声明】: 只是感兴趣,没有其他目的。本人也只是个菜鸟,失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
1.首先自己给程序加壳,加壳后的程序名字为飞鸽传书.vmp.exe。

2.用PEID查查壳,显示“什么也没发现”。

3.用OD载入程序,对于VMP壳来说我们可以用ESP定律进行脱壳,在命令行输入“hr esp”确定。然后F9并记录F9的次数(1次)程序到了,
004AE44E    89E5                        mov ebp,esp
004AE450    81EC C0000000       sub esp,0C0
004AE456    89E7                        mov edi,esp
004AE458    0375 00                   add esi,dword ptr ss:
004AE45B    8A06                        mov al,byte ptr ds:
004AE45D    46                            inc esi
004AE45E    0FB6C0                  movzx eax,al

F9(2次)
004AE385    83C5 04                  add ebp,4
004AE388    891438                      mov dword ptr ds:,ed>
004AE38B    E9 CB000000             jmp 飞鸽传书.004AE45B
004AE390    0FB606                      movzx eax,byte ptr ds:
004AE393    66:8B55 00                mov dx,word ptr ss:
004AE397    83C5 02                     add ebp,2
004AE39A    46                              inc esi

F9(3次)
004AE4D2^\E9 64FDFFFF             jmp 飞鸽传书.004AE23B
004AE4D7    66:8B6D 00               mov bp,word ptr ss:
004AE4DB^ E9 5BFDFFFF             jmp 飞鸽传书.004AE23B
004AE4E0    89E8                           mov eax,ebp
004AE4E2    83ED 02                     sub ebp,2
004AE4E5    66:8945 00               mov word ptr ss:,ax

F9(4次)
004AE9DF    8945 00                     mov dword ptr ss:,eax
004AE9E2^ E9 74FAFFFF             jmp 飞鸽传书.004AE45B
004AE9E7    66:8B45 00                mov ax,word ptr ss:
004AE9EB    83ED 02                     sub ebp,2
004AE9EE    66:0145 04                add word ptr ss:,ax
004AE9F2    9C                              pushfd
004AE9F3    8F45 00                      pop dword ptr ss:

F9(5次)第五次还是在这里
004AE9DF    8945 00                     mov dword ptr ss:,eax
004AE9E2^ E9 74FAFFFF             jmp 飞鸽传书.004AE45B
004AE9E7    66:8B45 00                mov ax,word ptr ss:
004AE9EB    83ED 02                     sub ebp,2
004AE9EE    66:0145 04                add word ptr ss:,ax
004AE9F2    9C                           pushfd
004AE9F3    8F45 00                     pop dword ptr ss:

F9(6次)
004AE32C    F7D0                         not eax
004AE32E    F7D2                         not edx
004AE330    21D0                         and eax,edx
004AE332    8945 04                     mov dword ptr ss:,eax
004AE335    9C                              pushfd
004AE336    8F45 00                     pop dword ptr ss:
004AE339    E9 1D010000            jmp 飞鸽传书.004AE45B

F9(7次)
004AE335    9C                           pushfd
004AE336    8F45 00                     pop dword ptr ss:
004AE339    E9 1D010000             jmp 飞鸽传书.004AE45B
004AE33E    8B45 00                     mov eax,dword ptr ss:
004AE341    8A55 04                     mov dl,byte ptr ss:
004AE344    83C5 06                     add ebp,6
004AE347    36:8810                     mov byte ptr ss:,dl

由于
pushfd
pop dword ptr ss:
是进出栈,所以我们F8单步并实现jmp来到
004AE45B    8A06                        mov al,byte ptr ds:
004AE45D    46                              inc esi
004AE45E    0FB6C0                      movzx eax,al
004AE461    FF2485 D9E54A00      jmp dword ptr ds:[eax*4+4AE5D>
004AE468    8B45 00                     mov eax,dword ptr ss:
004AE46B    8A4D 04                     mov cl,byte ptr ss:
004AE46E    83ED 02                     sub ebp,2

继续F9(8次)
004AE32C    F7D0                        not eax
004AE32E    F7D2                        not edx
004AE330    21D0                        and eax,edx
004AE332    8945 04                  mov dword ptr ss:,eax
004AE335    9C                            pushfd
004AE336    8F45 00                  pop dword ptr ss:
004AE339    E9 1D010000         jmp 飞鸽传书.004AE45B

F9(9次)
004AE335    9C                           pushfd
004AE336    8F45 00                     pop dword ptr ss:
004AE339    E9 1D010000             jmp 飞鸽传书.004AE45B
004AE33E    8B45 00                     mov eax,dword ptr ss:
004AE341    8A55 04                     mov dl,byte ptr ss:
004AE344    83C5 06                     add ebp,6
004AE347    36:8810                     mov byte ptr ss:,dl

我们又来到pushfd,同样F8单步并实现jmp
004AE45B    8A06                        mov al,byte ptr ds:
004AE45D    46                           inc esi
004AE45E    0FB6C0                      movzx eax,al
004AE461    FF2485 D9E54A00   jmp dword ptr ds:[eax*4+4AE5D>
004AE468    8B45 00                     mov eax,dword ptr ss:
004AE46B    8A4D 04                     mov cl,byte ptr ss:
004AE46E    83ED 02                     sub ebp,2

继续F9(10次)
004AE306    83C5 04                     add ebp,4
004AE309    9D                           popfd
004AE30A    E9 4C010000            jmp 飞鸽传书.004AE45B
004AE30F    8B45 00                     mov eax,dword ptr ss:
004AE312    8A4D 04                     mov cl,byte ptr ss:
004AE315    83ED 02                     sub ebp,2
004AE318    D3E0                        shl eax,cl

F9(11次)
004AE411^\E9 25FEFFFF            jmp 飞鸽传书.004AE23B
004AE416    0FB606                      movzx eax,byte ptr ds:
004AE419    46                              inc esi
004AE41A    83ED 02                     sub ebp,2
004AE41D    66:8945 00                mov word ptr ss:,ax
004AE421^ E9 15FEFFFF             jmp 飞鸽传书.004AE23B

F9(12次)
004AE506    9C                           pushfd
004AE507    8F45 00                     pop dword ptr ss:
004AE50A^ E9 4CFFFFFF            jmp 飞鸽传书.004AE45B
004AE50F    66:8B45 00                mov ax,word ptr ss:
004AE513    8A4D 02                     mov cl,byte ptr ss:
004AE516    83ED 02                     sub ebp,2

又是pushfd,我们还是F8单步并实现jmp
004AE45B    8A06                        mov al,byte ptr ds:
004AE45D    46                           inc esi
004AE45E    0FB6C0                      movzx eax,al
004AE461    FF2485 D9E54A00   jmp dword ptr ds:[eax*4+4AE5D>
004AE468    8B45 00                     mov eax,dword ptr ss:
004AE46B    8A4D 04                     mov cl,byte ptr ss:

继续F9(13次)
004183D7/.55                        push ebp
004183D8|.8BEC                      mov ebp,esp
004183DA|.6A FF                     push -1
004183DC|.68 18CB4100      push 飞鸽传书.0041CB18
004183E1|.68 2C9D4100         push 飞鸽传书.00419D2C            ;SE 句柄安装

好了,经过13次F9,我们终于到达OEP了,一看就是VC++的程序,然后就是脱壳了。
脱壳后用ImportREC_fix修复。


【经验总结】: 本文只是提供一种脱VMP壳的思路,没有什么技术含量,大牛笑过。。。

Jack丶雷 发表于 2014-8-19 17:07

你这个,能详细点吗?还有那个怎么来着,你为什么这么肯定到某处还有F8的?pushfd这样就要F8?还有遇进出栈要F8?然后一直F9

月光下の魔术师 发表于 2014-7-25 21:31

心断空 发表于 2014-7-25 19:57
膜拜,,,VMP还可以这样脱。。。不过这真的是2.09的VMP???OEP都没改,毫无技术含量

没隐藏OEP而已,2.12.3你不手动设置也不会隐藏……

韩嗦 发表于 2014-7-25 18:35

二楼是我的吗

uhyjjgt 发表于 2014-7-25 18:43

收藏了,谢分享...

瓜子吧3 发表于 2014-7-25 18:50

以后看,,收藏起。。。

回忆童年快乐 发表于 2014-7-25 18:51

VMP可以这么脱么?   受教了。。。。。

灵魂深处 发表于 2014-7-25 18:52

感谢楼主分享!

lwj一辈子 发表于 2014-7-25 18:55

精品文章啊

william87682 发表于 2014-7-25 19:46

好像对我来说没多大作用

LIKQ2000 发表于 2014-7-25 19:49

牛X呀,看到VMP都头大了,想不到可以这样脱掉。

心断空 发表于 2014-7-25 19:57

膜拜,,,VMP还可以这样脱。。。不过这真的是2.09的VMP???OEP都没改,毫无技术含量
页: [1] 2 3
查看完整版本: 手脱VMP2.09教程【转】我只是搬运工