首页
社区
课程
招聘
[原创]简析脱 PEBundle 2.0x - 2.4x-> Jeremy Collake+SwiSHmax破解
发表于: 2007-9-13 19:26 5523

[原创]简析脱 PEBundle 2.0x - 2.4x-> Jeremy Collake+SwiSHmax破解

2007-9-13 19:26
5523
SwiSHmax是Flash编辑工具 SwiSHzone家族的新成员,假如您想要不使用Flash来制作强大或令人惊叹的动画,SwiSHmax是您最佳的选择。他采用的是PEBundle 2.0x - 2.4x-> Jeremy Collake加壳,PEBundle是一个捆绑壳用ESP定律很好脱,不过SwiSHmax采用了PEBundle的注册系统来授权,这个好办把壳脱了绕过注册系统就可以破解~

00924000 >   9C               PUSHFD                                         ;OD载入
00924001     60               PUSHAD
00924002     E8 02000000      CALL SwishMax.00924009 ;其实是一个JMP所以一定要F7
00924007     33C0             XOR EAX,EAX
00924009     8BC4             MOV EAX,ESP                              ;到这里~
0092400B     83C0 04          ADD EAX,4
0092400E     93               XCHG EAX,EBX
0092400F     8BE3             MOV ESP,EBX
00924011     8B5B FC          MOV EBX,DWORD PTR DS:[EBX-4]
00924014     81EB 07304000    SUB EBX,SwishMax.00403007
0092401A     87DD             XCHG EBP,EBX
0092401C     83BD 9C384000 0>CMP DWORD PTR SS:[EBP+40389C],1

一路F8到这个地方

009241C4     8DB5 683F4000    LEA ESI,DWORD PTR SS:[EBP+403F68]
009241CA     6A 00            PUSH 0
009241CC     68 80000000      PUSH 80
009241D1     6A 02            PUSH 2
009241D3     6A 00            PUSH 0
009241D5     6A 00            PUSH 0
009241D7     68 00000040      PUSH 40000000
009241DC     56               PUSH ESI
009241DD     FF95 0A3A4000    CALL DWORD PTR SS:[EBP+403A0A]           ;CreateFile 在当前用户名目录TEMP下释放文件 如C:\Documents and Settings\你的当前用户名\Local Settings\Temp
009241E3     83F8 FF          CMP EAX,-1
009241E6     0F84 C5000000    JE SwishMax.009242B1

一路F8到这个地方

009243DC     C785 9C384000 0>MOV DWORD PTR SS:[EBP+40389C],1
009243E6     61               POPAD
009243E7     9D               POPFD
009243E8     68 00309000      PUSH SwishMax.00903000
009243ED     C3               RETN                                                                       ;返回到00903000

00903000     9C               PUSHFD
00903001     60               PUSHAD
00903002     E8 02000000      CALL SwishMax.00903009                   ;和开始一样是个JMP
00903007     33C0             XOR EAX,EAX
00903009     8BC4             MOV EAX,ESP
0090300B     83C0 04          ADD EAX,4
0090300E     93               XCHG EAX,EBX
0090300F     8BE3             MOV ESP,EBX
00903011     8B5B FC          MOV EBX,DWORD PTR DS:[EBX-4]
00903014     81EB 07304000    SUB EBX,SwishMax.00403007

009031C4     8DB5 683F4000    LEA ESI,DWORD PTR SS:[EBP+403F68]
009031CA     6A 00            PUSH 0
009031CC     68 80000000      PUSH 80
009031D1     6A 02            PUSH 2
009031D3     6A 00            PUSH 0
009031D5     6A 00            PUSH 0
009031D7     68 00000040      PUSH 40000000
009031DC     56               PUSH ESI
009031DD     FF95 0A3A4000    CALL DWORD PTR SS:[EBP+403A0A]      CreateFile 再在当前用户名目录TEMP下释放文件 如C:\Documents and Settings\你的当前用户名\Local Settings\Temp

