首页
社区
课程
招聘
SecuROM4.X-5.X脱壳[分享]
发表于: 2005-4-27 08:47 5706

SecuROM4.X-5.X脱壳[分享]

2005-4-27 08:47
5706
一、破解目标:用SecuROM 4.X-5.X保护的XX游戏
二、破解工具:OllyDbg 1.10等
三、破解作者:darkbull@email.com.cn
四、破解过程:
1.该游戏用光盘保护,用PEID查看为“SecuROM 4.x.x.x - 5.x.x.x -> Sony DADC”加壳,用OD载入,入口如下:
M3K40.<Mo>  55          PUSH EBP
00C38636    8BEC        MOV EBP,ESP
00C38638    6A FF       PUSH -1
00C3863A    68 A863D000 PUSH M3K40.00D063A8
00C3863F    68 108BC300 PUSH M3K40.00C38B10
00C38644    64:A1 00000>MOV EAX,DWORD PTR FS:[0]
00C3864A    50          PUSH EAX
00C3864B    64:8925 000>MOV DWORD PTR FS:[0],ESP
00C38652    83EC 58     SUB ESP,58
00C38655    53          PUSH EBX
00C38656    56          PUSH ESI
00C38657    57          PUSH EDI
00C38658    8965 E8     MOV DWORD PTR SS:[EBP-18],ESP
00C3865B    FF15 CC54D2>CALL NEAR DWORD PTR DS:[<&kernel32.GetVersion>]

忽略所有异常,下断点BPX TimeGetTime,按F9运行,拦截后代码如下:

00BF04B9    FF15 5CCCD1>CALL NEAR DWORD PTR DS:[D1CC5C]       
00BF04BF    A3 4C7CD000 MOV DWORD PTR DS:[D07C4C],EAX                                ;获取运行时间。                       
00BF04C4    E9 25010000 JMP M3K40.00BF05EE

按F9运行,再次拦截:

00BF04C9    FF15 5CCCD1>CALL NEAR DWORD PTR DS:[D1CC5C]
00BF04CF    8945 D0     MOV DWORD PTR SS:[EBP-30],EAX                                ;再次获取时间。
00BF04D2    8B45 D0     MOV EAX,DWORD PTR SS:[EBP-30]
00BF04D5    2B05 4C7CD0>SUB EAX,DWORD PTR DS:[D07C4C]
00BF04DB    3D 60EA0000 CMP EAX,0EA60
00BF04E0    0F86 080100>JBE M3K40.00BF05EE                                        ;不能大于1分钟。

修改跳转,按F8单步运行,直到如下代码:

00BD79DB    68 B0D3C900 PUSH M3K40.00C9D3B0                                           ;ASCII "EV_APPL_STARTED"
00BD79E0    6A 00       PUSH 0
00BD79E2    6A 00       PUSH 0
00BD79E4    6A 00       PUSH 0
00BD79E6    FF15 987AD1>CALL NEAR DWORD PTR DS:[D17A98]                               ;kernel32.CreateEventA

解压工作已经完成,继续F8单步运行,直到如下代码:

00BC2A97    4B          DEC EBX
00BC2A98    61          POPAD
00BC2A99    49          DEC ECX
00BC2A9A    58          POP EAX
00BC2A9B    A1 388DD100 MOV EAX,DWORD PTR DS:[D18D38]
00BC2AA0    FFE0        JMP NEAR EAX                                                ;=》OEP

