crazysky 发表于 2005-3-27 09:29:59

帮网页特效咖啡豆(作业7里的程序)脱衣服

【标      题】帮网页特效咖啡豆脱衣服(脱壳)
【下载地址】PYG的FTP里有
【脱衣服工具】OD,PEiD
【衣服类型】ASPack 2.1 -> Alexey Solodovnikov
【任      务】把衣服脱掉(找到OEP,然后DUMP,修复输入表!)
【脱衣服作者】crazysky
【脱衣服声明】我只是个小菜鸟,不好之处多多包涵!
【备      注】老手勿看!
【脱衣服过程】
在脱之前先说一下,脱衣服时程序里面会有有好多循环,
对付循环时,只能让程序往前运行,基本不能让它往回跳,要想法跳出循环圈。(请记住!)
用OD载入TheEndTx.exe,忽略所有异常(提示是否继续分析,选择"否" )
得到代码如下:

00622001 T>60                  pushad                             ;按F8
00622002   E8 72050000         call TheEndTx.00622579                        ;F8
00622007   EB 33               jmp short TheEndTx.0062203C        ;跳F8
00622009   87DB                xchg ebx,ebx
0062200B   90                  nop
0062200C   00A0 4A0010A0       add byte ptr ds:,ah
00622012   4A                  dec edx
00622013   000C67            add byte ptr ds:,cl


0062203C   BB 3C394400         mov ebx,TheEndTx.0044393C                ;跳在这里,下面一直按F8
00622041   03DD                add ebx,ebp
00622043   2B9D 60394400       sub ebx,dword ptr ss:
00622049   83BD 98474400 00    cmp dword ptr ss:,0
00622050   899D 98474400       mov dword ptr ss:,ebx
00622056   0F85 81040000       jnz TheEndTx.006224DD
0062205C   8D85 A0474400       lea eax,dword ptr ss:
00622062   50                  push eax
00622063   FF95 AC484400       call dword ptr ss:
00622069   8985 9C474400       mov dword ptr ss:,eax
0062206F   8BF8                mov edi,eax
00622071   8D9D AD474400       lea ebx,dword ptr ss:
00622077   53                  push ebx
00622078   50                  push eax
00622079   FF95 A8484400       call dword ptr ss:
0062207F   8985 F5394400       mov dword ptr ss:,eax
00622085   8D9D BA474400       lea ebx,dword ptr ss:
0062208B   53                  push ebx
0062208C   57                  push edi
0062208D   FF95 A8484400       call dword ptr ss:
00622093   8985 F9394400       mov dword ptr ss:,eax
00622099   8D85 0A3B4400       lea eax,dword ptr ss:
0062209F   FFE0                jmp eax                               ; 在这里跳,F8
006220A1   0000                add byte ptr ds:,al


