From: cLx <clx@????.com> To: ??? <?????@chez.com> Date: Sat, 26 Oct 2002 17:21:09 +0200 X-Note-à-la-publication: Au total, j'y avais passé des heures, et je m'étais d'avantage amusé comme ça qu'en finissant le jeu... :) Bon, impossible de trouver un crack pour cette version, alors je me suis débrouillé avec les moyens du bord : Au bout de 10 minutes j'ai trouvé ce bout de code qui appelle la procédure de vérification du CD dans window.dll, que j'ai decompillé aussi mais en fait c'est plus simple de faire ça dans le petit loader, si le jeu ne verifie pas lui aussi plus tard... J'ai modifié deux octets dans unreal.exe, en fait il suffit d'inverser la protection, JNE et JE, soit 0x74 et 0x75. |
:00402037 8B154C744000 mov edx, dword ptr [0040744C] :0040203D 833A00 cmp dword ptr [edx], 00000000 :00402040 756C jne 004020AE <---- ICI :00402042 A150744000 mov eax, dword ptr [00407450] :00402047 833800 cmp dword ptr [eax], 00000000 :0040204A 7462 je 004020AE <---- ET ICI :0040204C 8D8D18F8FFFF lea ecx, dword ptr [ebp+FFFFF818] :00402052 51 push ecx * Reference To: Core.?appFSize@@YAHPBD@Z, Ord:0313h | :00402053 FF15A8744000 Call dword ptr [004074A8] :00402059 83C404 add esp, 00000004 :0040205C 85C0 test eax, eax :0040205E 7F4E jg 004020AE :00402060 6A00 push 00000000 * Possible StringData Ref from Data Obj ->"Window" | :00402062 68DC604000 push 004060DC * Possible StringData Ref from Data Obj ->"InsertCdTitle" | :00402067 68E4614000 push 004061E4 :0040206C FFD7 call edi :0040206E 83C40C add esp, 0000000C :00402071 8BF0 mov esi, eax :00402073 6A00 push 00000000 * Possible StringData Ref from Data Obj ->"Window" | :00402075 68DC604000 push 004060DC * Possible StringData Ref from Data Obj ->"InsertCdText" | :0040207A 68D4614000 push 004061D4 :0040207F FFD7 call edi :00402081 83C40C add esp, 0000000C :00402084 6801200000 push 00002001 :00402089 56 push esi :0040208A 50 push eax :0040208B 6A00 push 00000000 * Reference To: USER32.MessageBoxA, Ord:0195h | :0040208D FF1560754000 Call dword ptr [00407560] :00402093 83F802 cmp eax, 00000002 :00402096 759F jne 00402037 * Reference To: Core.?GIsCriticalError@@3HA, Ord:018Dh | :00402098 8B1578744000 mov edx, dword ptr [00407478] :0040209E 6A00 push 00000000 :004020A0 C70201000000 mov dword ptr [edx], 00000001 * Reference To: KERNEL32.ExitProcess, Ord:006Bh | :004020A6 FF15E8744000 Call dword ptr [004074E8] :004020AC EB89 jmp 00402037.... la suite c'est la fin du chargement du programme .... c'est donc bien sur 004020AE qu'il faut se brancher :
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses: |:00402040(C), :0040204A(C), :0040205E(C) | :004020AE 8D45C4 lea eax, dword ptr [ebp-3C] :004020B1 6A00 push 00000000 :004020B3 50 push eax * Possible StringData Ref from Data Obj ->"bCanModifyGore" | :004020B4 68C4614000 push 004061C4