一、破解目标:用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将上述段加载到相应的地址空间。
[课程]FART 脱壳王!加量不加价!FART作者讲授!