2.用OllyDump插件Dump整个进程,SecuROM未加密IAT,但有很多Stolen Code,主要如下:
第一种:call 00bf3180
00BF3180    55         PUSH EBP
00BF3181    8BEC       MOV EBP,ESP
00BF3183    83EC 18    SUB ESP,18
00BF3186    53         PUSH EBX
00BF3187    56         PUSH ESI
00BF3188    57         PUSH EDI
00BF3189    53         PUSH EBX
00BF318A    51         PUSH ECX
00BF318B    52         PUSH EDX
00BF318C    56         PUSH ESI
00BF318D    57         PUSH EDI
00BF318E    50         PUSH EAX
00BF318F    8B45 04    MOV EAX,DWORD PTR SS:[EBP+4]
00BF3192    8945 E8    MOV DWORD PTR SS:[EBP-18],EAX
00BF3195    68 7856341>PUSH 12345678
00BF319A    8BCD       MOV ECX,EBP
00BF319C    2BCC       SUB ECX,ESP
00BF319E    8BFC       MOV EDI,ESP
00BF31A0    8BF4       MOV ESI,ESP
00BF31A2    83C6 04    ADD ESI,4
00BF31A5    C1E9 02    SHR ECX,2
00BF31A8    8B06       MOV EAX,DWORD PTR DS:[ESI]
00BF31AA    8907       MOV DWORD PTR DS:[EDI],EAX
00BF31AC    83C7 04    ADD EDI,4
00BF31AF    83C6 04    ADD ESI,4
00BF31B2    49         DEC ECX
00BF31B3  ^ 75 F3      JNZ SHORT M3K40.00BF31A8
00BF31B5    83ED 04    SUB EBP,4
00BF31B8    A1 987BD00>MOV EAX,DWORD PTR DS:[D07B98]
00BF31BD    83C0 03    ADD EAX,3
00BF31C0    8945 F4    MOV DWORD PTR SS:[EBP-C],EAX
00BF31C3    8B4D E8    MOV ECX,DWORD PTR SS:[EBP-18]
00BF31C6    83E9 04    SUB ECX,4
00BF31C9    C1E9 10    SHR ECX,10
00BF31CC    81E1 FFFF0>AND ECX,0FFFF
00BF31D2    8B55 E8    MOV EDX,DWORD PTR SS:[EBP-18]
00BF31D5    83EA 04    SUB EDX,4
00BF31D8    81E2 FFFF0>AND EDX,0FFFF
00BF31DE    81E2 FFFF0>AND EDX,0FFFF
00BF31E4    33CA       XOR ECX,EDX
00BF31E6    C1E1 03    SHL ECX,3
00BF31E9    8B45 E8    MOV EAX,DWORD PTR SS:[EBP-18]
00BF31EC    83E8 04    SUB EAX,4
00BF31EF    C1E8 05    SHR EAX,5
00BF31F2    33D2       XOR EDX,EDX
00BF31F4    BE 0800000>MOV ESI,8
00BF31F9    F7F6       DIV ESI
00BF31FB    8B45 F4    MOV EAX,DWORD PTR SS:[EBP-C]
00BF31FE    0FBE1410   MOVSX EDX,BYTE PTR DS:[EAX+EDX]
00BF3202    33CA       XOR ECX,EDX
00BF3204    8B45 E8    MOV EAX,DWORD PTR SS:[EBP-18]
00BF3207    83E8 04    SUB EAX,4
00BF320A    33D2       XOR EDX,EDX
00BF320C    BE 0800000>MOV ESI,8
00BF3211    F7F6       DIV ESI
00BF3213    8B45 F4    MOV EAX,DWORD PTR SS:[EBP-C]
00BF3216    0FBE1410   MOVSX EDX,BYTE PTR DS:[EAX+EDX]
00BF321A    C1E2 07    SHL EDX,7
00BF321D    33CA       XOR ECX,EDX
00BF321F    894D FC    MOV DWORD PTR SS:[EBP-4],ECX
00BF3222    6A 03      PUSH 3
00BF3224    8D45 F8    LEA EAX,DWORD PTR SS:[EBP-8]
00BF3227    50         PUSH EAX
00BF3228    8B4D FC    MOV ECX,DWORD PTR SS:[EBP-4]
00BF322B    51         PUSH ECX
00BF322C    68 789AC60>PUSH M3K40.00C69A78
00BF3231    E8 FAFDFFF>CALL M3K40.00BF3030
00BF3236    83C4 10    ADD ESP,10
00BF3239    8945 F0    MOV DWORD PTR SS:[EBP-10],EAX
00BF323C    8B55 F0    MOV EDX,DWORD PTR SS:[EBP-10]
00BF323F    8B04D5 7C9>MOV EAX,DWORD PTR DS:[EDX*8+C69A7C]
00BF3246    83F0 30    XOR EAX,30
00BF3249    3345 FC    XOR EAX,DWORD PTR SS:[EBP-4]
00BF324C    8945 EC    MOV DWORD PTR SS:[EBP-14],EAX
00BF324F    8B75 EC    MOV ESI,DWORD PTR SS:[EBP-14]
00BF3252    8B06       MOV EAX,DWORD PTR DS:[ESI]
00BF3254    8945 04    MOV DWORD PTR SS:[EBP+4],EAX
00BF3257    58         POP EAX
00BF3258    5F         POP EDI
00BF3259    5E         POP ESI
00BF325A    5A         POP EDX
00BF325B    59         POP ECX
00BF325C    5B         POP EBX
00BF325D    5F         POP EDI
00BF325E    5E         POP ESI
00BF325F    5B         POP EBX
00BF3260    8BE5       MOV ESP,EBP
00BF3262    5D         POP EBP
00BF3263    C3         RETN                                                        ;到函数入口地址

