PRIMARY HOME OF THIS FILE: http://www.sismusic.de  by Venil Farlaub

E-Mail: venil@sismusic.de 

Thanks to: www.crackstore.com

 

ATTENTION: WRITTEN IN GERMAN

 

Debilsoft presents:

What do you want to crack today?

 

 

Goldwave 4.11 Crack Tutorial (Crackanleitung zum Nachmachen )

 

Inhalt:

 

-         Einleitung

-         Benötigte Software

-         Information zur Vorgehensweise

-         Teil I: Beseitigung des Hilfedateiaufrufs

      (Programm erkunden, Disassemblen, Datei verändern)

-         Teil II: Beseitigung der Sharewaremeldung

-         Veränderung von Text im Programm

-         Teil III: Crackengine

-         Nachwort zur Crackmethode

-         Teil IV: Kopierschutz bei Spielen   

 

 

 

 

 

OK! eins, zwei, drei, vier: WIR SIND PUNKS, WIR SIND PUNKS!

 

Aber ohne erst in den Erik Becker (www.sismusic.de ) Punkwahn des hirnverbrannten

Schwachsinns zu fallen, fangen wir lieber direkt an GOLDWAVE Version 4.11

zu cracken, so dass die Registriercodeeingabe nicht mehr notwendig ist und wir das Programm

ohne Einschränkung nutzen können.  

(Um diese Anleitung zu verstehen ist mindestens ein IQ

von >92.458 oder wahlweise ein erlogener Doktortitel notwendig!).

 

Benötigt werden:

 

Goldwave Version 4.11 - www.goldwave.com   (not the german version!!)

W32dasm - www.crackstore.com   

Hackers View - www.crackstore.com 

 

