Elicense System V4.0脱壳――zMUD V7.05
下载页面: http://forums.zuggsoft.com/index.php?page=4&action=viewall
软件大小: 6.87M
更新日期: 2004年11月17日
软件简介: 最好的流行MUD客户端软件.是IRC,MUD网虫们喜欢的东西,让你在Internet上连接并玩那些令人着迷的MUD游戏,同时提供你很多有用的功能,是MUD玩家不能缺少的装备。
【作者声明】:只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
【调试环境】:WinXP、Ollydbg、PEiD、LordPE、ImportREC
―――――――――――――――――――――――――――――――――
【脱壳过程】:
MUD明日黄花,已经没多少人玩了。
ViaTech's eLicense System offers an integrated set of advanced e-business technologies that enables content owners (software, ebook, music, video) to securely distribute and sell products on the Internet.
Elicense System看样子是个比较老的保护软件了。最大的特点是EP=OEP,国内的比泰软件防盗版战士也是这样。Elicense System流传不广,少有人知,脱壳一篇,留作记录。
―――――――――――――――――――――――――――――――――
设置Ollydbg首先暂停在“系统断点”,用IsDebug插件去掉Ollydbg的调试器标志。
7C921231 C3 retn
//进入Ollydbg后暂停在系统断点
Alt+B打开断点查看窗口:
007A3428 Zmud 只一次 or eax,A3895A27
//删除EP处Ollydbg默认设置的断点。壳会对主EXE解码,有CC会导致解码错误。
F9运行,弹出“Powered by Elicense System”的试用对话框。
下断:BP GetModuleHandleA
点“Free Trial”,中断后取消断点Alt+F9返回
02536BD7 83BD 14FDFFFF 0>cmp dword ptr ss:[ebp-2EC],0
02536BDE 75 05 jnz short s38o.02536BE5
02536BE0 E9 A0020000 jmp s38o.02536E85
//02536E85是处理完毕则跳转的地址
02536BE5 8B95 14FDFFFF mov edx,dword ptr ss:[ebp-2EC]
02536BEB 52 push edx
02536BEC 8B85 F0FCFFFF mov eax,dword ptr ss:[ebp-310]
02536BF2 FF90 741F0000 call dword ptr ds:[eax+1F74]
//GetModuleHandleA
02536BF8 8985 18FDFFFF mov dword ptr ss:[ebp-2E8],eax; oleaut32.#355
//返回这里
02536DF1 FF90 6C1F0000 call dword ptr ds:[eax+1F6C]
//kernel32.GetProcAddress
02536E49 8985 28FDFFFF mov dword ptr ss:[ebp-2D8],eax
02536E4F 8B8D 10FDFFFF mov ecx,dword ptr ss:[ebp-2F0]
02536E55 8B95 08FDFFFF mov edx,dword ptr ss:[ebp-2F8]
02536E5B 8911 mov dword ptr ds:[ecx],edx ; oleaut32.SafeArrayPutElement
02536E5D 8B85 10FDFFFF mov eax,dword ptr ss:[ebp-2F0]
02536E63 83C0 04 add eax,4
02536E66 8985 10FDFFFF mov dword ptr ss:[ebp-2F0],eax
02536E6C E9 25FEFFFF jmp s3qg.02536C96
02536E71 8B8D 28FDFFFF mov ecx,dword ptr ss:[ebp-2D8]
02536E77 83C1 04 add ecx,4
02536E7A 898D 9CFDFFFF mov dword ptr ss:[ebp-264],ecx
02536E80 E9 EDFCFFFF jmp s3qg.02536B72
//循环
02536E85 8B95 E4FEFFFF mov edx,dword ptr ss:[ebp-11C]
//转存中可以看到处理的IAT地址范围
02536E8B 52 push edx
02536E8C E8 149B0600 call s3qg.025A09A5
02536E91 83C4 04 add esp,4
02536E94 C785 BCFDFFFF 0>mov dword ptr ss:[ebp-244],0
02536E9E EB 0F jmp short s3qg.02536EAF
第一个循环处理的是不加密的DLL函数,所以直接F4至02536E85
继续BP GetProcAddress F9运行中断后取消断点Alt+F9返回
02537A9C FF92 6C1F0000 call dword ptr ds:[edx+1F6C]
02537AA2 8985 4CFDFFFF mov dword ptr ss:[ebp-2B4],eax; COMCTL32.ImageList_SetIconSize
//返回这里
02537AA8 8B85 40FDFFFF mov eax,dword ptr ss:[ebp-2C0]
这个循环是处理一些加密DLL函数的,如COMCTL32.dll、kernel32.dll等
跟踪下去就能发现简单加密的地方,处理如下:
02537C21 8B95 4CFDFFFF mov edx,dword ptr ss:[ebp-2B4]; COMCTL32.ImageList_SetIconSize
02537C27 3311 xor edx,dword ptr ds:[ecx]
//NOP掉
02537C29 8B85 30FDFFFF mov eax,dword ptr ss:[ebp-2D0]
//修改为:mov eax,dword ptr ss:[ebp-2AC] [ebp-2AC]保存的是IAT地址
02537C2F 8910 mov dword ptr ds:[eax],edx ; COMCTL32.ImageList_SetIconSize
//这样正确的函数地址就直接填充进IAT
02537CCD 8B8D 54FDFFFF mov ecx,dword ptr ss:[ebp-2AC]; Zmud.007C7B08
02537CD3 8901 mov dword ptr ds:[ecx],eax
//NOP掉加密地址填充
02537CD5 8B95 54FDFFFF mov edx,dword ptr ss:[ebp-2AC]
02537CDB 83C2 04 add edx,4
02537CDE 8995 54FDFFFF mov dword ptr ss:[ebp-2AC],edx
02537CE4 E9 59FCFFFF jmp s74.02537942
02537CE9 8B85 7CFDFFFF mov eax,dword ptr ss:[ebp-284]
02537CEF 83C0 04 add eax,4
02537CF2 8985 98FDFFFF mov dword ptr ss:[ebp-268],eax
02537CF8 E9 DEFAFFFF jmp s74.025377DB
//循环
02537CFD 8B8D E4FEFFFF mov ecx,dword ptr ss:[ebp-11C]
//F4到这里
02537D03 51 push ecx
02537D04 E8 9C8C0600 call s74.025A09A5
02537D09 83C4 04 add esp,4
02537D0C C785 BCFDFFFF 0>mov dword ptr ss:[ebp-244],0
02537D16 EB 0F jmp short s74.02537D27
OK,输入表处理完毕,下面开始去OEP了,可以直接G 007A3428 (EP=OEP)
也可以下断:BP DeleteFileA 中断后取消断点Alt+F9返回02483C8A处
02483C84 FF15 60904902 call dword ptr ds:[2499060] ; kernel32.DeleteFileA
02483C8A E8 51360100 call elicen40.024972E0 ; jmp to WS2_32.WSACleanup
02483C8F 8985 08E4FFFF mov dword ptr ss:[ebp-1BF8],eax
02483C95 83BD B0F3FFFF 0>cmp dword ptr ss:[ebp-C50],0
02483C9C 75 05 jnz short elicen40.02483CA3
02483C9E E9 25010000 jmp elicen40.02483DC8
02483CA3 833D 4CF84902 0>cmp dword ptr ds:[249F84C],1
02483CAA 75 1D jnz short elicen40.02483CC9
02483CAC A1 3CF84902 mov eax,dword ptr ds:[249F83C]
02483CB1 50 push eax
02483CB2 A1 28F84902 mov eax,dword ptr ds:[249F828]
02483CB7 50 push eax
02483CB8 A1 74F84902 mov eax,dword ptr ds:[249F874]
02483CBD 50 push eax
02483CBE A1 7CF84902 mov eax,dword ptr ds:[249F87C]
02483CC3 FFD0 call eax
02483CC5 85C0 test eax,eax
02483CC7 74 0C je short elicen40.02483CD5
02483CC9 5E pop esi
02483CCA 5D pop ebp
02483CCB 5B pop ebx
02483CCC 8BE5 mov esp,ebp
02483CCE 5D pop ebp
02483CCF FF25 5CF84902 jmp dword ptr ds:[249F85C]; Zmud.<ModuleEntryPoint>
//飞向光明之巅! ^O^ 007A3428 55 push ebp
//用LordPE纠正ImageSize后完全Dump这个进程
007A3429 8BEC mov ebp,esp
007A342B 83C4 F4 add esp,-0C
007A342E B8 90237A00 mov eax,Zmud.007A2390
007A3433 E8 504FC6FF call Zmud.00408388
007A3438 A1 54597B00 mov eax,dword ptr ds:[7B5954]
007A343D 8B00 mov eax,dword ptr ds:[eax]
007A343F E8 C82ECAFF call Zmud.0044630C 运行ImportREC,选择这个进程。把OEP改为003A3428,IT AutoSearch,Get Import
所有的函数都是有效的。FixDump,脱壳完成!
―――――――――――――――――――――――――――――――――
, _/
/| _.-~/ \_ , 青春都一晌
( /~ / \~-._ |\
`\\ _/ \ ~\ ) 忍把浮名
_-~~~-.) )__/;;,. \_ //'
/'_,\ --~ \ ~~~- ,;;\___( (.-~~~-. 换了破解轻狂
`~ _( ,_..--\ ( ,;'' / ~-- /._`\
/~~//' /' `~\ ) /--.._, )_ `~
" `~" " `" /~'`\ `\\~~\
" " "~' ""
UnPacked By : fly
2005-04-02 00:00
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课