第二种:call 00bf2f70
00BF2F70    55         PUSH EBP
00BF2F71    8BEC       MOV EBP,ESP
00BF2F73    83EC 18    SUB ESP,18
00BF2F76    53         PUSH EBX
00BF2F77    56         PUSH ESI
00BF2F78    57         PUSH EDI
00BF2F79    53         PUSH EBX
00BF2F7A    51         PUSH ECX
00BF2F7B    52         PUSH EDX
00BF2F7C    56         PUSH ESI
00BF2F7D    57         PUSH EDI
00BF2F7E    8B45 04    MOV EAX,DWORD PTR SS:[EBP+4]
00BF2F81    8945 E8    MOV DWORD PTR SS:[EBP-18],EAX
00BF2F84    A1 987BD00>MOV EAX,DWORD PTR DS:[D07B98]
00BF2F89    83C0 01    ADD EAX,1
00BF2F8C    8945 F4    MOV DWORD PTR SS:[EBP-C],EAX
00BF2F8F    8B4D E8    MOV ECX,DWORD PTR SS:[EBP-18]
00BF2F92    83E9 04    SUB ECX,4
00BF2F95    C1E9 10    SHR ECX,10
00BF2F98    81E1 FFFF0>AND ECX,0FFFF
00BF2F9E    8B55 E8    MOV EDX,DWORD PTR SS:[EBP-18]
00BF2FA1    83EA 04    SUB EDX,4
00BF2FA4    81E2 FFFF0>AND EDX,0FFFF
00BF2FAA    81E2 FFFF0>AND EDX,0FFFF
00BF2FB0    33CA       XOR ECX,EDX
00BF2FB2    D1E1       SHL ECX,1
00BF2FB4    8B45 E8    MOV EAX,DWORD PTR SS:[EBP-18]
00BF2FB7    83E8 04    SUB EAX,4
00BF2FBA    C1E8 05    SHR EAX,5
00BF2FBD    33D2       XOR EDX,EDX
00BF2FBF    BE 0800000>MOV ESI,8
00BF2FC4    F7F6       DIV ESI
00BF2FC6    8B45 F4    MOV EAX,DWORD PTR SS:[EBP-C]
00BF2FC9    0FBE1410   MOVSX EDX,BYTE PTR DS:[EAX+EDX]
00BF2FCD    33CA       XOR ECX,EDX
00BF2FCF    8B45 E8    MOV EAX,DWORD PTR SS:[EBP-18]
00BF2FD2    83E8 04    SUB EAX,4
00BF2FD5    33D2       XOR EDX,EDX
00BF2FD7    BE 0800000>MOV ESI,8
00BF2FDC    F7F6       DIV ESI
00BF2FDE    8B45 F4    MOV EAX,DWORD PTR SS:[EBP-C]
00BF2FE1    0FBE1410   MOVSX EDX,BYTE PTR DS:[EAX+EDX]
00BF2FE5    C1E2 07    SHL EDX,7
00BF2FE8    33CA       XOR ECX,EDX
00BF2FEA    894D FC    MOV DWORD PTR SS:[EBP-4],ECX
00BF2FED    6A 01      PUSH 1
00BF2FEF    8D45 F8    LEA EAX,DWORD PTR SS:[EBP-8]
00BF2FF2    50         PUSH EAX
00BF2FF3    8B4D FC    MOV ECX,DWORD PTR SS:[EBP-4]
00BF2FF6    51         PUSH ECX
00BF2FF7    68 789AC60>PUSH M3K40.00C69A78
00BF2FFC    E8 2F00000>CALL M3K40.00BF3030
00BF3001    83C4 10    ADD ESP,10
00BF3004    8945 F0    MOV DWORD PTR SS:[EBP-10],EAX
00BF3007    8B55 F0    MOV EDX,DWORD PTR SS:[EBP-10]
00BF300A    8B04D5 7C9>MOV EAX,DWORD PTR DS:[EDX*8+C69A7C]
00BF3011    83F0 10    XOR EAX,10
00BF3014    3345 FC    XOR EAX,DWORD PTR SS:[EBP-4]
00BF3017    8945 EC    MOV DWORD PTR SS:[EBP-14],EAX
00BF301A    8B45 EC    MOV EAX,DWORD PTR SS:[EBP-14]
00BF301D    5F         POP EDI
00BF301E    5E         POP ESI
00BF301F    5A         POP EDX
00BF3020    59         POP ECX
00BF3021    5B         POP EBX
00BF3022    8BE5       MOV ESP,EBP
00BF3024    5D         POP EBP
00BF3025    8B00       MOV EAX,DWORD PTR DS:[EAX]
00BF3027    FFE0       JMP NEAR EAX                                                ;到函数入口地址
00BF3029    5F         POP EDI
00BF302A    5E         POP ESI
00BF302B    5B         POP EBX
00BF302C    8BE5       MOV ESP,EBP
00BF302E    5D         POP EBP
00BF302F    C3         RETN                       

