X‘moe Project » 日志
[minori]sppl破解笔记
2014-3-1 12:03 /
安装时的DVD验证我就不多谈了,早就有破解了。
隔壁用盗版的早就推了一大半了,为什么我买了正版还不能玩=。= 神烦。
废话懒得多说。
安装时请一定用app之类的软件加载!
sppl是锁区的,仅一处API锁区。破解这个没啥好说的,很简单。
接下来就是注册表验证(迷之蛋疼,我是直接在台式机上安装好的,然后拷在本本上的,所以说会提示游戏安装不正确之类的)
目测我是在作死,就不上传破解后的程序了。
接下来是注册表验证段:
如果不通过,就会有以下提示
通过的话,在那个锁区检测的子程序下面就开始创建线程,并且开始执行后面不远处的主程序。
剩下来,这个引擎也没啥好玩的了,封包、脚本之类的代码全在那周围,追追就知道了,目测算法不是很难。
隔壁用盗版的早就推了一大半了,为什么我买了正版还不能玩=。= 神烦。
废话懒得多说。
安装时请一定用app之类的软件加载!
sppl是锁区的,仅一处API锁区。破解这个没啥好说的,很简单。
接下来就是注册表验证(迷之蛋疼,我是直接在台式机上安装好的,然后拷在本本上的,所以说会提示游戏安装不正确之类的)
目测我是在作死,就不上传破解后的程序了。
接下来是注册表验证段:
00E8C450 /$ 55 PUSH EBP
00E8C451 |. 8BEC MOV EBP,ESP
00E8C453 |. 83EC 0C SUB ESP,0C
00E8C456 |. 53 PUSH EBX
00E8C457 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
00E8C45A |. 50 PUSH EAX ; /pHandle = 003DF6D4
00E8C45B |. 68 19000200 PUSH 20019 ; |Access = KEY_READ
00E8C460 |. 6A 00 PUSH 0 ; |Reserved = 0
00E8C462 |. 51 PUSH ECX ; |Subkey
00E8C463 |. 32DB XOR BL,BL ; |
00E8C465 |. 68 02000080 PUSH 80000002 ; |hKey = HKEY_LOCAL_MACHINE
00E8C46A |. C745 F8 040100>MOV DWORD PTR SS:[EBP-8],104 ; |
00E8C471 |. 881E MOV BYTE PTR DS:[ESI],BL ; |
00E8C473 |. FF15 0430EF00 CALL DWORD PTR DS:[<&ADVAPI32.RegOpenKey>; \RegOpenKeyExA
00E8C479 |. 85C0 TEST EAX,EAX
00E8C47B |. 75 31 JNZ SHORT sppl1.00E8C4AE
00E8C47D |. 8B4D FC MOV ECX,DWORD PTR SS:[EBP-4]
00E8C480 |. 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8]
00E8C483 |. 52 PUSH EDX
00E8C484 |. 56 PUSH ESI
00E8C485 |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
00E8C488 |. 50 PUSH EAX
00E8C489 |. 6A 00 PUSH 0
00E8C48B |. 85FF TEST EDI,EDI
00E8C48D |. 75 07 JNZ SHORT sppl1.00E8C496
00E8C48F |. 68 585AEF00 PUSH sppl1.00EF5A58
00E8C494 |. EB 01 JMP SHORT sppl1.00E8C497
00E8C496 |> 57 PUSH EDI
00E8C497 |> 51 PUSH ECX ; |hKey
00E8C498 |. FF15 0830EF00 CALL DWORD PTR DS:[<&ADVAPI32.RegQueryVa>; \RegQueryValueExA
00E8C49E |. 85C0 TEST EAX,EAX
00E8C4A0 |. 75 02 JNZ SHORT sppl1.00E8C4A4
00E8C4A2 |. B3 01 MOV BL,1
00E8C4A4 |> 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
00E8C4A7 |. 52 PUSH EDX ; /hKey
00E8C4A8 |. FF15 0030EF00 CALL DWORD PTR DS:[<&ADVAPI32.RegCloseKe>; \RegCloseKey
00E8C4AE |> 8AC3 MOV AL,BL
00E8C4B0 |. 5B POP EBX
00E8C4B1 |. 8BE5 MOV ESP,EBP
00E8C4B3 |. 5D POP EBP
00E8C4B4 \. C3 RETN
如果不通过,就会有以下提示
00E8C1A0 /$ 55 PUSH EBP
00E8C1A1 |. 8BEC MOV EBP,ESP
00E8C1A3 |. 8B15 1CF6F500 MOV EDX,DWORD PTR DS:[F5F61C]
00E8C1A9 |. 81EC 00010000 SUB ESP,100
00E8C1AF |. 68 00010000 PUSH 100 ; /Count = 100 (256.)
00E8C1B4 |. 8D85 00FFFFFF LEA EAX,DWORD PTR SS:[EBP-100] ; |
00E8C1BA |. 50 PUSH EAX ; |Buffer
00E8C1BB |. 51 PUSH ECX ; |RsrcID = STRING "正しくインストールされていません。"
00E8C1BC |. 52 PUSH EDX ; |hInst => NULL
00E8C1BD |. FF15 5C32EF00 CALL DWORD PTR DS:[<&USER32.LoadStringA>>; \LoadStringA
00E8C1C3 |. 8B45 08 MOV EAX,DWORD PTR SS:[EBP+8]
00E8C1C6 |. 8B15 B4F5F500 MOV EDX,DWORD PTR DS:[F5F5B4]
00E8C1CC |. 50 PUSH EAX ; /Style
00E8C1CD |. 68 88F6F500 PUSH sppl1.00F5F688 ; |Title = ""
00E8C1D2 |. 8D8D 00FFFFFF LEA ECX,DWORD PTR SS:[EBP-100] ; |
00E8C1D8 |. 51 PUSH ECX ; |Text
00E8C1D9 |. 52 PUSH EDX ; |hOwner => NULL
00E8C1DA |. FF15 1C33EF00 CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; \MessageBoxA
00E8C1E0 |. 8BE5 MOV ESP,EBP
00E8C1E2 |. 5D POP EBP
00E8C1E3 \. C3 RETN
通过的话,在那个锁区检测的子程序下面就开始创建线程,并且开始执行后面不远处的主程序。
剩下来,这个引擎也没啥好玩的了,封包、脚本之类的代码全在那周围,追追就知道了,目测算法不是很难。