- UID
- 21039
注册时间2006-9-10
阅读权限20
最后登录1970-1-1
以武会友
TA的每日心情 | 奋斗 2023-12-2 20:17 |
---|
签到天数: 3 天 [LV.2]偶尔看看I
|
一次手脱arm+upx双层壳+自校验
完整动画请到 http://www.21disk.com 下载 提取码:10001381400331258533373415709
【脱壳文件】Easy_CD_Ripper 2.37
【下载地址】http://sy.newhua.com/down/ezcdr_inst.exe
【加壳方式】Armadillo 3.00a-3.61->Silicon Realms Toolworks+UPX 0.89.6-1.02/1.05-1.24 stub ->Markus & Laszlo
【作者声明】:只是感兴趣,没有其他目的。错误之处敬请诸位前辈不吝赐教
【调试环境】:Winxp、OllyDBD、PEiD
【软件信息】:Easy CD Ripper可将CD音乐及WAV直接转换成MP3、WMA、VQF格式的工具,采用全新快速的MP3编码(LAME v3.89)、支持CDDB、且使用上相当简单快速。
00561000 E> 60 pushad ; OD入口点
00561001 E8 00000000 call Easy_CD_.00561006
00561006 5D pop ebp
00561007 50 push eax
00561008 51 push ecx
00561009 EB 0F jmp short Easy_CD_.0056101A
-------------------------------------------------------------------------------------------------------------------------------------------------------------
HE GetModuleHandleA Shift+F9 一次。
堆栈中:
===============================================================
0012D264 00BB519B /CALL 到 GetModuleHandleA 来自 00BB5195
0012D268 0012D3A0 \pModule = "kernel32.dll"
===============================================================
删除断点,Alt+F9 返回。
00BB519B 8B0D 80D7BD00 mov ecx,dword ptr ds:[BDD780] ; 来到这里。
00BB51A1 89040E mov dword ptr ds:[esi+ecx],eax
00BB51A4 A1 80D7BD00 mov eax,dword ptr ds:[BDD780]
00BB51A9 393C06 cmp dword ptr ds:[esi+eax],edi
00BB51AC 75 16 jnz short 00BB51C4
00BB51AE 8D85 B4FEFFFF lea eax,dword ptr ss:[ebp-14C]
00BB51B4 50 push eax
00BB51B5 FF15 B850BD00 call dword ptr ds:[BD50B8] ; kernel32.LoadLibraryA
00BB51BB 8B0D 80D7BD00 mov ecx,dword ptr ds:[BDD780]
00BB51C1 89040E mov dword ptr ds:[esi+ecx],eax
00BB51C4 A1 80D7BD00 mov eax,dword ptr ds:[BDD780]
00BB51C9 393C06 cmp dword ptr ds:[esi+eax],edi
00BB51CC 0F84 AD000000 je 00BB527F ; Magic Jump! 修改为:jmp 00BB527F ★
00BB51D2 33C9 xor ecx,ecx
00BB51D4 8B03 mov eax,dword ptr ds:[ebx]
00BB51D6 3938 cmp dword ptr ds:[eax],edi
00BB51D8 74 06 je short 00BB51E0
--------------------------------------------------------------------------------------------------------------------------------------------------------------
BP GetCurrentThreadId [ESP]<10000000,Shift+F9 运行。
7C809737 k> 64:A1 18000000 mov eax,dword ptr fs:[18]
7C80973D 8B40 24 mov eax,dword ptr ds:[eax+24]
7C809740 C3 retn
7C809741 90 nop
取消断点。Alt+F9 返回。
00BCCF47 A3 8C16BE00 mov dword ptr ds:[BE168C],eax ; 到这里了。
00BCCF4C E8 5F85FEFF call 00BB54B0
00BCCF51 6A 00 push 0
00BCCF53 E8 51E0FEFF call 00BBAFA9
00BCCF58 59 pop ecx
00BCCF59 E8 074CFFFF call 00BC1B65
。。。。。。。。。。
00BCCFA5 83F9 01 cmp ecx,1
00BCCFA8 75 22 jnz short 00BCCFCC
00BCCFAA FF76 04 push dword ptr ds:[esi+4]
00BCCFAD FF76 08 push dword ptr ds:[esi+8]
00BCCFB0 6A 00 push 0
00BCCFB2 E8 AE4BFFFF call 00BC1B65
00BCCFB7 50 push eax
00BCCFB8 A1 8016BE00 mov eax,dword ptr ds:[BE1680]
00BCCFBD 8B48 60 mov ecx,dword ptr ds:[eax+60]
00BCCFC0 3348 58 xor ecx,dword ptr ds:[eax+58]
00BCCFC3 3348 34 xor ecx,dword ptr ds:[eax+34]
00BCCFC6 2BF9 sub edi,ecx
00BCCFC8 FFD7 call edi ; 进入,里面是ARM的OEP!
00BCCFCA 8BD8 mov ebx,eax
进入00BCCFC8。
00516C30 60 pushad ; 这里是ARM的OEP!
00516C31 BE 00204C00 mov esi,Easy_CD_.004C2000
00516C36 8DBE 00F0F3FF lea edi,dword ptr ds:[esi+FFF3F000]
00516C3C C787 C0F00C00 8C0>mov dword ptr ds:[edi+CF0C0],40B0C8>
00516C46 57 push edi
00516C47 83CD FF or ebp,FFFFFFFF
00516C4A EB 0E jmp short Easy_CD_.00516C5A
00516C4C 90 nop
--------------------------------------------------------------------------------------------------------------------------------------------------------------
开始脱upx。
F8一次,到00516C31,注意ESP=0012F554。
hr 0012F554,F9一次。
00516D9B ^\E9 0884FBFF jmp Easy_CD_.004CF1A8
00516DA0 B8 6D5100F0 mov eax,F000516D
00516DA5 6D ins dword ptr es:[edi],dx
00516DA6 51 push ecx
00516DA7 00C0 add al,al
00516DA9 004D 00 add byte ptr ss:[ebp],cl
00516DAC 0000 add byte ptr ds:[eax],al
再F8一次。
004CF1A8 55 push ebp ; upx的OEP!
004CF1A9 8BEC mov ebp,esp
004CF1AB B9 05000000 mov ecx,5
004CF1B0 6A 00 push 0
004CF1B2 6A 00 push 0
004CF1B4 49 dec ecx
004CF1B5 ^ 75 F9 jnz short Easy_CD_.004CF1B0
004CF1B7 51 push ecx
004CF1B8 53 push ebx
004CF1B9 B8 40EE4C00 mov eax,Easy_CD_.004CEE40
004CF1BE E8 797AF3FF call Easy_CD_.00406C3C
004CF1C3 33C0 xor eax,eax
004CF1C5 55 push ebp
004CF1C6 68 D7F34C00 push Easy_CD_.004CF3D7
004CF1CB 64:FF30 push dword ptr fs:[eax]
004CF1CE 64:8920 mov dword ptr fs:[eax],esp
004CF1D1 8D55 EC lea edx,dword ptr ss:[ebp-14]
004CF1D4 B8 01000000 mov eax,1
004CF1D9 E8 DE38F3FF call Easy_CD_.00402ABC
004CF1DE 8B45 EC mov eax,dword ptr ss:[ebp-14]
004CF1E1 BA ECF34C00 mov edx,Easy_CD_.004CF3EC ; ASCII "/reg"
004CF1E6 E8 555DF3FF call Easy_CD_.00404F40
-------------------------------------------------------------------------------------------------------------------------------------------------------------
运行LordPE,DUMP,保存为dumped.exe。
运行RecImport,OEP=CF1A8,RVA=D617C,获取输入表,剪切2个无效指针,得到434个指针,抓取修复文件,保存为dumped_.exe。
关闭OD。
自校验解除
运行脱壳文件,在启动界面结束后,CPU占用到100%,系统资源快被它消耗尽了!
这个软件不能改动文件名!先把dumped_.exe修改成未脱壳的文件名Easy_CD_Ripper。
打开OD,载入修改成未脱壳的文件名的Easy_CD_Ripper.exe。
按照狂吃内存的现象,学习了fly兄弟的教程,知道自校验失败的话就会爆发“窗口炸弹”了。
下断:BP FileTimeToLocalFileTime 。
一路F9,待启动界面消失后,就要慢了,注意堆栈的变化。
=============================================================================
0012F8CC 00409674 /CALL 到 FileTimeToLocalFileTime 来自 Easy_CD_.0040966F
0012F8D0 0012F8F0 |pFileTime = 0012F8F0
0012F8D4 0012FA1C \pLocalFileTime = 0012FA1C
=============================================================================
在pFileTime = 0012F8F0时,开始F8。
来到这里。
004CB51E /74 0F je short Easy_CD_.004CB52F ; je 004CB52F-->jmp 004CB52F
004CB520 |B8 00004000 mov eax,Easy_CD_.00400000 ; ASCII "MZP"
004CB525 |E8 76D6F3FF call Easy_CD_.00408BA0
004CB52A |8945 DC mov dword ptr ss:[ebp-24],eax
004CB52D ^|EB F1 jmp short Easy_CD_.004CB520
004CB52F \8BC3 mov eax,ebx
004CB531 E8 B687F3FF call Easy_CD_.00403CEC
004CB536 A1 A0374D00 mov eax,dword ptr ds:[4D37A0]
004CB53B 8038 00 cmp byte ptr ds:[eax],0
004CB53E 74 1B je short Easy_CD_.004CB55B
004CB540 A1 A0374D00 mov eax,dword ptr ds:[4D37A0]
004CB545 8078 01 00 cmp byte ptr ds:[eax+1],0
004CB549 75 10 jnz short Easy_CD_.004CB55B
修改004CB51E,je 004CB52F-->jmp 004CB52F,保存文件。
-------------------------------------------------------------------------------------------------------------------------------------------------------------
运行脱壳文件,OK。
00516C30 60 pushad ; 这里是ARM的OEP!
哦还要说一下
这是马大哥的教程
unpack.cn
马大哥的教程详细^_^跟着做几次就明白了
不动了。完蛋了
知道这个地址便直接拖过去
我也是菜鸟,如有错请各位大侠纠正向大侠学习
后面便是脱壳的优化了。
一次手脱arm+upx双层壳+自校验
[ 本帖最后由 enjon 于 2007-8-27 06:12 编辑 ] |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?加入我们
x
|