【破文标题】手动跟踪脱吗啡脱壳机1.0[火狐小强版]
【破文作者】marsaber
【作者邮箱】marsaber@163.com
【作者主页】555
【破解工具】Peid 0.93、FI 3.01、Ollydbg 1.1[fly版]
【破解平台】Windows2003 SP1
【软件名称】吗啡脱壳机1.0
【软件大小】184K
【原版下载】老火狐论坛的东西了
【保护方式】不知道
【软件简介】脱壳机
------------------------------------------------------------------------
【破解过程】脱壳目的:"浏览"键高宽太小了,难看,想编辑一下。PE Explorer 1.97打开,"资源查看/编辑器
"(好像没加壳啊)-->"资源"-->"对话框"和"RC数据",但是都不能编辑,初步判断是Delphi编写的
且有伪装壳!继而判断得到入口代码类似于下面的:
004B7220 > 55 push ebp
004B7221 8BEC mov ebp,esp
004B7223 83C4 F0 add esp,-10
004B7226 B8 A86F4B00 mov eax,Pe.004B6FA8
004B722B E8 6CF4F4FF call Pe.0040669C
004B7230 A1 C4A04B00 mov eax,dword ptr ds:[4BA0C4]
004B7235 8B00 mov eax,dword ptr ds:[eax]
004B7237 E8 C48CFCFF call Pe.0047FF00
查壳 :Peid 0.92:[代码未能识别] *
FI 3.01 :PE Win GUI *Unknown*
步骤 :
1.OllyDbyDYK载入,没有任何提示到达(难道真没壳?):
00474645 吗>/$ 55 push ebp ;很容易认为是壳的入口啊!
00474646 |. 8BEC mov ebp,esp
00474648 |. 81EC D4010000 sub esp,1D4
2.F8下跳,
004746E5 |. 68 C4424700 push 吗啡脱壳.004742C4 ; |Title = "Nfo"
004746EA |. 68 C8424700 push 吗啡脱壳.004742C8 ; |Text = "This
program was packed with a demo version of eXPressor"
004746EF |. 6A 01 push 1 ; |hOwner = 00000001
004746F1 |. FF15 C8444700 call dword ptr ds:[<&USER32.Mes>; \MessageBoxA
在004746F1处,F7跟进到达:
77E4D8DE U> 8BFF mov edi,edi ;004746F1的call语句跳到这。
77E4D8E0 55 push ebp
77E4D8E1 8BEC mov ebp,esp
77E4D8E3 833D 1821E777 0>cmp dword ptr ds:[77E72118],0
77E4D8EA 74 24 je short USER32.77E4D910
77E4D8EC 64:A1 18000000 mov eax,dword ptr fs:[18]
77E4D8F2 6A 00 push 0
77E4D8F4 FF70 24 push dword ptr ds:[eax+24]
77E4D8F7 68 442FE777 push USER32.77E72F44
77E4D8FC FF15 D012E177 call dword ptr ds:[<&KERNEL32.I>;
kernel32.InterlockedCompareExchange
77E4D902 85C0 test eax,eax
77E4D904 75 0A jnz short USER32.77E4D910
77E4D906 C705 402FE777 0>mov dword ptr ds:[77E72F40],1
77E4D910 6A 00 push 0
77E4D912 FF75 14 push dword ptr ss:[ebp+14]
77E4D915 FF75 10 push dword ptr ss:[ebp+10]
77E4D918 FF75 0C push dword ptr ss:[ebp+C]
77E4D91B FF75 08 push dword ptr ss:[ebp+8]
77E4D91E E8 4D040000 call USER32.MessageBoxExA
77E4D923 5D pop ebp
77E4D924 C2 1000 retn 10 ;返回到004746F7。
004746F7 |. A1 58554700 mov eax,dword ptr ds:[475558]
004746FC |. 8985 48FEFFFF mov dword ptr ss:[ebp-1B8],eax
00474702 |. 8B85 48FEFFFF mov eax,dword ptr ss:[ebp-1B8]
00474708 |. 8B0D 58554700 mov ecx,dword ptr ds:[475558] ; 吗啡脱壳.00400000
0047470E |. 0348 3C add ecx,dword ptr ds:[eax+3C]
00474711 |. 894D F4 mov dword ptr ss:[ebp-C],ecx
00474714 |. 8B45 F4 mov eax,dword ptr ss:[ebp-C]
然后一直F8下跳,到达:
004748BC |. /75 6C |jnz short 吗啡脱壳.0047492A
下跳到:
0047492A |>^\E9 54FEFFFF \jmp 吗啡脱壳.00474783
在0047492A处F8后到达:
00474783 |> /8B85 60FEFFFF /mov eax,dword ptr ss:[ebp-1A0]
然后一直F8下跳,又返回到:
0047492A |>^\E9 54FEFFFF \jmp 吗啡脱壳.00474783
这里如果你再继续F8的话,就会在那绕圈子了!
所以我:
0047492A |>^\E9 54FEFFFF \jmp 吗啡脱壳.00474783
0047492F |> 68 00800000 push 8000 ; /FreeType = MEM_RELEASE
00474934 |. 6A 00 push 0 ; |Size = 0,这句上跳的!
00474936 |. FFB5 50FEFFFF push dword ptr ss:[ebp-1B0] ; |Address,这句也是上跳
的!
0047493C |. FF15 A0444700 call dword ptr ds:[<&KERNEL32.V>; \VirtualFree
00474942 |. A1 58554700 mov eax,dword ptr ds:[475558] ; 该句F4下断!
00474B93 |. 8985 E4FEFFFF ||mov dword ptr ss:[ebp-11C],ea>
00474B99 |.^ E9 B2FEFFFF |\jmp 吗啡脱壳.00474A50 ;回跳!
00474B9E |> 8B85 3CFEFFFF |mov eax,dword ptr ss:[ebp-1C4] ;F4下断!
00474BA4 |. 83C0 14 |add eax,14
00474BA7 |. 8985 3CFEFFFF |mov dword ptr ss:[ebp-1C4],eax
00474BAD |.^ E9 A1FDFFFF \jmp 吗啡脱壳.00474953 ;回跳!
00474BB2 |> A1 88404700 mov eax,dword ptr ds:[474088] ;F4下断!
00474BB7 |. 3B05 58554700 cmp eax,dword ptr ds:[475558] ; 吗啡脱壳.00400000
00474BBD |. 0F84 D6010000 je 吗啡脱壳.00474D99
00474BC3 |. 833D 94404700>cmp dword ptr ds:[474094],0
00474BCA |. 0F84 C9010000 je 吗啡脱壳.00474D99
00474BD0 |. A1 58554700 mov eax,dword ptr ds:[475558]
一直下跳,跳到:
00474DBF |.- FFE0 jmp eax ; 吗啡脱壳.00455D84
F8继续下跳,到达:
00455D84 55 push ebp ;到达这里,dump下来!
得到OEP=55D84,dump下,保存为55D84.exe。运行正常,程序大小:483K,Ollydbg退出后,
Peid 0.93查壳,Nothing found *,再Ollydbg载入,有提示:"模块"55D84"的入口点位于代码外部
(例如在PE文件头中被指定)。可能这个文件具有自解压或者自修改功能。请您在设置断点的时候记
住这一点"。看到这,好像没脱掉壳似的,不予理会。PE Explorer 1.97打开,"资源查看/编辑
器"-->"资源"-->"RC数据",OK,可以编辑了,说明脱壳成功了!接着编辑编辑调整调整,编辑完
后是不能运行的,需要修复。
------------------------------------------------------------------------
【破解总结】这个程序我6月份脱过一次并且还做了动画,放到火狐论坛上了,由于火狐被DDoS,改版后的火狐数据库丢了,所以一直没找到那录象,于是又啃了半天,终于干掉了!耐心+耐心+耐心+....
------------------------------------------------------------------------
【版权声明】本文纯属技术交流,转载请注明作者信息并保持文章的完整,谢谢!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课