und etwas Zeit (und eventuell auch ein wenig MDMA - guter Funkpunkrock

oder wahlweise extrem guter Techno tut's auch - www.sismusic.de , nur kein RAP)

 

Information zur Vorgehensweise:

 

Da wir ja das Programm Goldwave zu unseren Gunsten verändern wollen, ist ein Einblick in den Programmcode notwendwendig. Da jedoch der Programmcode für den Menschen direkt nicht lesbar ist, benutzt man ein hilfreiches Werkzeug namens Disassembler. Dieser setzt den Programmcode zurück in lesbare Maschinensprache um. Zwar gleicht diese nicht der ursprünglichen Form des Quellcodes, jedoch gibt die Maschinensprache die gleichen Funktionen wieder, wie der ursprüngliche in einer Programmiersprache wie z.B. C++, programmierte Quelltext.  

 

Teil I

 

Schritt 1: Programm erkunden

 

Als erstes müssen wir feststellen, welche Einschränkungen die Shareware

Version hat, aus der wir nun mal eine Vollversion cracken wollen.

Nach einer mehr oder weniger langen Erkundung der Tiefen dieses fast vollendeten

Softwarewunders, stellen wir folgende Tatsachen fest, die wir

ganz gemein, fies und hinterlistig beseitigen werden. (Wir cracken Goldwave unter der

Vorraussetzung, dass es nicht registriert ist, da ja sonst

das Cracken nicht notwendig wäre - wenn bei Dir (Ihnen) Goldwave registriert sein sollte,

dann lösche einfach die GOLDWAVE.INI im Windows Verzeichnis)

 

1: Beim Start von Goldwave wird immer die Hilfe Datei geöffnet

2: Nach 150 Klicks auf Knöpfe jeder Art erscheint eine Sharewaremeldung

3: die dritte unwichtigere müsst Ihr selber rausfinden - gemein wa?!

 

Schritt 2: Programmcode im Disassembler auseinandernehmen und erforschen

 

Als nächstes öffnen wir im Disassembler W32dasm, der den Quellcode sozusagen

in Maschinensprache darstellt, (sehr komplexe hardwarenahe Programmiersprache)

die Datei GOLDWAVE.EXE (am besten die Sicherungskopie). Nach ein paar Sekunden

bei meinem P IV 1500 MHz Ultra Pro mit Turbo Dieselkühlung und I² C Bus Interface zum

Toaster bzw. zum Wechselstrom umgebauten Vibro 3001, erscheinen für uns auf den ersten Blick

verwirrende Buchstaben und Zahlen, die jedoch nicht so wichtig sind wie

sie zu scheinen vermögen. Nach diesem verwirrendem Satz werden wir als erstes den

verfickten Hilfedateiaufruf Richtung Hölle schicken.

Dazu klicken wir in W32dasm auf "search" und dann auf "find text".

Gesucht werden soll nun eine Eintragung im Programm die irgendwo auf den Text

GOLDWAVE.HLP hinweißt. Dazu geben wir als Suchbegriff einfach "hlp" ein.

Schon nach einem kurzen Augenblick erscheint der indirekte  Eintrag auf dem Bildschirm.

Wir sehen:

 

* Referenced by a CALL at Addresses:

|:004402C7   , :00440302   , :0044033A   , :0045B2AE   , :0045B369  

|:0045B6BA   , :004C4832   , :004C6F9E   , :004C6FD6  

|

:0043F758 55                      push ebp

:0043F759 8BEC                    mov ebp, esp

:0043F75B 83C4EC                  add esp, FFFFFFEC

:0043F75E 53                      push ebx

:0043F75F 56                      push esi

:0043F760 57                      push edi

 

* Possible StringData Ref from Data Obj ->"goldwave.hlp"

                                  |

:0043F761 BEF0304F00              mov esi, 004F30F0

:0043F766 8D7DF0                  lea edi, dword ptr [ebp-10]

:0043F769 B903000000              mov ecx, 00000003

:0043F76E F3                      repz

:0043F76F A5                      movsd

:0043F770 A4                      movsb

:0043F771 807D0800                cmp byte ptr [ebp+08], 00

:0043F775 7416                    je 0043F78D

:0043F777 A100314F00              mov eax, dword ptr [004F3100]

:0043F77C 50                      push eax

:0043F77D E822DA0700              call 004BD1A4

:0043F782 59                      pop ecx

:0043F783 33D2                    xor edx, edx

:0043F785 891500314F00            mov dword ptr [004F3100], edx

:0043F78B EB5F                    jmp 0043F7EC

 

WICHTIG:

 

Wir müssen von dem indirekt gefundenen Eintrag immer nach oben lesen, da für uns ja nur

wichtig ist, was vor dem hlp Aufruf geschieht (Da diese bisher noch unbekannte Stelle

für den Help Aufruf relevant ist).

 

Also schauen wir uns einmal an, was vor * Possible StringData Ref from Data Obj ->"goldwave.hlp"

steht. Doch erst mal was zum Allgemein im Dissassambler. ALSO: gut aufpassen und alle aus dem

Raum schmeißen bzw. mit der Freundin Schluss machen.

 

* Referenced by a CALL at Addresses:

|:004402C7   , :00440302   , :0044033A   , :0045B2AE   , :0045B369  

|:0045B6BA   , :004C4832   , :004C6F9E   , :004C6FD6  

 

bedeutet: Durch alle Adressen die unter Referenced by a CALL at Addresses stehen, wird

die Funktion aufgerufen, die das Helpfile aufruft. Diese Adressen stehen indirekt für die Help Buttons, die an verschiedenen Stellen im Programm auftauchen. Da wir aber nur den Helpfileaufruf beim Start des Programms unterbinden wollen, ist eine der 9 Adressen die relevante. Logischerweise könnte es die erste Adresse ein. Dies ist bei unserem schönen Goldwave sogar der

Fall. (Bei anderen Programmen muss es nicht der Erste sein. Da hilft nur ausprobieren)

Also klicken wir im W32dasm auf "Goto" und danach auf "Goto Code Location". Wir geben nun die  Hexadresse 004402C7 ein (die Nullen am Anfang kann man auch zur Vermeidung

unnötiger Sachen weglassen).

Und schon sind wir zu der Stelle gesprungen.

Wir sehen:

 

* Referenced by a CALL at Address:

|:0045B774  

|

:004402B4 55                      push ebp

:004402B5 8BEC                    mov ebp, esp

:004402B7 53                      push ebx

:004402B8 56                      push esi

:004402B9 8B5D08                  mov ebx, dword ptr [ebp+08]

:004402BC 80BB5F07000000          cmp byte ptr [ebx+0000075F], 00

:004402C3 752D                    jne 004402F2

:004402C5 6A00                    push 00000000

:004402C7 E88CF4FFFF              call 0043F758   <-- !!!!!!!!

:004402CC 59                      pop ecx

:004402CD 8BF0                    mov esi, eax

:004402CF 68AE010000              push 000001AE

:004402D4 6A01                    push 00000001

:004402D6 56                      push esi

:004402D7 8B4366                  mov eax, dword ptr [ebx+66]

:004402DA 8B10                    mov edx, dword ptr [eax]

:004402DC 8B4A0C                  mov ecx, dword ptr [edx+0C]

:004402DF 51                      push ecx

 

Wir sehen nun das alles was unter Referenced by a CALL at Address steht, (unter anderem

auch :004402C7 E88CF4FFFF              call 0043F758 (unsere Stelle zu der wir gesprungen sind)), wiederum auch durch einen call Befehl an der Adresse 0045B774 aufgerufen wurde.

 

Frage: Was sagt uns das?

 

Definitiv falsche Antwort: Rex Guildo ist tot

 

Mögliche richtige Antwort:

 

Wenn wir also etwas an der Stelle wo der call 0045B774 aufgerufen wird, etwas

verändern würden, so dass der call auf die Adresse 0045B774 nicht mehr durchgeführt wird,

so würde das bepisste Helpfile nicht mehr aufgerufen werden. (logisch oder?)

 

Deshalb gehen wir über "Goto Code Location" zu der Hex Adresse 0045B774 .

Und schon gelangen wir zu diesem hinterhältigen call Befehl.

Wir haben ihn sozusagen auf frischer Tat ertappt (oder so).

Nun, um den call Befehl auszuschalten, müssen wir wissen, wo sich der call Befehl

im Hex-Dec System versteckt hat, bzw. an welcher Stelle er sich in der Datei

befindet. Dazu schauen wir uns einfach die Daten an, die in der Statusleiste stehen (ganz unten)

 

Uns interessiert nur der Offset Wert.

Wir sehen: @Offset 005AD74h (Das h für Hex und deshalb einfach wegdenken!)

 

Erläuterung:

 

Es stellt sich die Frage warum es nicht reichen würde nur den ersten call Befehl zu verändern bzw. auszuschalten. Dies würde jedoch nicht ausreichen um den Helpfileaufruf vollkommen zu beseitigen, da die Einleitung die letztendlich das Helpfile aufruft, schon vorher eingeleitet bzw. gestartet wird. Deshalb ist es notwendig noch einen weitern Schritt (call) zurückzugehen.

 

Schritt 3:

 

Jetzt können wir endlich fürs Erste aus dem total verwirrtem W32dasm entfliehen und direkt

das Programm Hackers View starten. (zwar in DOS aber dafür einfach)

 

Vorgehensweise in Hackers View:

 

- ALT+F2 drücken um auf das nötige Laufwerk zu wechseln

- die Datei GOLDWAVE.EXE öffnen

 

- F4 drücken und Decode wählen

 

- F5 drücken und danach den Hexcode eingeben : 5AD74 - Enter drücken

 

Wir sehen:

 

    :0045B774 E83B4BFEFF              call 004402B4

 

- F3 drücken um in den Edith (auch edit gennant, aber das wollte MS Word nicht) Mode

   gelangen. Jetzt steht der Courser auf E8 bzw. E

 

- Jetzt den Code E88CF4FFFF mit 5 mal 90 überschreiben (erst mit dem Courser auf das    vorletzte F gehen, da sonst Hackers View nicht mitspielt (und wieder 2 Stellen zurück usw.))  

 

Wir sehen:

 

90   nop

90   nop

90   nop

90   nop

90   nop

 

- nun F9 drücken zum Abspeichern und dann F10 zum Verlassen.

 

- Die verändert GOLDWAVE.EXE starten - und siehe da! ; Wir haben es fürs Erste geschafft!

  Das Helpfile wird nicht mehr geöffnet. (natürlich nur durch die vorherige Einnahme von MDMA!  

  Wenn es nicht funktionieren sollte, einfach die Dosis erhöhen und noch mal von oben lesen)

 

Erläuterung:

 

Unser Ziel war es ,dass der call Befehl nicht mehr ausgeführt wird. Also mussten wir

ihn ausschalten. Dies haben wir mit dem Überschreiben mit den fünf 90 erreicht.

Doch was bedeutet 90 in Assemblersprache?

90 bedeutet no operator, was soviel heisst wie keine Aktion an dieser Stelle.

Folgerung: der call Befehl wird nicht ausgeführt -> Helpfile wird nicht gestartet.

Da der Syntax der vorm überschreiben mit den fünf 90 zehnstellig war, müssen wir ihn

auch mit fünf  mal 90 überschreiben, da es sonst einen Runtime Error (Laufzeit Fehler) geben würde,

d.h. das Programm abstürzen würde.

 

OK. Nun ist der erste Teil geschafft. Wer jetzt noch nicht an Hirnschwund leidet, kann

gleich weiter lesen. Jedoch keine Angst. Er wird früher oder später eintreten - Bestimmt.

 

 

Teil II (The first part of the second chapter)

 

Schritt 1:

 

Nachdem wir nun den Helpfileaufruf erfolgreich ausgeschaltet haben, muss nun die blöde

Shareware Meldung dran glauben, die nach ca. 150 Klicks auf Knöpfe aller Art erscheint.

Dazu schauen wir uns Goldwave etwas genauer an.

Unten rechts steht: Toll % xx.xx (Dollar)

Nach jedem Klick auf Knöpfe aller Art springt der Wert eins nach oben.

Wenn wir 1.50 Dollar "verklickt" haben, bekommen wir folgende Shareware Meldung in einer

Messagebox:

 

This shareware has a $1.50 limit ..bla bla bla

 

Diese Shareware Meldung bitte genau merken!

 

Schritt 2: Programmcode im Dissassambler auseinandernehmen und erforschen

 

Nun müssen wird diese Meldung im Dissassambler suchen, um zu wissen, durch was sie

ausgelöst wird. Darum gehen wir folgendermaßen vor:

 

- In W32dasm im Menü auf "Refs" klicken und auf "String Data References".

- Nun in der langen Liste auf "This shareware has s $1.50 limit" klicken.

 

Erläuterung:

 

Da wir einen Anhaltspunkt brauchen, um die relevante Stelle zu finden, benutzen wird dazu  den Text "This shareware has s $1.50 limit" in der Dialogboxmeldung. Dies ist hilfreich, da dieser eine indirekte  Verbindung zur gesuchten Stelle hat. Dazu benutzen wir das „String Data References“ Menü, da hier „Zeichen Ketten“ vorkommen, die im Programm vorhanden sind.

 

Wir sehen:

 

* Referenced by a CALL at Address:

|:0045B719  

|

:0045B5F0 55                      push ebp

:0045B5F1 8BEC                    mov ebp, esp

:0045B5F3 51                      push ecx

:0045B5F4 53                      push ebx

:0045B5F5 56                      push esi

:0045B5F6 57                      push edi

:0045B5F7 8B4508                  mov eax, dword ptr [ebp+08]

:0045B5FA 80B85F07000000          cmp byte ptr [eax+0000075F], 00

:0045B601 0F85D4000000            jne 0045B6DB

:0045B607 81B85B07000096000000    cmp dword ptr [eax+0000075B], 00000096

:0045B611 0F8CC4000000            jl 0045B6DB

:0045B617 F6805B07000001          test byte ptr [eax+0000075B], 01

:0045B61E 0F85B7000000            jne 0045B6DB

:0045B624 83786600                cmp dword ptr [eax+66], 00000000

 

* Possible StringData Ref from Data Obj ->"This shareware has a $1.50 limit "

                                        ->"each time the program is started."

                                  |

:0045B628 8B3D889D4F00            mov edi, dword ptr [004F9D88]

:0045B62E 7407                    je 0045B637

:0045B630 8B5066                  mov edx, dword ptr [eax+66]

:0045B633 8B32                    mov esi, dword ptr [edx]

:0045B635 EB03                    jmp 0045B63A

 

 

Nachdem wir nun den Text angeklickt haben, sind wir an der entsprechenden Stelle im Dissassambler Code angelangt.

Um diesen Aufruf zu verhindern, lesen wir wieder von diesem Eintrag nach oben.

Nach kurzer Observierung stellen wir fest, dass diese Messagebox (this shareware has a $1.50 limit) möglicherweise durch einen call Befehl an der  Adresse 0045B719 aufgerufen wird.

Also gehen wir wieder durch "Goto Code Location" zu dieser Adresse (0045B719).

An der Adresse angelangt sehen wir:

 

 

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:0045B704(U)

|

:0045B708 52                      push edx

:0045B709 53                      push ebx

:0045B70A E8A9830500              call 004B3AB8

:0045B70F 83C414                  add esp, 00000014

:0045B712 8BD8                    mov ebx, eax

:0045B714 85DB                    test ebx, ebx

:0045B716 740E                    je 0045B726

:0045B718 53                      push ebx

:0045B719 E8D2FEFFFF              call 0045B5F0    ß

:0045B71E 59                      pop ecx

:0045B71F 53                      push ebx

:0045B720 E8B329FEFF              call 0043E0D8

:0045B725 59                      pop ecx

 

 

Und schon sehen wir die Stelle, wo der call Befehl die Adresse 0045B5F0 ausführt.

Deshalb gehen wir genauso vor wie in Teil I,  nur in Grün.

Wir deaktivieren diesen Aufruf mit dem „no operator“ Befehl, und deshalb notieren wir

uns wieder die Offset Adresse, die in der Statusleite steht.

 

Schritt 3:

 

Dazu gehen wir wieder in Hackers View, öffnen die GOLDWAVE.EXE, drücken F4, wählen

Decode, drücken F5, geben die Offset Adresse ein (5AD19) - und schon sind wir beim call Befehl.

Jetzt überschreiben wird den 10stelligen Hexwert wieder mit 9090909090, drücken

F9 zum speichern und verlassen das Programm mit F10.

 

Geschafft - das 1.50 Dollar Limit ist weg.

 

Erläuterung:

 

Durch das Überschreiben mit den nop Befehlen wird zwar bei jeden klicken auf einen Knopf

der Dollarwert um eins erhöht, jedoch wird beim erreichen der 1.50 Dollar Grenze der Befehl,

der für das Ausrufen der Messagebox und somit auch das Helpfile verantwortlich ist nicht mehr ausgeführt bzw.

ist an dieser nicht mehr vorhanden. Verrückt oder?

 

Jetzt sind weitgehend alle wesentlichen Einschränkungen der Scharewaare zerstört.....

....... Bis auf eine, die Du, Ihr oder wahlweise Sie jedoch selber herausfinden müssXX .

Einfach nach dem selben Verfahren vorgehen, das sich jedoch von ein paar Abweichungen

unterscheidet, welche aber nicht so sehr verwirrend sind.

Soweit dazu.

 

Veränderung von Texten im Programm:

 

Wer immer noch nicht genug hat, kann an seinem Programm (in unserem Falle Goldwave) noch folgende Schönheitsoperation mit Hilfe eins Hex Editors wie Hex Works durchführen.

So könnte man ja mal seine Namen ins Programm bringen. Dazu sucht man sich einen

Programmtext aus, der keinen Einfluss auf den Programmablauf hat, bzw. das Programm in

seiner Funktion nicht verändert. Gut geeignet ist hierfür der Text in der "About" Box.

Den ausgesuchten Text einfach z.B. mit Hex Works suchen und verändern. Falls man ihn mit

der Suchfunktion von Hex Works nicht finden kann, dann ist dieser meistens in folgender

Schreibweise geschrieben:

 

Normal         tatsächliche Schreibweise

 

Please           P.l.e.a.s.e

 

Deshalb ist es sinnvoll, den Text im Hex Mode anstatt im Ascii zu suchen.

Dies sieht dann so aus:

 

Normal   Hex

Please     5000 6C00 6500 6100 7300 6500

 

Danach auch dementsprechend den gewünschten Text im Hexmode verändern.

 

 

Nachwort zur Crackmethode

 

Es stellt sich die Frage, warum man nicht anders vorgeht um Goldwave zu cracken.

So wäre es doch z.B. mögliche die Registriercodeeingabe zu cracken, so dass das Programm auch bei falscher Key Eingabe im Keyeingabemenü freigeschaltet wird. Dazu gibt man einen falschen Key ein und merkt sich die folgende Fehlermeldung: INVALID REGISTRATION.

Nun ist anhand dieser Fehlermeldung die relevante Registrierroutine im Programmcode über StringData Ref auffindbar. Daher wäre es nun möglich die Registriercodeeingaberoutine so zu verändern, so dass das Programm auch bei falscher Keyeingabe freigeschaltet wird. Dazu wird einfach die Bedingung verändert (bedingter Sprung), die festlegt, ob Name und Key zueinander passen. Meist handelt es sich dabei im JUMP Befehle wie z.B  je jump if equal oder jne jump if not equal.

Jedoch ist diese Vorgehensweise aus folgendem Grund nur die halbe Miete.

Nach einer richtigen Keycodeeingabe werden die Informationen (Name , Key) in der Datei C:\windows\windows.ini abgespeichert. Jedoch wird nicht die Information das Goldwave erfolgreich registriert wurde gespeichert, sondern nur der Name und  Key, der eingegeben wurde.

Also prüft eine andere Goldwave Algorithmusroutine bei jedem Start von Goldwave, ob der Name mit dem Key passt. Daher wäre es unsinnig, das Programm (die Registrierungscodeeingaberoutine) so zu cracken , dass auch bei falscher Key Eingabe das Programm freigeschaltet wird. So wäre es nur möglich die Goldwave Registriercoderoutine im Programmstart so zu verändern, so dass der Algorithmus auch bei nicht zusammenpassen vom Name und Key das Programm freischaltet .

 

 

Teil III: Crackengine

 

Da wir nun so mühlevoll das Programm manipuliert haben, unterscheiden sich nun einige Programmstellen von der Original Datei (GOLDWAVE.EXE). So wäre es doch hilfreich, wenn man ein kleines Programm (Tool) hätte, das die Originaldatei automatisch verändern würde (cracken). Und genau hier kommt Turbo Pascal erstmals hilfreich zum Einsatz. Doch zuvor benötigen wir die genauen Unterschiede zwischen der Original Datei, und der von uns gecrackten. Dazu gibt es einen von Microsoft ins Betriebssystem integrierten Befehl namens File Comparer, mit dem man Dateien vergleichen kann.

Um unsere zwei Dateien binär zu vergleichen, geben wir folgendes in die Eingabeaufforderung.

 

FC /b goldwave.exe goldcra.exe                     

 

Nach der Eingabe werden folgende Unterschiede in Hex-dec aufgelistet.

 

 

Offset Adresse

Alter Wert

Neuer Wert

0005AD19

E8

90

0005AD1A

D2

90

0005AD1B

FE

90

0005AD1C

FF

90

0005AD1D

FF

90

0005AD74

E8

90

0005AD75

3B

90

0005AD76

4B

90

0005AD77

FE

90

0005AD78

FF

90

 

Da wir nun die genauen Unterschiede zwischen den Dateien kennen, können wir diese in Form von Hex Werten  in das Turbo Pascal „Crackprogramm“ einbauen, das später die Originaldatei nach den programmierten Hex Werten automatisch verändert.

 

 

Dazu hier noch als letztes der Pascalcode:

 

Program MNCRACKENGINE_1_10;

 

Uses CRT, DOS;

 

Const

      FileN         : String  = 'GOLDWAVE.EXE';

      BytesToChange : Integer = 10;   { Hier die Anzahl der Veränderungen }

 

      FileS         : LongInt = 1388544;  { Hier die Dateigröße eintragen }

      A             : Array[1..10] of Record

                      {Hier die Anzahl der Veränderungen }

 

                                      A : Longint;

                                      B : Byte;

                                     End =

((A:$5ad19;B:$90)     {Hier Offsetwerte und die entsprechende Veränderung}

,(A:$5ad1a;B:$90)

,(A:$5ad1b;B:$90)

,(A:$5ad1c;B:$90)

,(A:$5ad1d;B:$90)

,(A:$5ad74;B:$90)

,(A:$5ad75;B:$90)

,(A:$5ad76;B:$90)

,(A:$5ad77;B:$90)

,(A:$5ad78;B:$90));

 

 

Var

  F     : File;

  Ch    : Char;

  Attr  : Word;

  I     : LongInt;

 

Begin

 

  clrscr;

  writeln('Bitte Enter drcken, um die Datei Goldwave.exe zu cracken!');

  readln;

 

 

  If (FSearch(FileN,FExpand(FileN))='') then

     begin

     Writeln('ERROR: Datei ',FileN,'nicht gefunden!');

     Writeln;

     Writeln('Crack abgebrochen...');

      Writeln;

 

 

     Halt(1);

  end;

  Assign(F,FileN);

  Reset(F,1);

  Write('Teste Version...');

  If FileSize(F)<>FileS then

     begin

     TextColor(44);

     Writeln('ERROR!');

     TextColor(07);

     Writeln;

     Writeln('Datie ',FileN,' Falsche Verison!');

     Writeln;

     Writeln('Crack abgebrochen...');

      Writeln;

 

 

     Close(F);

     Halt(1);

     end

     else

     begin

     Writeln('OK');

  end;

  Write('Cracke ',FileN,'...');

  For I := 1 to BytesToChange do

     begin

     Seek(F,A[I].A);

     Ch:=Char(A[I].B);

     Blockwrite(F,Ch,1);

  end;

  Writeln('OK');

  Close(F);

  Writeln;

  Writeln('Datei ',FileN,' wurde erfolgreich gecracket...');

  Writeln;

 

 

end.

 

 

 

 

 

 

 

Teil IV : Kopierschutz bei Spielen

 

 

Dies ist nur ein kleiner Einblick in die Welt des Krackens mit der Maschinensprache.

Daher gibt es noch viele andere Möglichkeiten wie eine Software geschützt sein könnte.

Z.B. wurde von der Computerspiele Industrie eine Kopierschutz entwickelt, der das Spielen von gebrannten CDs ohne weiteres nicht möglich macht. Dieser funktioniert wie folgt.

Die original CD wird absichtlich in der Fabrik mit einigen Fehlern hergestellt. Dabei gibt es verschieden Möglichkeiten, wie solche Fehler aussehen können. Daher beschriebt ich die verbreiteste Variante. Durch die fehlerhaft hergestellte Original CD, gibt es einen Unterschied zwischen der FAT (TOC), und der in Wirklichkeit physisch vorhandenen Daten auf der CD.

Das heißt, dass in der Dateieinzuordnungstabelle (FAT), die angibt an welcher Stelle eine Datei anfängt und aufhört, fehlerhaft Eintragungen vorhanden sind. Durch diese fehlerhaften Einträge werden dem Computer Dateien vorgetäuscht, die physisch auf der CD nicht vorhanden sind. Genau dieses nutzt der Kopierschutz aus.

Eine Routine vergleicht beim Starten des Spieles die FAT (TOC) mit den tatsächlich vorhanden Dateien auf der CD. Stellt die Routine ein Unterschied fest, so wird die CD als Original CD identifiziert und somit das Spiel gestartet. Da man jedoch nur sehr schwer von einer Original CD eine 100%ige  1:1 Kopie brennen kann (inklusive Fehlern), erkennt die Kopierschutzroutine bei einer gebrannten CD keinen Unterschied zwischen der FAT (TOC) und den reell vorhanden Daten. Somit identifiziert die Kopierschutzroutine die CD als „nicht original“ und bricht den Spielstart mit Meldungen wie „ Bitte original CD einlegen“ ab.

 

Daher hier ein kleiner Auszug einer Kopierschutzroutine in ASM:

 

Referenced by a CALL at Address:

 

:0045BBB0 E8CBFEFFFF        call 0045BA80

:0045BBB5 803800            cmp byte ptr [eax], 00 Vergleich FAT

:0045BBB8 750F                   jne 0045BBC9 Wenn Unterschied springe => lade Spiel

 

* Possible StringData ReF from Data Obj  ->”Bitte original CD       einlegen”

 

:0045BBBA 685C014800        push 0048015C

 

.

.

.

usw.

        

Um den Kopierschutz zu umgehen, wäre es möglich den die Jump Bedingung zu verändern, so dass gesprungen wird (bzw. das Spiel geladen wird), auch wenn kein Unterschied vorhaden ist. Dies ist z.B. bei einer gebrannten CD der Fall. Daher könnte man den „jump if not equal“ in einen unbedingten Sprung umwandeln.

Das heißt:

 

:0045BBB8 750F                   jne 0045BBC9

¯                                                                                         ¯

:0045BBB8 EB0F                   jmp 0045BBC9

 

Jetzt wird unabhängig von der vorherigen Bedingung gesprungen. Also auch bei einer gebrannten CD.

 

Dazu hier einen kleinen Einblick in die verschiedenen Jump Befehle.

 

Hex:          Asm:      Bedeutung:

 

75 or 0F85    jne       jump if not equal

74 or 0F84    je        jump if equal

EB            jmp       jump directly to

77 or 0F87    ja        jump if above

0F86          jna       jump if not above

0F83          jae       jump if above or equal

0F82          jnae      jump if not above or equal

0F82          jb        jump if below

0F83          jnb       jump if not below

0F86          jbe       jump if below or equal

0F87          jnbe      jump if not below or equal

0F8F          jg        jump if greater

0F8E          jng       jump if not greater

0F8D          jge       jump if greater or equal

0F8C          jnge      jump if not greater or equal

0F8C          jl        jump if less

0F8D          jnl       jump if not less

0F8E          jle       jump if less or equal

0F8F          jnle      jump if not less or equal

 

 

Diese Kopierschutzmethode wird heute fast bei allen gängigen PC-CD Spielen eingesetzt.

Jedoch erschweren die Spielerprogrammierer, gerade bei neueren Spielen, dem Cracker die arbeit oft, indem sie in die Kopierschutzroutine unnützliche, überflüssige Algorithmen einbauen um den Cracker zu verwirren. So verwenden sie auch häufig eine codierte Kopierschutzroutine, die das Cracken erheblich erschwert.   

Auch die SONY Playstaion arbeitet nach diesem Kopierschutzprinzip. Da man jedoch Playstaion Spiele schlecht mit dem PC disassemblieren kann, gibt es keine Möglichkeit die Software zu verändern. Daher beleibt nur noch die Möglichkeit ein Austausch des Playstaion BIOS vorzunehmen, was allerdings illegal wäre.   

 

OK;

Das war's - mir tut jetzt zwar der Rücken (eigentlich der ganz Körper inklusive Weichteile)

weh, jedoch hoffe ich, dass die mit den Händen eingetippten  23,7 KB  gut verständlich

waren und ich wieder mal die Welt vor dem Unheil der Menschen und des Universums gerettet habe.

 

So, und da nun die Batterien meiner selbsturinierenden Puppe leer sind, gehe ich zum

nächsten Zigarettenautomaten um an diesem zu versuchen eine Fernsehzeitschrift zu kaufen und um mich immer wieder auf ein Neues zu wundern, warum die Polizei kommt um mich abzuführen, obwohl mein Radio schon seit zwei Monaten kaputt ist. Was für eine verrückte Welt?

 

 

Written by Venil (Michael the N*****.) Farlaub                                              November 1999               

 

Bitte Kritik, Anregungen (auch heterosexuelle) und Vorschläge bitte an venil@sismusic.de  

Bitte besucht die beste Seite des Universums in dieser Dimension im Netz :

 

http://www.sismusic.de 

 

(hier das die Cracks und ehmdehehmah ha!)

 

 

 

PS:

 

mögliche Syntaxfehler im gesamten Text zerstören sich

mit dem Befehl "Ripuli - Helsinki is hell"  bzw. "Windows 95/98/2000" durch

Rückwärtssprechen in die Spracheingabe anhand eines RuntimeErrors selber.

( Noch mehr Schwachsinn unter www.sismusic.de )

 

 

Credits:

 

Maestro, fRACTUs`99  maestro.hacks@gmx.net

shadowRUNNER shadow.RUNNER@bigfoot.com

The NT Master of the Universe Markus.Strohmeyer@t-online.de

 

Remember:

 

(N)ever taking drugs to hide - your life will shine with crack love more bright

(by FaRLAuB)

 

 

 

Punk sei Dank - Rap ist krank

 

End Of File