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 :
(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