首页
社区
课程
招聘
[原创]笨笨菜菜脱壳练手三之ASProtect 1.23 RC4 - 1.3.08.24
发表于: 2006-10-6 00:26 6138

[原创]笨笨菜菜脱壳练手三之ASProtect 1.23 RC4 - 1.3.08.24

2006-10-6 00:26
6138
[菜菜打杂]笨笨菜菜脱壳练手三之ASProtect 1.23 RC4 - 1.3.08.24

【破解作者】 EasyStudy

【作者邮箱】 PhantomNet@163.com

【使用工具】 ODICE,LordPE,ImprotREC16F

【破解平台】 Win9x/NT/2000/XP

【软件名称】 探测到是用ASProtect 1.23 RC4 - 1.3.08.24加壳的MAIN.EXE

【加壳方式】 ASProtect 1.23 RC4

【破解声明】  我是只菜菜鸟,技术不高给新手和想学脱壳的给个示范,希望共同学习!

声明:我是在大大们的基础资料上学习的,谢谢大大们!

压缩壳我基本都脱了一遍...
现在我们来看保护壳,最后学习..变态壳...
//========================脱壳相关======================
[LOGIN]
Version=1.02.11
TestVersion=1.02.11
[PARTITION]
Version=194
//========================================================

好我们开始..

比较难先做好准备:

1.查壳:
PEID查到是:

ASProtect 1.23 RC4 - 1.3.08.24 -> Alexey Solodovnikov [Overlay]

这个是不是保护壳..大家应该清楚吧:

2.在开始之前,把调试设置除内存异常之外,其他都忽略...OD跟入:
00401000 >  68 0110D507     PUSH main.07D51001
00401005    E8 01000000     CALL main.0040100B
0040100A    C3              RETN
0040100B    C3              RETN

//SHIFT+F9 大约16次到这里..这里是特征哦:

088539EC    3100            XOR DWORD PTR DS:[EAX],EAX
088539EE    64:8F05 0000000>POP DWORD PTR FS:[0]
088539F5    58              POP EAX
088539F6    833D B07E8508 0>CMP DWORD PTR DS:[8857EB0],0
088539FD    74 14           JE SHORT 08853A13
088539FF    6A 0C           PUSH 0C
08853A01    B9 B07E8508     MOV ECX,8857EB0
08853A06    8D45 F8         LEA EAX,DWORD PTR SS:[EBP-8]
08853A09    BA 04000000     MOV EDX,4
08853A0E    E8 2DD1FFFF     CALL 08850B40
08853A13    FF75 FC         PUSH DWORD PTR SS:[EBP-4]
08853A16    FF75 F8         PUSH DWORD PTR SS:[EBP-8]
08853A19    8B45 F4         MOV EAX,DWORD PTR SS:[EBP-C]
08853A1C    8338 00         CMP DWORD PTR DS:[EAX],0
08853A1F    74 02           JE SHORT 08853A23
08853A21    FF30            PUSH DWORD PTR DS:[EAX]
08853A23    FF75 F0         PUSH DWORD PTR SS:[EBP-10]
08853A26    FF75 EC         PUSH DWORD PTR SS:[EBP-14]
08853A29    C3              RETN                 //F2这里断下,SHIFT+F9在这里,取消断点.
08853A2A    5F              POP EDI
08853A2B    5E              POP ESI
08853A2C    5B              POP EBX
08853A2D    8BE5            MOV ESP,EBP
08853A2F    5D              POP EBP
08853A30    C3              RETN

//看到了堆载为:
0012FF60   00400000  main.00400000
0012FF64   B2487E7B
0012FF68   0012FFA4

//下断点HR 0012FF68

//F9到这里:

08864D94   /EB 44           JMP SHORT 08864DDA
08864D96   |EB 01           JMP SHORT 08864D99
08864D98   |9A 51579CFC BF0>CALL FAR 00BF:FC9C5751                   ; 远调用
08864D9F   |0000            ADD BYTE PTR DS:[EAX],AL
08864DA1   |00B9 00000000   ADD BYTE PTR DS:[ECX],BH
08864DA7   |F3:AA           REP STOS BYTE PTR ES:[EDI]
08864DA9   |9D              POPFD
08864DAA   |5F              POP EDI
08864DAB   |59              POP ECX
08864DAC   |C3              RETN

//F8跟

08864DDA    03C3            ADD EAX,EBX                              ; main.00400000
08864DDC    BB 2E010000     MOV EBX,12E
08864DE1    0BDB            OR EBX,EBX
08864DE3    75 07           JNZ SHORT 08864DEC
08864DE5    894424 1C       MOV DWORD PTR SS:[ESP+1C],EAX
08864DE9    61              POPAD
08864DEA    50              PUSH EAX
08864DEB    C3              RETN
//下面要用F7,不然跟不到...

