手脱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壳的思路,没有什么技术含量,大牛笑过。。。
你这个,能详细点吗?还有那个怎么来着,你为什么这么肯定到某处还有F8的?pushfd这样就要F8?还有遇进出栈要F8?然后一直F9 心断空 发表于 2014-7-25 19:57
膜拜,,,VMP还可以这样脱。。。不过这真的是2.09的VMP???OEP都没改,毫无技术含量
没隐藏OEP而已,2.12.3你不手动设置也不会隐藏…… 二楼是我的吗 收藏了,谢分享... 以后看,,收藏起。。。 VMP可以这么脱么? 受教了。。。。。 感谢楼主分享! 精品文章啊 好像对我来说没多大作用 牛X呀,看到VMP都头大了,想不到可以这样脱掉。 膜拜,,,VMP还可以这样脱。。。不过这真的是2.09的VMP???OEP都没改,毫无技术含量