第三种:call 00bf3340
00BF3340    55         PUSH EBP
00BF3341    8BEC       MOV EBP,ESP
00BF3343    83EC 18    SUB ESP,18
00BF3346    53         PUSH EBX
00BF3347    56         PUSH ESI
00BF3348    57         PUSH EDI
00BF3349    53         PUSH EBX
00BF334A    51         PUSH ECX
00BF334B    52         PUSH EDX
00BF334C    56         PUSH ESI
00BF334D    57         PUSH EDI
00BF334E    8B45 04    MOV EAX,DWORD PTR SS:[EBP+4]
00BF3351    8945 E8    MOV DWORD PTR SS:[EBP-18],EAX
00BF3354    A1 987BD00>MOV EAX,DWORD PTR DS:[D07B98]
00BF3359    83C0 05    ADD EAX,5
00BF335C    8945 F4    MOV DWORD PTR SS:[EBP-C],EAX
00BF335F    8B4D E8    MOV ECX,DWORD PTR SS:[EBP-18]
00BF3362    83E9 04    SUB ECX,4
00BF3365    C1E9 10    SHR ECX,10
00BF3368    81E1 FFFF0>AND ECX,0FFFF
00BF336E    8B55 E8    MOV EDX,DWORD PTR SS:[EBP-18]
00BF3371    83EA 04    SUB EDX,4
00BF3374    81E2 FFFF0>AND EDX,0FFFF
00BF337A    81E2 FFFF0>AND EDX,0FFFF
00BF3380    33CA       XOR ECX,EDX
00BF3382    C1E1 05    SHL ECX,5
00BF3385    8B45 E8    MOV EAX,DWORD PTR SS:[EBP-18]
00BF3388    83E8 04    SUB EAX,4
00BF338B    C1E8 05    SHR EAX,5
00BF338E    33D2       XOR EDX,EDX
00BF3390    BE 0800000>MOV ESI,8
00BF3395    F7F6       DIV ESI
00BF3397    8B45 F4    MOV EAX,DWORD PTR SS:[EBP-C]
00BF339A    0FBE1410   MOVSX EDX,BYTE PTR DS:[EAX+EDX]
00BF339E    33CA       XOR ECX,EDX
00BF33A0    8B45 E8    MOV EAX,DWORD PTR SS:[EBP-18]
00BF33A3    83E8 04    SUB EAX,4
00BF33A6    33D2       XOR EDX,EDX
00BF33A8    BE 0800000>MOV ESI,8
00BF33AD    F7F6       DIV ESI
00BF33AF    8B45 F4    MOV EAX,DWORD PTR SS:[EBP-C]
00BF33B2    0FBE1410   MOVSX EDX,BYTE PTR DS:[EAX+EDX]
00BF33B6    C1E2 07    SHL EDX,7
00BF33B9    33CA       XOR ECX,EDX
00BF33BB    894D FC    MOV DWORD PTR SS:[EBP-4],ECX
00BF33BE    6A 05      PUSH 5
00BF33C0    8D45 F8    LEA EAX,DWORD PTR SS:[EBP-8]
00BF33C3    50         PUSH EAX
00BF33C4    8B4D FC    MOV ECX,DWORD PTR SS:[EBP-4]
00BF33C7    51         PUSH ECX
00BF33C8    68 789AC60>PUSH M3K40.00C69A78
00BF33CD    E8 5EFCFFF>CALL M3K40.00BF3030
00BF33D2    83C4 10    ADD ESP,10
00BF33D5    8945 F0    MOV DWORD PTR SS:[EBP-10],EAX
00BF33D8    8B55 F0    MOV EDX,DWORD PTR SS:[EBP-10]
00BF33DB    8B04D5 7C9>MOV EAX,DWORD PTR DS:[EDX*8+C69A7C]
00BF33E2    83F0 50    XOR EAX,50
00BF33E5    3345 FC    XOR EAX,DWORD PTR SS:[EBP-4]
00BF33E8    8945 EC    MOV DWORD PTR SS:[EBP-14],EAX
00BF33EB    5F         POP EDI
00BF33EC    5E         POP ESI
00BF33ED    5A         POP EDX
00BF33EE    59         POP ECX
00BF33EF    5B         POP EBX
00BF33F0    8BE5       MOV ESP,EBP
00BF33F2    58         POP EAX
00BF33F3    95         XCHG EAX,EBP
00BF33F4    8B40 EC    MOV EAX,DWORD PTR DS:[EAX-14]
00BF33F7    FF30       PUSH DWORD PTR DS:[EAX]
00BF33F9    C3         RETN                                                        ;到函数入口地址