//我们开始找入口代码:
08866553    896C24 00       MOV DWORD PTR SS:[ESP],EBP    ;=push ebp
08866557    8BEC            MOV EBP,ESP
08866559    6A FF           PUSH -1
0886655B    68 00E96A00     PUSH 6AE900
08866560    68 9C706900     PUSH 69709C
08866565    64:A1 00000000  MOV EAX,DWORD PTR FS:[0]

08866583    894424 00       MOV DWORD PTR SS:[ESP],EAX    ;=push eax
08866587    64:8925 0000000>MOV DWORD PTR FS:[0],ESP
0886658E    83EC 58         SUB ESP,58

088665A9    895C24 00       MOV DWORD PTR SS:[ESP],EBX    ;=push ebx
088665C5    897424 00       MOV DWORD PTR SS:[ESP],ESI    ;=push esi

088665E1    897C24 00       MOV DWORD PTR SS:[ESP],EDI    ;=push edi
088665E5    8965 E8         MOV DWORD PTR SS:[EBP-18],ESP

把代码整理出来:
push ebp
MOV EBP,ESP
PUSH -1
PUSH 6AE900
PUSH 69709C
MOV EAX,DWORD PTR FS:[0]
push eax
MOV DWORD PTR FS:[0],ESP
SUB ESP,58
push ebx
push esi
push edi
MOV DWORD PTR SS:[EBP-18],ESP

//我们来到了OEP....

00693378    0000            ADD BYTE PTR DS:[EAX],AL     //真OEP
0069337A    0000            ADD BYTE PTR DS:[EAX],AL
0069337C    0000            ADD BYTE PTR DS:[EAX],AL
0069337E    0000            ADD BYTE PTR DS:[EAX],AL
00693380    0000            ADD BYTE PTR DS:[EAX],AL
00693382    0000            ADD BYTE PTR DS:[EAX],AL
00693384    0000            ADD BYTE PTR DS:[EAX],AL
00693386    0000            ADD BYTE PTR DS:[EAX],AL
00693388    0000            ADD BYTE PTR DS:[EAX],AL
0069338A    0000            ADD BYTE PTR DS:[EAX],AL
0069338C    0000            ADD BYTE PTR DS:[EAX],AL
0069338E    0000            ADD BYTE PTR DS:[EAX],AL
00693390    0000            ADD BYTE PTR DS:[EAX],AL
00693392    0000            ADD BYTE PTR DS:[EAX],AL
00693394    0000            ADD BYTE PTR DS:[EAX],AL
00693396    0000            ADD BYTE PTR DS:[EAX],AL
00693398    0000            ADD BYTE PTR DS:[EAX],AL
0069339A    0000            ADD BYTE PTR DS:[EAX],AL
0069339C    0000            ADD BYTE PTR DS:[EAX],AL
0069339E    FF15 BC916A00   CALL DWORD PTR DS:[6A91BC]     //假OEP
006933A4    33D2            XOR EDX,EDX
006933A6    8AD4            MOV DL,AH
006933A8    8915 D0C0D407   MOV DWORD PTR DS:[7D4C0D0],EDX
006933AE    8BC8            MOV ECX,EAX
006933B0    81E1 FF000000   AND ECX,0FF
006933B6    890D CCC0D407   MOV DWORD PTR DS:[7D4C0CC],ECX
006933BC    C1E1 08         SHL ECX,8
006933BF    03CA            ADD ECX,EDX
006933C1    890D C8C0D407   MOV DWORD PTR DS:[7D4C0C8],ECX
006933C7    C1E8 10         SHR EAX,10
006933CA    A3 C4C0D407     MOV DWORD PTR DS:[7D4C0C4],EAX
006933CF    6A 01           PUSH 1
006933D1    E8 947A0000     CALL main.0069AE6A

脱壳完成为121MB..好大哦...$_$
重建PE为2.9MB不大了哦..嘿嘿..

00693378-00400000=00293378  在修复的时候OEP添这个的..

发现有很多是无效指针没关系
追踪1...
就没几个了再用插件..ASProctect 1.22追踪就没有了

只是又有一个是不能确定的指针...郁闷了...

修复后是2.91MB..别拿砖头盖我了....我知道还没完工了.
激动啥子呀!!
点程序不能运行吧..

拿出我们的杀手剑:

OD再入修复后的文件,也就是2.91MB的那个文件.
//停这里
00693378 >/$  0000          ADD BYTE PTR DS:[EAX],AL
0069337A  |.  0000          ADD BYTE PTR DS:[EAX],AL
0069337C  |.  0000          ADD BYTE PTR DS:[EAX],AL
0069337E  |.  0000          ADD BYTE PTR DS:[EAX],AL
00693380  |.  0000          ADD BYTE PTR DS:[EAX],AL
00693382  |.  0000          ADD BYTE PTR DS:[EAX],AL
00693384  |.  0000          ADD BYTE PTR DS:[EAX],AL
00693386  |.  0000          ADD BYTE PTR DS:[EAX],AL
00693388  |.  0000          ADD BYTE PTR DS:[EAX],AL
0069338A  |.  0000          ADD BYTE PTR DS:[EAX],AL
0069338C  |.  0000          ADD BYTE PTR DS:[EAX],AL
0069338E  |.  0000          ADD BYTE PTR DS:[EAX],AL
00693390  |.  0000          ADD BYTE PTR DS:[EAX],AL
00693392  |.  0000          ADD BYTE PTR DS:[EAX],AL
00693394  |.  0000          ADD BYTE PTR DS:[EAX],AL
00693396  |.  0000          ADD BYTE PTR DS:[EAX],AL
00693398  |.  0000          ADD BYTE PTR DS:[EAX],AL
0069339A  |.  0000          ADD BYTE PTR DS:[EAX],AL
0069339C  |.  0000          ADD BYTE PTR DS:[EAX],AL
0069339E  |.  FF15 BC916A00 CALL DWORD PTR DS:[<&kernel32.GetVersion>;  kernel32.GetVersion
006933A4  |.  33D2          XOR EDX,EDX
006933A6  |.  8AD4          MOV DL,AH
006933A8  |.  8915 D0C0D407 MOV DWORD PTR DS:[7D4C0D0],EDX

把下面代码修改进去:

push ebp
MOV EBP,ESP
PUSH -1
PUSH 6AE900
PUSH 69709C
MOV EAX,DWORD PTR FS:[0]
push eax
MOV DWORD PTR FS:[0],ESP
SUB ESP,58
push ebx
push esi
push edi
MOV DWORD PTR SS:[EBP-18],ESP

//别问我是那来的..不就是刚开始找的吗???
郁闷....%_%

修改后的代码入下了:
00693378 >    55            PUSH EBP
00693379      8BEC          MOV EBP,ESP
0069337B      6A FF         PUSH -1
0069337D      68 00E96A00   PUSH dump_.006AE900
00693382      68 9C706900   PUSH dump_.0069709C                      ;  入口地址
00693387      64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
0069338D      50            PUSH EAX
0069338E      64:8925 00000>MOV DWORD PTR FS:[0],ESP
00693395      83EC 58       SUB ESP,58
00693398      53            PUSH EBX
00693399      56            PUSH ESI
0069339A      57            PUSH EDI
0069339B      8965 E8       MOV DWORD PTR SS:[EBP-18],ESP
0069339E      FF15 BC916A00 CALL DWORD PTR DS:[<&kernel32.GetVersion>;  kernel32.GetVersion

不会多也不会上刚刚够,如果修改下来和我的这个示范代码不一样代表你修改错了,刚好合适的
用OD保存:
点程序,运行正常...

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 1667
活跃值: (286)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
才发两个就不让发了..太黑了...555
2006-10-6 00:28
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
顶一下!!!
2006-10-6 01:42
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
帖子不错 这个壳我一直不能搞定。如果有动画教程就更完美了。
2006-10-6 07:22
0
雪    币: 223
活跃值: (262)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
前天弄了2个 ASProtect 1.23 RC1 -> Alexey Solodovnikov的壳,比你这个简单点.代码不用补,只是导入表有点麻烦.
2006-10-6 08:56
0
雪    币: 304
活跃值: (82)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
6
我怎么看怎么都不觉得楼主像菜鸟
2006-10-6 11:46
0
雪    币: 7
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
7
楼主请把你脱壳后的原文件传上来 方便练手
2006-10-6 15:32
0
雪    币: 7
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
8
最初由 bestchao 发布
楼主请把你脱壳后的原文件传上来 方便练手
2006-10-7 19:35
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
奇迹的主程序吧
2006-10-7 19:58
0
雪    币: 1667
活跃值: (286)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
10
是啊...还有人知道...只是拿来练手..
2006-10-8 22:49
0
雪    币: 7
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
11
最初由 menting 发布
是啊...还有人知道...只是拿来练手..

那就发个连接啊
2006-10-8 22:55
0
雪    币: 7
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
12
最初由 bestchao 发布
那就发个连接啊

发个连接啊``~
2006-10-9 23:15
0
游客
登录 | 注册 方可回帖
返回
//