下来就是反复的几次释放文件和上面的一样分别在TEMP里释放了image.bmp swishmaxres6.dll swl.ini swlpi.dll 4个文件~这个是启动必须的4个配置文件~

008C7000    /EB 06            JMP SHORT SwishMax.008C7008
008C7002    |68 61462600      PUSH 264661
008C7007    |C3               RETN
008C7008    \9C               PUSHFD
008C7009     60               PUSHAD
008C700A     E8 02000000      CALL SwishMax.008C7011            ;和开始一样是个JMP
008C700F     33C0             XOR EAX,EAX
008C7011     8BC4             MOV EAX,ESP
008C7013     83C0 04          ADD EAX,4
008C7016     93               XCHG EAX,EBX

一路F8到这个地方

008C81FF     6A 00            PUSH 0
008C8201     FF95 41974000    CALL DWORD PTR SS:[EBP+409741]
008C8207     8BF8             MOV EDI,EAX
008C8209     5B               POP EBX
008C820A     019D 83944000    ADD DWORD PTR SS:[EBP+409483],EBX
008C8210     8BB5 DE904000    MOV ESI,DWORD PTR SS:[EBP+4090DE]
008C8216     80BD 6B9D4000 C>CMP BYTE PTR SS:[EBP+409D6B],0C3
008C821D     74 2E            JE SHORT SwishMax.008C824D                              ;注意这个JE把他改成JMP可以跳过注册系统
008C821F     60               PUSHAD                                    ; (Initial CPU selection)
008C8220     8B9D 39974000    MOV EBX,DWORD PTR SS:[EBP+409739]
008C8226     8B8D 3D974000    MOV ECX,DWORD PTR SS:[EBP+40973D]
008C822C     8B95 E6904000    MOV EDX,DWORD PTR SS:[EBP+4090E6]
008C8232     8DBD 6BA14000    LEA EDI,DWORD PTR SS:[EBP+40A16B]
008C8238     56               PUSH ESI
008C8239     52               PUSH EDX
008C823A     6A 40            PUSH 40
008C823C     57               PUSH EDI
008C823D     51               PUSH ECX
008C823E     53               PUSH EBX
008C823F     E8 F60B0000      CALL SwishMax.008C8E3A                        ;注册系统函数~
008C8244     85C0             TEST EAX,EAX
008C8246     0F85 9F000000    JNZ SwishMax.008C82EB
008C824C     61               POPAD
008C824D     57               PUSH EDI
008C824E     AD               LODS DWORD PTR DS:[ESI]
008C824F     85C0             TEST EAX,EAX
008C8251     0F84 9B000000    JE SwishMax.008C82F2
008C8257     8BD0             MOV EDX,EAX
008C8259     0395 E6904000    ADD EDX,DWORD PTR SS:[EBP+4090E6]
008C825F     AD               LODS DWORD PTR DS:[ESI]
008C8260     56               PUSH ESI
008C8261     8BC8             MOV ECX,EAX

