EnigmA's game cracking tutorial #2 (3.7.2000) {This Tutor is completly written in German and best viewed in notepad} _________________________________________________________________________________________________ Autor: EnigmA Cracking Group: ACG (Artful Cracking Group) Spielname: Creatures 2 Version: 1.0.28 Schutz: einfacher CD-Check Anspruch: für Newbies (Ein wenig Kenntnisse von SoftICE, W32Dasm und Hexeditor) Benötigte Zeit: 10-20 min _________________________________________________________________________________________________ Inhaltsverzeichnis: """"""""""""""""""" I. Vorwort II. Creatures 2 cracking III. Schluß IV. Greetz _________________________________________________________________________________________________ I. Vorwort: """""""""""" Hi! Dies ist mein zweites Tutorial über das Cracken von Games. Diesmal cracken wir Creatures2. Wir werden dazu ein bischen mehr über den Gebrauch von SoftICE und Win32Dasm lernen (hoffe ich zumindest ;-). Ein wenig solltet ihr darüber schon wissen, wenn ihr dieses Tutorial machen wollt. Also, lest euch ein, zwei Tuts über den Gebrauch von Win32Dasm und mein Tutorial über die Konfiguration von SoftICE durch und dann könnt ihr gleich voll durchstarten (vielleicht vorher noch mein erstes Tutorial über Dethkarz durchlesen, aber es geht auch ohne, war nur Werbung in eigener Sache *gg*). So, genug des palabers, jetzt geht's los! _________________________________________________________________________________________________ II. Creatures 2 cracking: """""""""""""""""""""""""" K, fangen wir an! Also, erstmal installiert ihr Creatures2 auf eurer HD (ca. 210 MB) und startet das Spiel, dann den Hinweisen des Spiels folgen (also: neustarten und Bilderkonvertierung durchführen lassen). Jetzt starten wir das Spiel einfach mal ohne CD....ups!! Eine MessageBox erscheint: 'Bitte legen Sie Ihre Creatures 2 CD-ROM in ein beliebiges CD-ROM-Laufwerk, um fortzufahren.' Tja, das war's dann wohl ;-) Nee, natürlich nicht! Wir wollen doch ohne CD spielen (ich lass die immer irgendwo in meinem Zimmer rumfliegen und find sie nie wieder *gg*) und deshalb werden wir jetzt mal SICE drauf ansetzen. Hmmm...doch welcher bpx? Einen auf die Messagebox ? Och nö, ich denke mal, dass er den check mit getdrivetypea macht..also rein in SICE (Strg + D) und eingeben: bpx getdrivetypea Wieder aus SICE rausgehen und die launcher.exe starten... und zack!! SICE springt an! Na wunderbar! Dann wollen wir uns den Code mal ansehen (vorher noch 1x F12 drücken und dann mit F10 durch SICE tracen): 015F:004016A1 83F805 CMP EAX, 05 015F:004016A4 751F JNZ 004016C5 |Ein Jump wird ausgeführt... 015F:004016A6 8A442410 MOV AL, [ESP+10] 015F:004016AA 8D8C2424030000 LEA ECX, [ESP+00000324] 015F:004016B1 8D54241C LEA EDX, [ESP+1C] 015F:004016B5 51 PUSH ECX 015F:004016B6 52 PUSH EDX 015F:004016BB E370100000 CALL 00402730 015F:004016C0 A3B8414000 MOV [004041BB], EAX 015F:004016C5 803E00 CMP BYTE PTR [ESI], 00 |...und hier landen wir. 015F:004016C8 75B7 JNZ 00401681 |Nächster Jump.... ... 015F:00401681 A1B84140000 MOV EAX, [004041B8] |...und nächste Landung ;-) 015F:00401686 85C0 TEST EAX, EAX 015F:00401688 7549 JNZ 004016D3 015F:0040168A 6A04 PUSH 004 015F:0040168C 8D4C2414 LEA ECX, [ESP+14] 015F:00401690 56 PUSH ESI 015F:00401691 51 PUSH ECX 015F:00401692 FFD7 CALL EDI 015F:00401694 83C4C0C ADD ESP, 0C 015F:00401697 8D542410 LEA EDX, [ESP+10] 015F:0040169B 83C604 ADD ESI, 04 015F:0040169E 52 PUSH EDX 015F:0040169F FFD5 CALL EBP ...und wir landen wieder am Anfang. Hmm....Man könnte jetzt annehmen: 'Och da steht ja: CMP, 05 das ist doch immer der CD-Check, den nop ich jetzt einfach weg und die Sache ist geritzt! Denkste! Probier's aus, aber es wird nicht funktionieren. Wollt ihr die Lösung? K: Also, wir tracen jetzt solange mit F10 durch diesen Code (oder drücken einfach 5x F12 beim aufpoppen von SICE), bis wir aus dieser Schleife rauskommen und an dieser Stelle des Codes landen: 015F:00401EB5 85C0 TEST EAX, EAX 015F:00401EB7 7522 JNZ 00401EDB 015F:00401EB9 6AFF PUSH FF 015F:00401EBB 6A05 PUSH 05 015F:00401EBD 6A01 PUSH 01 015F:00401EBF E89E090000 CALL 00402862 |Hier wird die MessageBox aufgeruf |-en Soweit, so gut. Wenn der Call ausgeführt (d.h. ihr drückt jetzt 6x F10) wird landen wir also bei unserer Fehlermeldung...hmmm.. dann drücken wir einfach mal auf 'Abbrechen' in der MessageBox und gucken wie es weiter geht: 015F:00401EC4 83F802 CMP EAX, 02 015F:00401EC7 74E7 JZ 00401ED8 |Hier wird gejumped... 015F:00401EC9 E8B2F6FFFF CALL 00401580 015F:00401ECE 85C0 TEST EAX, EAX 015F:00401ED0 74E7 JZ 00401EB9 015F:00401ED2 B801000000 MOV EAX, 00000001 015F:00401ED7 C3 RET 015F:00401ED8 33C0 XOR EAX, EAX |...und hier landen wir! 015F:00401EDA C3 RET |Dieser Return bringt uns dahin, |wo unser CD-Check erst aufgerufen |wird. Nach dem Return landen wir hier: ... 015F:00401DA7 85C0 TEST EAX, EAX ... Da wir jetzt aber wissen, dass der CD-Check durch einen call aufgerufen wird (ganz klar, weil ein return genau das Gegenstück zu einem call ist), müsste wir doch theoretisch nur diesen call weg- noppen und fertig! Na dann machen wir das doch! Also, W32Dasm starten, SHIFT+F12 drücken und 00401DA7 eingeben und wir sehen folgendes: ... :00401DA2 E809010000 CALL 00401EB0 |Dieser Call ist der Übertäter! :00401DA7 85C0 TEST EAX, EAX ... So, jetzt ist klar was gemacht wird, oder? wir klicken die Zeile mit dem Call zweimal mit der linken Maustaste an (sie wird grün hinterlegt) und lesen den Offset in der unteren Zeile ab: @Offset 000011A2h Wir laden die Datei die Datei 'launcher.exe' in Hview (oder einen anderen Hexeditor) und noppen die Zeile weg, so dass der Call nicht ausgeführt wird. Also statt: 00401DA2 E809010000 CALL 00401EB0 Noppen in: 00401DA2 90 NOP 00401DA3 90 NOP 00401DA4 90 NOP 00401DA5 90 NOP 00401DA6 90 NOP So, nun starten wir mal Creatures2 (ohne CD natürlich!).....zack!! Wieder so eine scheiß MessageBox! Also wird zweimal nach der CD gecheckt! K, dann sind wir noch nicht am Ende. Wir machen SICE nochmal scharf (oder einfach bpx getdrivetypea eingeben *gg*) und schauen was passiert...jep, er poppt wieder auf..wir drücken wieder einmal F12 um in den richtigen Code zu gelangen. Sehen wir uns hier mal die unterste grüne Zeile in SICE an.. da steht folgendes: --------------------------------------CREATURES2!.text+BD7F-------------------------------------- wenn ihr vorhin aufgepasst habt, dann habt ihr vorhin da folgendes gesehen: --------------------------------------LAUNCHER!.text+069F---------------------------------------- Und? Fällt euch was auf? Genau! In dieser Zeile sieht man nämlich, in welcher Datei SICE sich gerade befindet und da 'launcher.exe' ja nun auch nur der launcher ist und zwar für 'creatures2.exe' müssen wir auch hier den CD-Check überwinden. Wir drücken wie vorhin 5xF12 und wir landen an dieser Stelle: ... 015F:0045BFDA 85C0 TEST EAX, EAX 015F:0045BFDC 752D JNZ 0045C00B ... Gut, ich denke mal, dass dieser Check wie der andere Check auch von einem Call aufgerufen wird und deshalb lade ich jetzt die 'creatures2.exe' in W32Dasm und drücke SHIFT+F12 und gebe ein: 0045BFDA und lande hier: ... :0045BFD5 E8860CFBFF CALL 0040CC60 :0045BFDA 85C0 TEST EAX, EAX :0045BFDC 752D JNE 0045C00B ... Okay, der call, der auch hier die Fehlermeldung auslöst (0045BFD5) wird wieder ausgenopped und wir sind fertig, wir haben Creatures2 gecrackt! _________________________________________________________________________________________________ Schluß: """"""" Ich hoffe, euch hat das Tutorial ein wenig Spass gemacht und ihr habt ein bischen was dabei ge- lernt. Wenn ihr diesem Tutorial erfolgreich gefolgt, dann seid ihr aber leider immernoch keine Meistercracker :-( Aber ihr kommt mit jedem Tut ein Stück voran, also: lesen, lesen, lesen. Und wenn ihr ein paar durchgearbeitet habt, dann versucht euch mal ohne Tutorial an irgend ein Spiel. Das war's von mir, ich freue mich natürlich über jedes Feedback was ich von euch bekomme, also, ihr könnt mir gerne mailen, falls ihr dieses Tut kritisieren wollt oder mich einfach nur zu neuen Tutorials anspornen wollt ;-) Bitte keine Mails à la : 'Ich hab hier das Spiel xy, kannst du mir da weiterhelfen?' Für sowas hab ich leider keine Zeit, da ich ja neben Tutorial schreiben auch selber cracke ;-) _________________________________________________________________________________________________ Greetz: """"""" My greetz fly out and over to (no special order): Ahlman, Excocet, Codemunkie, Firestar, MasterGOD, NighTmarE und den Rest der ACG-Crew! _________________________________________________________________________________________________ Feedback und Kritik an: EnigmA2k@gmx.net _________________________________________________________________________________________________