Willkommen zu Gizmo's Game Cracking Tutorial 5!

iNtRo:
======
So, da bin ich wieder. Um dieses Tutorial zu verstehen, sollte Tut 1 - 4 gelesen haben.
Heute lernt ihr eine andere Art, die CD-Fehlermeldung in Win32DASM zu finden und zu cracken.
Auerdem werden wir heute keinen Jump umstellen, sondern mit dem Befehl "ret" - Return arbeiten.
Wir werden heute Incoming cracken, da sich das Verfahren an diesem Spiel gut erklren lt.

Bentigte Toolz:
Win32DASM
Hiew
findet man unter http://come.to/qcg in der Filez Section

Let's GO!
=========
Als erstes Incoming installieren (45MB). Was, nur 45MB - wieso braucht man da eine CD? Wir brauchen bald keine mehr!
Nach der Installation eine Kopie von Incoming.exe erstellen und in Win32DASM disassemblen. Jetzt starten wir Incoming und was kommt denn da? -> "CD nicht vorhanden". Wir finden in der StringData
Reference nur "CD not present", doch da kann man so viele Jumps wie man will umstellen, es kommt immer noch die verdammte Fehlermeldung. Mit Kernel32GetDriveTypeA sind wir auch nicht erfolgreich, da wir kein cmp, 00000005 finden. (Wert fr CD-ROM)
Dann halt anders:
Wir drcken STRG+L, dann auf Load, ohne in dem Fenster was einzugeben und haben dann lauter Fenster vor uns. Wir drcken auf Run (F9). Jetzt wird Incoming gestartet und im Hintergrund verfolgt Win32DASM die Befehle weiter. Wenn die Fehlermeldung kommt "CD nicht vorhanden", drcken wir ALT+TAB und drcken im Win32DASM Fenster auf Terminate, dann auf Ja. Jetzt ist oben noch das "alte" Win32DASM Fenster. Wir vergrern es, so da wir etwas erkennen knnen und schauen mal, wo wir gelandet sind: (ganz unten das Error-Feld)

* Referenced by a CALL at Addresses:
|:00401935	, :0040195C	, :00402C70	, :00403DEF	, :00403EE2
	.
	.
	.
|:00478B7E
|
:0042E0D0	8B4C2404		mov ecx, dword ptr [esp+04]	<-- 1
:0042E0D4	83EC20			sub esp, 00000020
:0042E0D7	8D442428		lea eax, dword ptr [esp+28]
:0042E0DB	56			push esi
:0042E0DC	57			push edi
:0042E0DD	50			push eax
:0042E0DE	51			push ecx
:0042E0DF	68207D4D00		push 04D7D20
:0042E0E4	E847DA0400		call 0047BB30
:0042E0E9	BF80184900		mov edi, 00491880
:0042E0EE	83C9FF			or ecx, FFFFFFFF
:0042E0F1	33C0			xor eax, eax
:0042E0F3	83C40C			add esp, 0000000C
:0042E0F6	F2			repnz
:0042E0F7	AE			scasb
:0042E0F8	F7D1			not ecx
:0042E0FA	2BF9			sub edi, ecx
:0042E0FC	68207D4D00		push 004D7D20
:0042E101	8BF7			mov esi, edi
:0042E103	8BD1			mov edx, ecx
:0042E105	BF207D4D00		mov edi, 004D7D20
:0042E10A	83C9FF			or ec	x, FFFFFFFF
:0042E10D	F2			repnz
:0042E10E	AE			scasb
:0042E10F	8BCA			mov ecx, edx
:0042E111	4F			dec edi
:0042E112	C1E902			shr ecx, 02
:0042E115	F3			repz
:0042E116	A5			movsd
:0042E117	8BCA			mov ecx, edx
:0042E119	83E103			and ecx, 00000003
:0042E11C	F3			repz
:0042E11D	A4			movsb
:0042E11E	E85DCA0400		call 0047AB80
:0042E123	83C404			add esp, 00000004
:0042E126	8D442408		lea eax, dword ptr [esp+08]
:0042E12A	50			push eax
	
* Reference To: KERNEL32.GlobalMemoryStatus, Ord:0161h
					|
:0042E12B	FF15F4604800		Call dword ptr [004860F4]
:0042E131	E8CAA5FEFF		call 00418700

* Reference To: USER32.MessageBoxA, Ord:0195h
					|
:0042E136	8B35B0614800		mov esi, dword ptr [004861B0]
:0042E13C	6A00			push 00000000

* Possible StringData Ref from Data Obj ->"Incoming Error Report."
					|
:0042E13E	6868184900		push 00491868
:0042E143	68207D4D00		push 004D7D20
:0042E148	6A00			push 00000000
:0042E14A	FD6			call esi
:0042E14C	6A00			push 00000000		<-- hier ist unser Startpunkt

* Possible StringData Ref from Data Obj ->"Incoming Error Report."
					|
:0042E14E 	6868184900		push 00491868

	.
	.
	.

So, da wren wir nun. Bei 0042E14C sind wir gelandet. Wir scrollen also weiter hoch, um zu kucken, ob wir nicht irgendwo einen Jump finden, der fr den Schei verantwortlich ist. Doch das einzige, da wir finden, sind ein paar Calls. Ihr knnt ja mal versuchen, einige auszuN0Pen, oder sonstwas damit machen - es geht nicht. Also hrt gut zu:
Da der ganze ablauf von sehr vielen Calls aufgerufen wird, fllt die Mglich keit auch flach, mit GotoCodeLocation zurckzugehen. Also gehen wir zur ersten Funktion nach den Calls: 
:0042E0D0	8B4C2404		mov ecx, dword ptr [esp+04] 	(bei 1)
das @Offset dieser Funktion (0002D4D0) merken wir uns und starten Hiew. Dort whlen wir Incoming.exe aus, drcken F4, whlen Decode drcken F5 und geben 0002D4D0 ein. Dann drcken wir F3 und geben C3 (return) ein. Dann drcken wir F9, dann F10 und starten Incoming.exe --> es luft ohne CD!!!
Erklrung: C3 ist der Hex-Code fr Return. Das bedeutet, da nichts ausgefhrt wird, sondern gleich wieder zurckgesprungen wird (zu den Calls).

oUtRo:
======
Jetzt habt ihr Incoming gecrackt. Wie ich schon in meinen anderen Tutorials erwhnte, ihr sollt ben, ben, ben. Versucht einfach mal andere Spiele und probiert die Verfahren aus, die ich euch beigebracht habe.

Falls ihr Fragen, Kritik, Lob habt, dann schreibt an: e-mailGIZMO@gmx.net

gReeTz fLy OuT t0:

- Whole QCG Crew
- All Crackers
- All Newbies

Schaut mal bei
http://berserka.tsx.org
http://members.tripod.de/wcs
und natrlich bei http://come.to/QCG
vorbei.

C U
	Gizmo