008C8216     80BD 6B9D4000 C>CMP BYTE PTR SS:[EBP+409D6B],0C3
008C821D     74 2E            JE SHORT SwishMax.008C824D                     ; 再这回车到008C824D按F4
008C821F     60               PUSHAD                                    ; (Initial CPU selection)
008C8220     8B9D 39974000    MOV EBX,DWORD PTR SS:[EBP+409739]
008C8226     8B8D 3D974000    MOV ECX,DWORD PTR SS:[EBP+40973D]
008C822C     8B95 E6904000    MOV EDX,DWORD PTR SS:[EBP+4090E6]
008C8232     8DBD 6BA14000    LEA EDI,DWORD PTR SS:[EBP+40A16B]
008C8238     56               PUSH ESI
008C8239     52               PUSH EDX
008C823A     6A 40            PUSH 40
008C823C     57               PUSH EDI
008C823D     51               PUSH ECX
008C823E     53               PUSH EBX
008C823F     E8 F60B0000      CALL SwishMax.008C8E3A
008C8244     85C0             TEST EAX,EAX
008C8246     0F85 9F000000    JNZ SwishMax.008C82EB
008C824C     61               POPAD
008C824D     57               PUSH EDI
008C824E     AD               LODS DWORD PTR DS:[ESI]
008C824F     85C0             TEST EAX,EAX
008C8251     0F84 9B000000    JE SwishMax.008C82F2
008C8257     8BD0             MOV EDX,EAX
008C8259     0395 E6904000    ADD EDX,DWORD PTR SS:[EBP+4090E6]
008C825F     AD               LODS DWORD PTR DS:[ESI]
008C8260     56               PUSH ESI
008C8261     8BC8             MOV ECX,EAX
008C8263     57               PUSH EDI
008C8264     52               PUSH EDX
008C8265     8DB5 6BA14000    LEA ESI,DWORD PTR SS:[EBP+40A16B]
008C826B     57               PUSH EDI
008C826C     51               PUSH ECX
008C826D     52               PUSH EDX
008C826E     6A 40            PUSH 40
008C8270     56               PUSH ESI
008C8271     FFB5 3D974000    PUSH DWORD PTR SS:[EBP+40973D]
008C8277     FFB5 39974000    PUSH DWORD PTR SS:[EBP+409739]
008C827D     E8 B8090000      CALL SwishMax.008C8C3A
008C8282     5A               POP EDX
008C8283     5F               POP EDI
008C8284     8D85 E4914000    LEA EAX,DWORD PTR SS:[EBP+4091E4]
008C828A     50               PUSH EAX
008C828B     64:67:FF36 0000 PUSH DWORD PTR FS:[0]
008C8291     64:67:8926 0000 MOV DWORD PTR FS:[0],ESP
008C8297     52               PUSH EDX
008C8298     57               PUSH EDI
008C8299     FF95 DA904000    CALL DWORD PTR SS:[EBP+4090DA]
008C829F     64:67:8F06 0000 POP DWORD PTR FS:[0]
008C82A5     83C4 04          ADD ESP,4
008C82A8     85C0             TEST EAX,EAX
008C82AA     74 07            JE SHORT SwishMax.008C82B3
008C82AC     8BC8             MOV ECX,EAX
008C82AE     5E               POP ESI
008C82AF     5F               POP EDI
008C82B0   ^ EB 9B            JMP SHORT SwishMax.008C824D

008C82F2     5F               POP EDI
008C82F3     8BB5 E2904000    MOV ESI,DWORD PTR SS:[EBP+4090E2]
008C82F9     AD               LODS DWORD PTR DS:[ESI]
008C82FA     83F8 FF          CMP EAX,-1
008C82FD     74 74            JE SHORT SwishMax.008C8373     ; 再这回车到008C8373按F4
008C82FF     0385 E6904000    ADD EAX,DWORD PTR SS:[EBP+4090E6]
008C8305     8BD8             MOV EBX,EAX
008C8307     AD               LODS DWORD PTR DS:[ESI]
008C8308     0385 E6904000    ADD EAX,DWORD PTR SS:[EBP+4090E6]

008C83A0    /74 72            JE SHORT SwishMax.008C8414             ;开始E8 E9优化~再这回车到008C8414按F4
008C83A2    |78 70            JS SHORT SwishMax.008C8414
008C83A4    |66:8B07          MOV AX,WORD PTR DS:[EDI]
008C83A7    |2C E8            SUB AL,0E8
008C83A9    |3C 01            CMP AL,1
008C83AB    |76 38            JBE SHORT SwishMax.008C83E5
008C83AD    |66:3D 1725       CMP AX,2517
008C83B1    |74 51            JE SHORT SwishMax.008C8404
008C83B3    |3C 27            CMP AL,27
008C83B5    |75 0A            JNZ SHORT SwishMax.008C83C1
008C83B7    |80FC 80          CMP AH,80
008C83BA    |72 05            JB SHORT SwishMax.008C83C1
008C83BC    |80FC 8F          CMP AH,8F
008C83BF    |76 05            JBE SHORT SwishMax.008C83C6
008C83C1    |47               INC EDI
008C83C2    |43               INC EBX
008C83C3   ^|EB DA            JMP SHORT SwishMax.008C839F
008C83C5    |B8 8B470290      MOV EAX,9002478B

