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