006221CE   8B9D 6C394400       mov ebx,dword ptr ss:                ;跳在这里,
006221D4   0BDB                or ebx,ebx
006221D6   74 0A               je short TheEndTx.006221E2                                ;这里跳
006221D8   8B03                mov eax,dword ptr ds:
006221DA   8785 70394400       xchg dword ptr ss:,eax
006221E0   8903                mov dword ptr ds:,eax
006221E2   8DB5 1A3A4400       lea esi,dword ptr ss:                ;跳到这里,下面一直按F8
006221E8   833E 00             cmp dword ptr ds:,0
006221EB   0F84 1F010000       je TheEndTx.00622310
006221F1   8DB5 1A3A4400       lea esi,dword ptr ss:
006221F7   6A 04               push 4
006221F9   68 00100000         push 1000
006221FE   68 00180000         push 1800
00622203   6A 00               push 0
00622205   FF95 F5394400       call dword ptr ss:
0062220B   8985 F1394400       mov dword ptr ss:,eax
00622211   8B46 04             mov eax,dword ptr ds:
00622214   05 0E010000         add eax,10E
00622219   6A 04               push 4
0062221B   68 00100000         push 1000
00622220   50                  push eax
00622221   6A 00               push 0
00622223   FF95 F5394400       call dword ptr ss:
00622229   8985 ED394400       mov dword ptr ss:,eax
0062222F   56                  push esi
00622230   8B1E                mov ebx,dword ptr ds:
00622232   039D 98474400       add ebx,dword ptr ss:
00622238   FFB5 F1394400       push dword ptr ss:
0062223E   FF76 04             push dword ptr ds:
00622241   50                  push eax
00622242   53                  push ebx
00622243   E8 3B030000         call TheEndTx.00622583
00622248   80BD 0D3A4400 00    cmp byte ptr ss:,0
0062224F   75 5E               jnz short TheEndTx.006222AF
00622251   FE85 0D3A4400       inc byte ptr ss:
00622257   8B3E                mov edi,dword ptr ds:
00622259   03BD 98474400       add edi,dword ptr ss:
0062225F   FF37                push dword ptr ds:
00622261   C607 C3             mov byte ptr ds:,0C3
00622264   FFD7                call edi
00622266   8F07                pop dword ptr ds:
00622268   50                  push eax
00622269   51                  push ecx
0062226A   56                  push esi
0062226B   53                  push ebx
0062226C   8BC8                mov ecx,eax
0062226E   83E9 06             sub ecx,6
00622271   8BB5 ED394400       mov esi,dword ptr ss:
00622277   33DB                xor ebx,ebx
00622279   0BC9                or ecx,ecx
0062227B   74 2E               je short TheEndTx.006222AB
0062227D   78 2C               js short TheEndTx.006222AB
0062227F   AC                  lods byte ptr ds:
00622280   3C E8               cmp al,0E8
00622282   74 0A               je short TheEndTx.0062228E
00622284   EB 00               jmp short TheEndTx.00622286                                ;在这里跳
00622286   3C E9               cmp al,0E9                                                                        ;跳到这里
00622288   74 04               je short TheEndTx.0062228E
0062228A   43                  inc ebx
0062228B   49                  dec ecx
0062228C   ^ EB EB               jmp short TheEndTx.00622279                                ;到了这里,这个会跳回去的(不要按F8),在下一条指令点一下鼠标
0062228E   8B06                mov eax,dword ptr ds:                                        ;在这里,按F4,
00622290   EB 00               jmp short TheEndTx.00622292                                ;这里要跳,F8
00622292   803E 19             cmp byte ptr ds:,19                                        ;跳到这里
00622295   ^ 75 F3               jnz short TheEndTx.0062228A                                ;这个往回跳的,在下一条指令上按F4
00622297   24 00               and al,0                                                                        ;也就是在这里按F4
00622299   C1C0 18             rol eax,18
0062229C   2BC3                sub eax,ebx
0062229E   8906                mov dword ptr ds:,eax
006222A0   83C3 05             add ebx,5
006222A3   83C6 04             add esi,4
006222A6   83E9 05             sub ecx,5
006222A9   ^ EB CE               jmp short TheEndTx.00622279                                ;这里也是跳回去的
006222AB   5B                  pop ebx                                                                        ;在这里按F4
006222AC   5E                  pop esi
006222AD   59                  pop ecx
006222AE   58                  pop eax
006222AF   8BC8                mov ecx,eax
006222B1   8B3E                mov edi,dword ptr ds:
006222B3   03BD 98474400       add edi,dword ptr ss:
006222B9   8BB5 ED394400       mov esi,dword ptr ss:
006222BF   C1F9 02             sar ecx,2
006222C2   F3:A5               rep movs dword ptr es:,dword ptr>
006222C4   8BC8                mov ecx,eax
006222C6   83E1 03             and ecx,3
006222C9   F3:A4               rep movs byte ptr es:,byte ptr d>
006222CB   5E                  pop esi
006222CC   68 00800000         push 8000
006222D1   6A 00               push 0
006222D3   FFB5 ED394400       push dword ptr ss:
006222D9   FF95 F9394400       call dword ptr ss:
006222DF   83C6 08             add esi,8
006222E2   833E 00             cmp dword ptr ds:,0
006222E5   ^ 0F85 26FFFFFF       jnz TheEndTx.00622211                                                        ;这里会跳回去的
006222EB   68 00800000         push 8000                                                                                ;在这里按F4
006222F0   6A 00               push 0
006222F2   FFB5 F1394400       push dword ptr ss:
006222F8   FF95 F9394400       call dword ptr ss:
006222FE   8B9D 6C394400       mov ebx,dword ptr ss:
00622304   0BDB                or ebx,ebx
00622306   74 08               je short TheEndTx.00622310                                                ;这里跳到下面
00622308   8B03                mov eax,dword ptr ds:
0062230A   8785 70394400       xchg dword ptr ss:,eax
00622310   8B95 98474400       mov edx,dword ptr ss:                                ;跳到这里
00622316   8B85 64394400       mov eax,dword ptr ss:
0062231C   2BD0                sub edx,eax
0062231E   74 79               je short TheEndTx.00622399                                                ;向下跳(F8跳)
00622320   8BC2                mov eax,edx
00622322   C1E8 10             shr eax,10

