吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8766|回复: 10
收起左侧

[分享] 自己收集的关于vmp脱壳的经验,以后不断更新...大神们飞过吧!

  [复制链接]
zhangyumhnh 发表于 2013-1-14 21:05
   

   

VMP主要脱壳思想:
因为是内存对称映射,所有要找到内存释放的地方。
OD载入(必须是加强的,建议插件StrongOD)
转到VirtualProtect下断
重新执行
查看内存堆栈
注意ADDRESS和NEWPROTECT
看内存什么时候释放的
再次重新载入
到内存释放的前一次停止
取消断点
然后就是找OEP了  
一般OEP都在附近
废话不多说,CTRL+S 查找命令序列。命令序列的内容就是我们用查到的编程语言的特征段。我们可以在特征段里面选择两三句固定不变的命令查找。
例如VC++6.0的特征段是
0046C07B U>  55                push ebp
0046C07C     8BEC              mov ebp,esp
0046C07E     6A FF             push -1
0046C080     68 18064C00       push UltraSna.004C0618
0046C085     68 F8364700       push UltraSna.004736F8
0046C08A     64:A1 00000000    mov eax,dword ptr fs:[0]
0046C090     50                push eax
0046C091     64:8925 00000000  mov dword ptr fs:[0],esp
0046C098     83EC 58           sub esp,58
0046C09B     53                push ebx
0046C09C     56                push esi
0046C09D     57                push edi
   我们可以只搜索前三条命令。找到符合前三条命令的,我们在对照接下来的命令。只要命令相符那这个地址八九不离十就是OEP了。如果在ADDRESS地址附近找不到OEP,那就只好用笨办法,从401000开始找吧。
    找到OEP地址后,我们在OEP处点鼠标右键《此处为新EIP》。接下来就可以dump啦。通常选择OD的dump插件脱壳要好点,用loadpe脱壳后要么程序不运行要么干脆没脱。用OD的dump插件脱壳的时候,脱壳窗口下面的(重建输入表)项前面的勾一定要去掉,这个也是前辈总结的经验。
    到此脱壳就结束了。可以试验一下脱壳后的程序了。能运行说明它在70-80%的范围,不能运行的话那也是我还在学习的内容,大家共同探讨!
    以下是主要几种编程语言的OEP特征段:
Borland C++
0040163C B> /EB 10             jmp short Borland_.0040164E
0040163E    |66:623A           bound di,dword ptr ds:[edx]
00401641    |43                inc ebx
00401642    |2B2B              sub ebp,dword ptr ds:[ebx]
00401644    |48                dec eax
00401645    |4F                dec edi
00401646    |4F                dec edi
00401647    |4B                dec ebx
00401648    |90                nop
00401649   -|E9 98E04E00       jmp SHELL32.008EF6E6
0040164E    \A1 8BE04E00       mov eax,dword ptr ds:[4EE08B]
00401653     C1E0 02           shl eax,2
00401656     A3 8FE04E00       mov dword ptr ds:[4EE08F],eax
0040165B     52                push edx
0040165C     6A 00             push 0
0040165E     E8 DFBC0E00       call <jmp.&KERNEL32.GetModuleHandleA>
**********************************************************************************
Delphi
00458650 D>  55                push ebp
00458651     8BEC              mov ebp,esp
00458653     83C4 F0           add esp,-10
00458656     B8 70844500       mov eax,Delphi.00458470
0045865B     E8 00D6FAFF       call Delphi.00405C60
00458660     A1 58A14500       mov eax,dword ptr ds:[45A158]
00458665     8B00              mov eax,dword ptr ds:[eax]
00458667     E8 E0E1FFFF       call Delphi.0045684C
0045866C     A1 58A14500       mov eax,dword ptr ds:[45A158]
00458671     8B00              mov eax,dword ptr ds:[eax]
00458673     BA B0864500       mov edx,Delphi.004586B0
00458678     E8 DFDDFFFF       call Delphi.0045645C
0045867D     8B0D 48A24500     mov ecx,dword ptr ds:[45A248]            ; Delphi.0045BC00
00458683     A1 58A14500       mov eax,dword ptr ds:[45A158]
00458688     8B00              mov eax,dword ptr ds:[eax]
0045868A     8B15 EC7D4500     mov edx,dword ptr ds:[457DEC]            ; Delphi.00457E38
00458690     E8 CFE1FFFF       call Delphi.00456864
00458695     A1 58A14500       mov eax,dword ptr ds:[45A158]
0045869A     8B00              mov eax,dword ptr ds:[eax]
0045869C     E8 43E2FFFF       call Delphi.004568E4
**********************************************************************************
Visual C++ 6.0
0046C07B U>  55                push ebp
0046C07C     8BEC              mov ebp,esp
0046C07E     6A FF             push -1
0046C080     68 18064C00       push UltraSna.004C0618
0046C085     68 F8364700       push UltraSna.004736F8
0046C08A     64:A1 00000000    mov eax,dword ptr fs:[0]
0046C090     50                push eax
0046C091     64:8925 00000000  mov dword ptr fs:[0],esp
0046C098     83EC 58           sub esp,58
0046C09B     53                push ebx
0046C09C     56                push esi
0046C09D     57                push edi
0046C09E     8965 E8           mov dword ptr ss:[ebp-18],esp
0046C0A1     FF15 74824A00     call dword ptr ds:[<&KERNEL32.GetVersion>]  ; kernel32.GetVersion
0046C0A7     33D2              xor edx,edx
0046C0A9     8AD4              mov dl,ah
0046C0AB     8915 403F4F00     mov dword ptr ds:[4F3F40],edx
0046C0B1     8BC8              mov ecx,eax
0046C0B3     81E1 FF000000     and ecx,0FF
0046C0B9     890D 3C3F4F00     mov dword ptr ds:[4F3F3C],ecx
**********************************************************************************
Visual C++ 7.0
0100739D > $  6A 70         push 0x70
0100739F   .  68 98180001   push NOTEPAD.01001898
010073A4   .  E8 BF010000   call NOTEPAD.01007568
010073A9   .  33DB          xor ebx,ebx
**********************************************************************************
汇编
00401000 汇>  6A 00            push 0
00401002     E8 C50A0000       call <jmp.&KERNEL32.GetModuleHandleA>
00401007     A3 0C354000       mov dword ptr ds:[40350C],eax
0040100C     E8 B50A0000       call <jmp.&KERNEL32.GetCommandLineA>
00401011     A3 10354000       mov dword ptr ds:[403510],eax
00401016     6A 0A             push 0A
00401018     FF35 10354000     push dword ptr ds:[403510]
0040101E     6A 00             push 0
00401020     FF35 0C354000     push dword ptr ds:[40350C]
00401026     E8 06000000       call 汇编.00401031
0040102B     50                push eax
0040102C     E8 8F0A0000       call <jmp.&KERNEL32.ExitProcess>
00401031     55                push ebp
00401032     8BEC              mov ebp,esp
00401034     83C4 B0           add esp,-50
00401037     C745 D0 30000000  mov dword ptr ss:[ebp-30],30
0040103E     C745 D4 0B000000  mov dword ptr ss:[ebp-2C],0B
00401045     C745 D8 37114000  mov dword ptr ss:[ebp-28],汇编.00401137
**********************************************************************************
VB
0040116C V>/$  68 147C4000     push VB.00407C14
00401171   |.  E8 F0FFFFFF     call <jmp.&MSVBVM60.#100>
00401176   |.  0000            add byte ptr ds:[eax],al
00401178   |.  0000            add byte ptr ds:[eax],al
0040117A   |.  0000            add byte ptr ds:[eax],al
0040117C   |.  3000            xor byte ptr ds:[eax],al

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

mycc 发表于 2013-1-14 22:59

到了 OEP  修复好 IAT 才是万里长城的第一步 , anti dump , file check , cpuid , 资源修复, 处理被 vm 的分支 。。。。。。。。。。。
asd113305382 发表于 2013-1-16 09:15
hja45456 发表于 2013-1-16 08:50
醉月清风 发表于 2013-1-16 08:40
Visual C++ 7.0
0100739D > $  6A 70         push 0x70
0100739F   .  68 98180001   push NOTEPAD.01001898
010073A4   .  E8 BF010000   call NOTEPAD.01007568
010073A9   .  33DB          xor ebx,ebx

楼主强大啊,好多资料没有这个的入口特征
orachard 发表于 2013-1-16 15:09
VMP这类强壳,目前我都还是望而却步啊~~
Q3522632 发表于 2013-2-1 13:39
VMP我连想都不敢想。
小雨细无声 发表于 2013-3-11 09:16
谢谢楼主分享
pht000 发表于 2013-7-8 11:21
谢谢楼主提供!!!
gs168 发表于 2014-4-3 21:31
谢谢楼主提供!!!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-18 04:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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