Gizmo's Cracking Tutorial 2!

Intro:
======

Dies ist mein zweites Cracking Tutorial. Dieses Tutorial ist an Anlehnung an das Tutorial 1 geschrieben. Vor Lesen dieses Tutorials, sollte man mein erstes gelesen haben.

Was cracken wir denn heute?
Age of Empires!
Es ist zwar schon ein bisschen alt, doch ich habe es deshalb genommen, weil man ziemlich leicht an das Spiel herankommt und weil es eine einfache CD-Protection hat.

Bentigte Tools:

Win32Dasm
Hiew

Findet ihr beides unter come.to/qcg in der Filez section.


Fangen wir an:
==============

Age of Empires vollstndig installieren (ca. 182 MB). Danach Kopie von Empires.exe erstellen und in Win32Dasm Disassemblen (Disassembler -> Open File to Disassemble).

Jetzt schauen wir doch mal, was passiert wenn man Empires.exe ohne CD ausfhrt: 
Wir kommen bis ins Men, doch sobald wir auf Einzelspieler klicken, kommt die Meldung: "Sie mssen eine Spiel-CD einlegen, um..."

Wir klicken also in Win32Dasm auf "Refs -> String Data References" (ihr knnt auch den Button links neben dem Drucken-Button klicken) und suchen nach der Fehlermeldung. Doch wir finden nichts, was mit "Sie mssen" anfngt. Also suchen wir nach was anderem Sinnvollen. Das finden wir auch, nmlich "CDPath". Wir doppelklicken also auf CDPath, schlieen das String Data References Fenster und sehen folgendes vor uns:

		.
		.
		.

* Possible StringData Ref from Data Obj ->"%s%s.avi"

		.
		.
		.

* Possible StringData Ref from Data Obj ->"CDPath"

:0040358A	6884C6550		push 0055C684
:0040358F	8B8EAC010000		mov ecx, dword ptr [esi+000001AC]
:00403595	6A00			push 00000000
:00403597	E824A10B00		call 004BD6C0
:0040359C	85C0			test eax, eax
:0040359E	7430			je 004035D0
:004035A0	53			push ebx
:004035A1	50			push eax
:004035A2	8D84248C000000		lea eax, dword ptr [esp+0000008C]

Doch was sehen wir da oben???
"%s%s.avi": Das sieht doch schwer nach Videos aus (AVI ist ein Windows Videoformat). Doch wir wollen nicht die Videos rippen, sondern das Spiel ohne CD zum laufen bringen. Also klicken wir wieder auf String Data References, dann doppelklicken wir auf CDPath. Wenn wir jetzt im Hintergrund das gleiche wieder sehen, dann doppelklicken wir nochmal drauf, falls wir aber gleich die folgenden Codes sehen, dann schlieen wir das Fenster gleich.

		.
		.
		.
		
* Referenced by a (U)nconditional or (C)onditional Jump at Adress:
|:004D657E(C)
|
:004D65C9	A114455600		mov eax, dword ptr [00564514]
:004D65CE	85C0			test eax, eax
:004D65D0	7407			je 004D65D9				<-- 2
:004D65D2	B801000000		mov eax, 00000001
:004D65D7	EB7F			jmp 004D6658

* Referenced by a (U)nconditional or (C)onditional Jump at Adress:
|:004D65D0(C)									<-- 1
|

* Possible String Data Ref from Data Obj ->"CDPath"

:004D65D9	6884C65500		push 0055C684
:004D65DE	8B8EAC010000		mov ecx, dword ptr [esi+000001AC]
:004D65E4	6A00			push 00000000
:004D65E6	E8D570FEFF		call 004BD6C0
:004D65EB	8BF8			mov edi, eax
:004D65ED	85FF			test edi, edi
:004D65EF	7504			jne 004D65F5
:004D65F1	33C0			xor eax, eax
:004D65F3	EB63			jmp 004D6658

		.
		.
		.

Wieso kommt jetzt was anderes als vorher, werden sich jetzt viele von euch fragen, doch das ist ganz einfach: Manche String Data References haben mehrere Bezge im Programm. Wenn man fters auf die Meldung klickt, kann es passieren, da man verschiedene Codes angezeigt bekommt. Man mu dann herausfinden, welche Codes man verndern mu. Es kommt auch fters vor, da man bei jeder Reference einen Jump bzw. Call verndern mu.

Doch jetzt zum Crack:
Wenn wir uns CDPath genauer anschauen, finden wir heraus, da es dort nichts wichtiges fr uns gibt. Also klicken wir auf Goto Code Location (der 8. Button von links) und geben 004D65D0 ein (1). Wir finden uns dann bei 2 wieder. AHA! Der Jump bei 2 Springt also zur Fehlermeldung, wenn keine CD im Laufwerk ist. Wenn die CD im Laufwerk ist, geht das Programm seinen normalen Lauf weiter. Was machen wir also? Richtig, den Jump bei 2 ausNOPen:
Wir merken uns die Nummer hinter dem @Offset in der Statuszeile (ohne das h): 000D59D0
Jetzt schlieen wir Win32DASM und starten Hiew.
Wir ffnen Empires.exe und drcken F4, whlen Decode, drcken F5 und geben die Nummer 000D59D0 ein. Jetzt kommt der Teil, den man kapieren mu: 
Der HEX-Code fr NOP ist 90.
Der Hex-Code fr unseren Jump ist 7407.

Jetzt kann man aber nicht einfach statt 7407, 90 eingeben, sondern man mu
statt 7407
      9090 eingeben. (Klartext: Fr 2 Zahlen eine 90)

Dann drcken wir F9, dann F10 und starten Empires.exe ohne CD.
Und ... Vorspann ... Men ... Einzelspieler ... TATAA! Wir knnen es ohne CD spielen!!!		

Nachwort:
=========

Wenn ihr eine andere Version von Age of Empires habt, dann sind auch die Codes verschieden. Crackt das Spiel dann einfach mit euren Codes (Das Prinzip bleibt gleich).

Wie ich schon im Tutor 1 erwhnte: Ausprobieren und ben sind die 2 wichtigsten Schritte zum Meister-Cracker.

Im nchsten Tutorial werde ich erklren, wie man Spiele, die keinen Fehlertext in der String Data Reference haben, crackt.

An alle Cracker: Ich wei, das ist nicht der beste Weg, AOE zu cracken, es gibt auch noch andere, bla bla bla. Schreibt mir deshalb bitte keine Mails!!!

Wenn ihr Fragen zum Tutorial habt: Mailt an e-mailGIZMO@gmx.net

Greetz:
=======

- To all QCG Memberz
- To all Crackers
- To all Newbies

(C) by Gizmo from QCG (1999)