(还没完的,在下一楼里!唉!系统不给一次贴出来,限制在10000字节!)

[ Last edited by crazysky on 2005-3-27 at 02:17 PM ]

crazysky 发表于 2005-3-27 09:31:26

00622399   8B95 98474400       mov edx,dword ptr ss:                                ;跳到这里
0062239F   8BB5 E1394400       mov esi,dword ptr ss:
006223A5   0BF6                or esi,esi
006223A7   74 11               je short TheEndTx.006223BA                                                ;向下跳
006223A9   03F2                add esi,edx
006223AB   AD                  lods dword ptr ds:
006223AC   0BC0                or eax,eax
006223AE   74 0A               je short TheEndTx.006223BA
006223B0   03C2                add eax,edx
006223B2   8BF8                mov edi,eax
006223B4   66:AD               lods word ptr ds:
006223B6   66:AB               stos word ptr es:
006223B8   ^ EB F1               jmp short TheEndTx.006223AB
006223BA   8BB5 68394400       mov esi,dword ptr ss:                                ;跳到这里
006223C0   8B95 98474400       mov edx,dword ptr ss:
006223C6   03F2                add esi,edx
006223C8   8B46 0C             mov eax,dword ptr ds:
006223CB   85C0                test eax,eax
006223CD   0F84 0A010000       je TheEndTx.006224DD
006223D3   03C2                add eax,edx
006223D5   8BD8                mov ebx,eax
006223D7   50                  push eax
006223D8   FF95 AC484400       call dword ptr ss:
006223DE   85C0                test eax,eax
006223E0   75 07               jnz short TheEndTx.006223E9                                        ;向下跳
006223E2   53                  push ebx
006223E3   FF95 B0484400       call dword ptr ss:
006223E9   8985 E5394400       mov dword ptr ss:,eax                                ;到这里
006223EF   C785 E9394400 00000>mov dword ptr ss:,0
006223F9   8B95 98474400       mov edx,dword ptr ss:
006223FF   8B06                mov eax,dword ptr ds:
00622401   85C0                test eax,eax
00622403   75 03               jnz short TheEndTx.00622408
00622405   8B46 10             mov eax,dword ptr ds:
00622408   03C2                add eax,edx
0062240A   0385 E9394400       add eax,dword ptr ss:
00622410   8B18                mov ebx,dword ptr ds:
00622412   8B7E 10             mov edi,dword ptr ds:
00622415   03FA                add edi,edx
00622417   03BD E9394400       add edi,dword ptr ss:
0062241D   85DB                test ebx,ebx
0062241F   0F84 A2000000       je TheEndTx.006224C7
00622425   F7C3 00000080       test ebx,80000000
0062242B   75 04               jnz short TheEndTx.00622431
0062242D   03DA                add ebx,edx
0062242F   43                  inc ebx
00622430   43                  inc ebx
00622431   53                  push ebx
00622432   81E3 FFFFFF7F       and ebx,7FFFFFFF
00622438   53                  push ebx
00622439   FFB5 E5394400       push dword ptr ss:
0062243F   FF95 A8484400       call dword ptr ss:
00622445   85C0                test eax,eax
00622447   5B                  pop ebx
00622448   75 6F               jnz short TheEndTx.006224B9                                        ;向下跳
0062244A   F7C3 00000080       test ebx,80000000


006224B9   8907                mov dword ptr ds:,eax                                    ;跳到这里
006224BB   8385 E9394400 04    add dword ptr ss:,4
006224C2   ^ E9 32FFFFFF         jmp TheEndTx.006223F9                                                        ;这个往回跳到
006224C7   8906                mov dword ptr ds:,eax                                                ;在这里按F4
006224C9   8946 0C             mov dword ptr ds:,eax
006224CC   8946 10             mov dword ptr ds:,eax
006224CF   83C6 14             add esi,14
006224D2   8B95 98474400       mov edx,dword ptr ss:
006224D8   ^ E9 EBFEFFFF         jmp TheEndTx.006223C8                                                        ;这个也是往回跳的
006224DD   8B85 0E3A4400       mov eax,dword ptr ss:                                ;在这里按F4
006224E3   50                  push eax
006224E4   0385 98474400       add eax,dword ptr ss:
006224EA   59                  pop ecx
006224EB   0BC9                or ecx,ecx
006224ED   8985 3B3E4400       mov dword ptr ss:,eax
006224F3   61                  popad                                                                                        ;看到这个popad(与开始的pushad对应)了吗?这表示跳转到EOP的指令就在附近了
006224F4   75 08               jnz short TheEndTx.006224FE                                        ;向下跳
006224F6   B8 01000000         mov eax,1
006224FB   C2 0C00             retn 0C
006224FE   68 1C374A00         push TheEndTx.004A371C                                                        ;到这里
00622503   C3                  retn                                                                                        ;这个是返回到EOP的
00622504   8B85 9C474400       mov eax,dword ptr ss:




004A371C   55                  push ebp                                                                ;跳到这里,这就EOP了(经过了popad而且地址由上面的00622503跳到004A371C,经过了段跨越)
004A371D   8BEC                mov ebp,esp
004A371F   83C4 F0             add esp,-10
004A3722   53                  push ebx
004A3723   B8 74344A00         mov eax,TheEndTx.004A3474
004A3728   E8 1B31F6FF         call TheEndTx.00406848
004A372D   8B1D AC5B4A00       mov ebx,dword ptr ds:         ; TheEndTx.004A6C30
004A3733   8B03                mov eax,dword ptr ds:
004A3735   E8 D260FBFF         call TheEndTx.0045980C
004A373A   8B03                mov eax,dword ptr ds:
004A373C   83C0 50             add eax,50
004A373F   BA F0374A00         mov edx,TheEndTx.004A37F0             ; ASCII "help.htm"
004A3744   E8 0F0DF6FF         call TheEndTx.00404458
004A3749   8B03                mov eax,dword ptr ds:
004A374B   BA 04384A00         mov edx,TheEndTx.004A3804



然后就是将程序DUMP出来了,右击鼠标->选择脱壳在当前的调试进程->按脱壳,写一个名字(我写了dmup.exe)然后保存,完成!
dump.exe就是脱了壳的程序了,运行一下,可以了,没问题!用PEiD查一查是:Borland Delphi 6.0 - 7.0,表示是没加壳了,是用Delphi写的程序!


【脱衣服心得】
    我学脱衣服才几天,其实也不是很会的!但这件衣服其实也不难脱的!
我大概是看了二哥的脱文才会的吧?二哥在他的脱文上经常说:"手动脱壳时,用Olldbg载入程序,脱壳程序里面会有有好多循环。
对付循环时,只能让程序往前运行,基本不能让它往回跳,要想法跳出循环圈。不要用Peid查入口,单步跟踪,提高手动找入口能力。"
二哥又说一般接近EOP时,都会有一个JMP或者RET这些指令跳到EOP的!而这个跳转一般是经过程序段跨越的!

    我只是个菜鸟,大家不要笑我哦!^○^
                                                                                                                                                                                                        crazysky
                                                                                                                                                                                                  2005-3-27

飘云 发表于 2005-3-27 09:58:13

注意:

00622002   E8 72050000         call TheEndTx.00622579               ;F8

这里要按F7,否则程序会运行起来!

crazysky 发表于 2005-3-27 10:37:11

Originally posted by 飘云 at 2005-3-27 09:58 AM:
00622002   E8 72050000         call TheEndTx.00622579               ;F8

这里要按F7,否则程序会运行起来!

我按F8可以过啊!程序也没有运行起来啊!
怎么会这样的呢?

Saver 发表于 2005-3-27 14:14:21

555555555,被骗了,偶被"脱衣服"给骗了~大骗子~KC~




这个不是近call可以f8吧?
我记得如果是近call的话就f7 啊,变了形的嘛~~~`

飘云 发表于 2005-3-27 15:04:52

这个不是近call可以f8吧?
我记得如果是近call的话就f7 啊,变了形的嘛~~~`


理论上是这样的,但是我的按F8就运行起来了!

xbb[DFCG] 发表于 2005-4-9 21:55:04

"手动脱壳时,用Olldbg载入程序,脱壳程序里面会有有好多循环。
对付循环时,只能让程序往前运行,基本不能让它往回跳,要想法跳出循环圈。不要用Peid查入口,单步跟踪,提高手动找入口能力。"

我说这句话怎么看起来眼熟呢!原来是二哥的常用语!
支持,不错的脱文,简单易懂。

CDboy 发表于 2005-4-23 13:23:55

简单易懂
支持一下

linkin 发表于 2005-5-9 09:34:55

仔细研究研究

filandcome 发表于 2005-6-24 08:32:34

页: [1] 2
查看完整版本: 帮网页特效咖啡豆(作业7里的程序)脱衣服