好友
阅读权限20
听众
最后登录1970-1-1
|
cyw
发表于 2015-7-9 19:43
本帖最后由 cyw 于 2015-7-10 20:19 编辑
@xh5510 首先很感谢XH师傅对我的悉心指导。师傅谢谢你!
第一个作业分析如下
首先先对课件查壳:
UPX -> Markus & Laszlo ver. [ ] <- from file. [ ! Modified ! ] ( sign like UPX packer )
可以确定为是UPX壳
然后我用的方法是ESP定律手脱UPX壳
第一步:载入程序,取消分析
00457580 > 60 pushad
00457581 BE 00A04300 mov esi,吾爱破解.0043A000
00457586 8DBE 0070FCFF lea edi,dword ptr ds:[esi-0x39000]
0045758C 57 push edi
0045758D 83CD FF or ebp,-0x1
00457590 EB 10 jmp short 吾爱破解.004575A2
00457592 90 nop
00457593 90 nop
00457594 90 nop
00457595 90 nop
00457596 90 nop
00457597 90 nop
第二步:F8单步一次,观察寄存器窗口 ESP突变红色
第三步:右击击ESP寄存器值0012FFA4 然后数据窗口跟随
0012FFA4 7C930208 ntdll.7C930208
0012FFA8 FFFFFFFF
0012FFAC 0012FFF0
0012FFB0 0012FFC4
0012FFB4 7FFD3000
0012FFB8 7C92E4F4 ntdll.KiFastSystemCallRet
0012FFBC 0012FFB0
第四步:在数据窗口下硬件断点
第五步:F9运行,删除硬件断点
00457758 8D4424 80 lea eax,dword ptr ss:[esp-0x80]
0045775C 6A 00 push 0x0
0045775E 39C4 cmp esp,eax
00457760 ^ 75 FA jnz short 吾爱破解.0045775C
00457762 83EC 80 sub esp,-0x80
00457765 - E9 4266FCFF jmp 吾爱破解.0041DDAC
0045776A 0000 add byte ptr ds:[eax],al
0045776C 48 dec eax
0045776D 0000 add byte ptr ds:[eax],al
0045776F 0000 add byte ptr ds:[eax],al
00457771 0000 add byte ptr ds:[eax],al
00457773 0000 add byte ptr ds:[eax],al
00457775 0000 add byte ptr ds:[eax],al
00457777 0000 add byte ptr ds:[eax],al
00457779 0000 add byte ptr ds:[eax],al
第六步:继续F8单步
0045775E 39C4 cmp esp,eax
00457760 ^ 75 FA jnz short 吾爱破解.0045775C //向上跳转不能实现
00457762 83EC 80 sub esp,-0x80 //在此行F4运行至此
00457765 - E9 4266FCFF jmp 吾爱破解.0041DDAC
0045776A 0000 add byte ptr ds:[eax],al
0045776C 48 dec eax
第七步:继续两次F8,顺利到达OEP
0041DDAC E8 EF4E0000 call 吾爱破解.00422CA0
0041DDB1 ^ E9 79FEFFFF jmp 吾爱破解.0041DC2F
0041DDB6 3B0D B0074400 cmp ecx,dword ptr ds:[0x4407B0]
0041DDBC 75 02 jnz short 吾爱破解.0041DDC0
0041DDBE F3: prefix rep:
0041DDBF C3 retn
0041DDC0 E9 714F0000 jmp 吾爱破解.00422D36
0041DDC5 8BFF mov edi,edi
0041DDC7 55 push ebp
0041DDC8 8BEC mov ebp,esp
0041DDCA 51 push ecx
0041DDCB 53 push ebx
0041DDCC 56 push esi
第八步:用OD自带插件脱壳。结束。。。。
第二个作业分析如下
还是用ESP定律脱
首先查壳nsPack ver.3.x-4.1 reg by North Star 北斗压缩壳
第一步:接着载入OD。
0044C0BF > 9C pushfd
0044C0C0 60 pushad
0044C0C1 E8 00000000 call 吾爱破解.0044C0C6
0044C0C6 5D pop ebp
0044C0C7 83ED 07 sub ebp,0x7
0044C0CA 8D85 61FCFFFF lea eax,dword ptr ss:[ebp-0x39F]
0044C0D0 8038 00 cmp byte ptr ds:[eax],0x0
0044C0D3 74 0F je short 吾爱破解.0044C0E4
0044C0D5 8D85 89FCFFFF lea eax,dword ptr ss:[ebp-0x377]
0044C0DB 8038 01 cmp byte ptr ds:[eax],0x1
0044C0DE 0F84 42020000 je 吾爱破解.0044C326
0044C0E4 C600 01 mov byte ptr ds:[eax],0x1
0044C0E7 8BD5 mov edx,ebp
第二步:观察ESP寄存器突变红色,右键数据窗口跟随
第三步:下硬件断点
第四步:F9运行,删除硬件断点
0044C33C - E9 6B1AFDFF jmp 吾爱破解.0041DDAC
0044C341 8BB5 15FCFFFF mov esi,dword ptr ss:[ebp-0x3EB]
0044C347 0BF6 or esi,esi
0044C349 0F84 97000000 je 吾爱破解.0044C3E6
0044C34F 8B95 1DFCFFFF mov edx,dword ptr ss:[ebp-0x3E3]
0044C355 03F2 add esi,edx
0044C357 833E 00 cmp dword ptr ds:[esi],0x0
0044C35A 75 0E jnz short 吾爱破解.0044C36A
0044C35C 837E 04 00 cmp dword ptr ds:[esi+0x4],0x0
0044C360 75 08 jnz short 吾爱破解.0044C36A
0044C362 837E 08 00 cmp dword ptr ds:[esi+0x8],0x0
第五步:继续F8单步。
0041DDAC E8 db E8
0041DDAD EF db EF
0041DDAE 4E db 4E ; CHAR 'N'
0041DDAF 00 db 00
0041DDB0 00 db 00
0041DDB1 E9 db E9
0041DDB2 79 db 79 ; CHAR 'y'
0041DDB3 FE db FE
0041DDB4 FF db FF
0041DDB5 FF db FF
0041DDB6 3B db 3B ; CHAR ';'
0041DDB7 0D db 0D
0041DDB8 B0 db B0
0041DDB9 07 db 07
0041DDBA 44 db 44 ; CHAR 'D'
接着右键删除分析,到达OEP,接着脱壳!
0041DDAC E8 EF4E0000 call 吾爱破解.00422CA0
0041DDB1 ^ E9 79FEFFFF jmp 吾爱破解.0041DC2F
0041DDB6 3B0D B0074400 cmp ecx,dword ptr ds:[0x4407B0]
0041DDBC 75 02 jnz short 吾爱破解.0041DDC0
0041DDBE F3: prefix rep:
0041DDBF C3 retn
0041DDC0 E9 714F0000 jmp 吾爱破解.00422D36
0041DDC5 8BFF mov edi,edi
0041DDC7 55 push ebp
0041DDC8 8BEC mov ebp,esp
OEP代码
第三个作业分析如下
查壳:FSG v2.0 F[ast] S[mall] G[ood]
ESP定律不能用了 单步F8直到软件跑起来
第一步:载入程序
00400154 > 8725 E4624700 xchg dword ptr ds:[0x4762E4],esp
0040015A 61 popad
0040015B 94 xchg eax,esp
0040015C 55 push ebp
0040015D A4 movs byte ptr es:[edi],byte ptr ds:[esi]
0040015E B6 80 mov dh,0x80
00400160 FF13 call dword ptr ds:[ebx]
00400162 ^ 73 F9 jnb short 吾爱破解.0040015D //下一行F4,打断上跳
00400164 33C9 xor ecx,ecx
00400166 FF13 call dword ptr ds:[ebx]
00400168 73 16 jnb short 吾爱破解.00400180
0040016A 33C0 xor eax,eax
继续用上面的步骤直到程序跑起来
00400168 /73 16 jnb short 吾爱破解.00400180
0040016A |33C0 xor eax,eax
0040016C |FF13 call dword ptr ds:[ebx]
0040016E |73 1F jnb short 吾爱破解.0040018F
00400170 |B6 80 mov dh,0x80
00400172 |41 inc ecx
00400173 |B0 10 mov al,0x10
00400175 |FF13 call dword ptr ds:[ebx]
00400177 |12C0 adc al,al
00400179 ^|73 FA jnb short 吾爱破解.00400175 //这里有两个跳
0040017B |75 3A jnz short 吾爱破解.004001B7
0040017D |AA stos byte ptr es:[edi] //在这行F4
0040017E ^|EB E0 jmp short 吾爱破解.00400160
00400180 \FF53 08 call dword ptr ds:[ebx+0x8]
00400183 02F6 add dh,dh
00400172 41 inc ecx
00400173 B0 10 mov al,0x10
00400175 FF13 call dword ptr ds:[ebx]
00400177 12C0 adc al,al
00400179 ^ 73 FA jnb short 吾爱破解.00400175
0040017B 75 3A jnz short 吾爱破解.004001B7
0040017D AA stos byte ptr es:[edi]
0040017E ^ EB E0 jmp short 吾爱破解.00400160 //这里要打断上跳
00400180 FF53 08 call dword ptr ds:[ebx+0x8]
00400183 02F6 add dh,dh //在此行F4
00400185 83D9 01 sbb ecx,0x1
004001C6 FF53 10 call dword ptr ds:[ebx+0x10]
004001C9 95 xchg eax,ebp
004001CA 8B07 mov eax,dword ptr ds:[edi]
004001CC 40 inc eax
004001CD ^ 78 F3 js short 吾爱破解.004001C2
004001CF 75 03 jnz short 吾爱破解.004001D4
004001D1 FF63 0C jmp dword ptr ds:[ebx+0xC]
004001D4 50 push eax
004001D5 55 push ebp
004001D6 FF53 14 call dword ptr ds:[ebx+0x14]
004001D9 AB stos dword ptr es:[edi]
004001DA ^ EB EE jmp short 吾爱破解.004001CA
004001DC 33C9 xor ecx,ecx //运行到此行,程序跑起来了
004001DE 41 inc ecx
004001DF FF13 call dword ptr ds:[ebx]
程序跑起来了。在运行的那个jmp地方上面找最近的jmp F2下断
重新运行后,F9运行
004001D1 - FF63 0C jmp dword ptr ds:[ebx+0xC] ; 吾爱破解.0041DDAC
004001D4 50 push eax
004001D5 55 push ebp
004001D6 FF53 14 call dword ptr ds:[ebx+0x14]
004001D9 AB stos dword ptr es:[edi]
004001DA ^ EB EE jmp short 吾爱破解.004001CA
004001DC 33C9 xor ecx,ecx
004001DE 41 inc ecx
004001DF FF13 call dword ptr ds:[ebx]
004001E1 13C9 adc ecx,ecx
004001E3 FF13 call dword ptr ds:[ebx]
004001E5 ^ 72 F8 jb short 吾爱破解.004001DF
004001E7 C3 retn
程序已经断下来了,F7进入,右键删除分析,到达OEP
0041DDAC E8 EF4E0000 call 吾爱破解.00422CA0
0041DDB1 ^ E9 79FEFFFF jmp 吾爱破解.0041DC2F
0041DDB6 3B0D B0074400 cmp ecx,dword ptr ds:[0x4407B0]
0041DDBC 75 02 jnz short 吾爱破解.0041DDC0
0041DDBE F3: prefix rep:
0041DDBF C3 retn
0041DDC0 E9 714F0000 jmp 吾爱破解.00422D36
0041DDC5 8BFF mov edi,edi
0041DDC7 55 push ebp
0041DDC8 8BEC mov ebp,esp
0041DDCA 51 push ecx
0041DDCB 53 push ebx
然后OD插件脱壳、打开程序 提示找不到入口点
显然这个OD插件脱这种壳不管用
换LordPE脱壳 dumped完成后,发现程序还是不能打开。
用Import REC修复输入表
OEP:0001DDAC
RVA:00032000
Size:00000200
终于脱壳完成了。OK了!
作业地址:链接:http://share.weiyun.com/eda90c075683fb3444cca016a0767741 (密码:LHjx)
虽然这次作业不是自己独立完成的,靠着师傅的指导完成,但是我从中体会到了自己手动脱壳成功的喜悦,本来之前要放弃了,但是经过今天的小小的成功,我顿时感觉信心足足的!我会继续努力的!
续。。。。。。。。
之前做的作业在XP环境下运行正常,但是在WIN7下运行就出问题了,今天在群里得到了答案,现在再把修复好的作业再提交上来,这次在WIN7和XP环境下都可以完美运行了!
修复作业地址:链接:http://share.weiyun.com/bbf9d6a0a2978bee1482e54bf4e3d3b9 (密码:7BcW)
|
免费评分
-
参与人数 1 | 吾爱币 +1 |
热心值 +1 |
收起
理由
|
忒会破解
| + 1 |
+ 1 |
你好,能教教我如何让脱壳后的软件在win7下正常运行吗,感激不尽! |
查看全部评分
|