008C8548   ^\0F85 9DFDFFFF    JNZ SwishMax.008C82EB
008C854E     61               POPAD
008C854F     9D               POPFD
008C8550     50               PUSH EAX
008C8551     68 61466600      PUSH SwishMax.00664661
008C8556     C2 0400          RETN 4                         ;返回OEP 00664661

DUMP掉,修复ImportREC 因为这个程序的基地址为00400000 所以在ImportREC的OEP添00264661搜索修复即可~

这个壳还有更简单的脱法~就是不停的用ESP定律~

00924000 >   9C               PUSHFD                           ;OD载入
00924001     60               PUSHAD
00924002     E8 02000000      CALL SwishMax.00924009       ;下硬件访问断点F9
00924007     33C0             XOR EAX,EAX

009243E7     9D               POPFD                                 ;到这
009243E8     68 00309000      PUSH SwishMax.00903000
009243ED     C3               RETN

00903000     9C               PUSHFD
00903001     60               PUSHAD
00903002     E8 02000000      CALL SwishMax.00903009    ;下硬件访问断点F9
00903007     33C0             XOR EAX,EAX
00903009     8BC4             MOV EAX,ESP

009033E7     9D               POPFD                                ;到这
009033E8     68 00108E00      PUSH SwishMax.008E1000
009033ED     C3               RETN

008E1000     9C               PUSHFD
008E1001     60               PUSHAD
008E1002     E8 02000000      CALL SwishMax.008E1009   ;下硬件访问断点F9
008E1007     33C0             XOR EAX,EAX
008E1009     8BC4             MOV EAX,ESP

008E13E7     9D               POPFD                                   ;到这
008E13E8     68 00E08D00      PUSH SwishMax.008DE000
008E13ED     C3               RETN

008DE000     9C               PUSHFD
008DE001     60               PUSHAD
008DE002     E8 02000000      CALL SwishMax.008DE009       ;下硬件访问断点F9
008DE007     33C0             XOR EAX,EAX
008DE009     8BC4             MOV EAX,ESP

008DE3E7     9D               POPFD                                 ;到这
008DE3E8     68 00708C00      PUSH SwishMax.008C7000
008DE3ED     C3               RETN

008C7000    /EB 06            JMP SHORT SwishMax.008C7008
008C7002    |68 61462600      PUSH 264661
008C7007    |C3               RETN
008C7008    \9C               PUSHFD
008C7009     60               PUSHAD
008C700A     E8 02000000      CALL SwishMax.008C7011           ;下硬件访问断点不能F9了F7进入,找到上面说的注册系统跳过然后F9
008C700F     33C0             XOR EAX,EAX
008C7011     8BC4             MOV EAX,ESP
008C7013     83C0 04          ADD EAX,4

008C854F     9D               POPFD                                ;到这
008C8550     50               PUSH EAX
008C8551     68 61466600      PUSH SwishMax.00664661
008C8556     C2 0400          RETN 4                           ;到OEP00664661

这个程序关闭的时候会删除上面临时放的4个文件,由于脱过壳所以运行的时候不会释放文件,咱们可以用RAR作个EXE开始释放该4个文件到TEMP,然后运行主程序就可以了~~
http://hi.baidu.com/xdct/blog/item/f6e3b544f8d50c4f500ffe65.html

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
用rar做exe开始释放4个temp文件怎么释放?还有按f7和f8运行程序做什么?我才接触这些软件。汇编和vb都不懂
2007-9-15 17:32
0
游客
登录 | 注册 方可回帖
返回
//