第四种:call DS:[c4cbec]等
01480000    55         PUSH EBP
01480001    8BEC       MOV EBP,ESP
01480003    81EC CC000>SUB ESP,0CC
01480009    53         PUSH EBX
0148000A    56         PUSH ESI
0148000B    57         PUSH EDI
0148000C    8945 D4    MOV DWORD PTR SS:[EBP-2C],EAX
0148000F    895D A8    MOV DWORD PTR SS:[EBP-58],EBX
01480012    894D 94    MOV DWORD PTR SS:[EBP-6C],ECX
01480015    8955 E8    MOV DWORD PTR SS:[EBP-18],EDX
01480018    89B5 78FFF>MOV DWORD PTR SS:[EBP-88],ESI
0148001E    897D E4    MOV DWORD PTR SS:[EBP-1C],EDI
01480021    896D F4    MOV DWORD PTR SS:[EBP-C],EBP
01480024    8965 C4    MOV DWORD PTR SS:[EBP-3C],ESP
01480027    8B45 04    MOV EAX,DWORD PTR SS:[EBP+4]
0148002A    8945 AC    MOV DWORD PTR SS:[EBP-54],EAX
0148002D    8B45 08    MOV EAX,DWORD PTR SS:[EBP+8]
01480030    8945 98    MOV DWORD PTR SS:[EBP-68],EAX
01480033    8B45 0C    MOV EAX,DWORD PTR SS:[EBP+C]
01480036    8945 F8    MOV DWORD PTR SS:[EBP-8],EAX
01480039    8B45 10    MOV EAX,DWORD PTR SS:[EBP+10]
0148003C    8945 DC    MOV DWORD PTR SS:[EBP-24],EAX
0148003F    8B45 14    MOV EAX,DWORD PTR SS:[EBP+14]
01480042    8945 B8    MOV DWORD PTR SS:[EBP-48],EAX
01480045    8B45 18    MOV EAX,DWORD PTR SS:[EBP+18]
01480048    8945 D0    MOV DWORD PTR SS:[EBP-30],EAX
省略部分代码...
0148060E    8B45 9C    MOV EAX,DWORD PTR SS:[EBP-64]
01480611    2345 B4    AND EAX,DWORD PTR SS:[EBP-4C]
01480614    8B4D BC    MOV ECX,DWORD PTR SS:[EBP-44]
01480617    C1E1 02    SHL ECX,2
0148061A    D3E8       SHR EAX,CL
0148061C    33D2       XOR EDX,EDX
0148061E    B9 0C00000>MOV ECX,0C
01480623    F7F1       DIV ECX
01480625    8955 A0    MOV DWORD PTR SS:[EBP-60],EDX
01480628    8B55 A0    MOV EDX,DWORD PTR SS:[EBP-60]
0148062B    8995 68FFF>MOV DWORD PTR SS:[EBP-98],EDX
01480631    83BD 68FFF>CMP DWORD PTR SS:[EBP-98],0B
01480638    0F87 92010>JA 014807D0
0148063E    8B85 68FFF>MOV EAX,DWORD PTR SS:[EBP-98]
01480644    FF2485 317>JMP NEAR DWORD PTR DS:[EAX*4+B87A31]
进入另一段:
00B86FFC    8B15 F0A0D>MOV EDX,DWORD PTR DS:[D1A0F0]
00B87002    8B45 CC    MOV EAX,DWORD PTR SS:[EBP-34]
00B87005    3302       XOR EAX,DWORD PTR DS:[EDX]
00B87007    8945 CC    MOV DWORD PTR SS:[EBP-34],EAX
00B8700A    E9 2101000>JMP M3K40.00B87130
省略部分代码...
00B87982    83C4 44    ADD ESP,44
00B87985    5A         POP EDX
00B87986    59         POP ECX
00B87987    8B45 CC    MOV EAX,DWORD PTR SS:[EBP-34]
00B8798A    8BF0       MOV ESI,EAX
00B8798C    8B06       MOV EAX,DWORD PTR DS:[ESI]
00B8798E    5F         POP EDI
00B8798F    5E         POP ESI
00B87990    5B         POP EBX
00B87991    8BE5       MOV ESP,EBP
00B87993    5D         POP EBP
00B87994  - FFE0       JMP NEAR EAX                                          ; 到函数入口地址
00B87996    E9 1B00000>JMP M3K40.00B879B6

3.直接修复比较麻烦,要修复三百多处,可以用LOADER将上述段加载到相应的地址空间。

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

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
2
那些地方看样子是函数加密,不是Stolen Code,需要修复,否则无法跨平台运行

BTW:最近买碟少了,没有碰到SecuROM保护的游戏
2005-4-27 09:00
0
雪    币: 329
活跃值: (411)
能力值: ( LV9,RANK:730 )
在线值:
发帖
回帖
粉丝
3

多谢fly兄指点,关于跨平台问题用ImportRec修复即可,已在WINXP和WIN2003下测试通过.
2005-4-27 14:58
0
游客
登录 | 注册 方可回帖
返回
//