Lord MyStIc's CrAcKiNG tUtORiAls
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-

--------------

Short ASM Reference

--------------

Tools u need:
Nothing

--------------

Hi leutz!
Wenn Du wirklich ASM lernen willst, empfehle ich Dir Adam's ASM
Tutorial, das Du auf meiner Homepage http://lordmystic.cjb.net
bekommen kannst. Mein ASM-Tutorial (also das File, das du gerade
liest) ist nur eine kurze Zusammenfassung einiger (fr Cracker)
wichtiger Dinge - zumindest fr die Grundlagen...

--------------
**1**

Register

Register sind prinzipiell gesehen die Variabeln im ASM.
Sie lauten z.B. folgendermassen:
16 Bit  AX,  BX,  CX,  DX
32 Bit EAX, EBX, ECX, EDX
Ein Register setzt sich berigens aus Low & High
Registern zusammen:
AX = AH+AL
BX = BH+BL
Wobei H fr Hi und L fr Lo steht.
Wenn also AH=1 und AL=1 ist, so ist AX=11.

**2**

ASM-Befehle kurz Zusammengefasst:

ADD ???, ???
*Der zweite Wert wird zum ersten addiert.

CALL ????????
*Hier wird ein Unterprogramm aufgerufen.

CMP ???, ???
*Dieser Befehl vergleicht zwei Werte.

DIV ???, ???
*1. Wert dividiert durch den 2. Wert

JE ????????
*Jump if equal: Wenn eine bestimmte Bedingung erfllt ist,
*springt das Programm an die angegebene Stelle.
*  CMP EAX, EDX <- Wenn EAX = EDX
*  JE 00457ED9  <- Dann gehe zu 00457ED9

JNE ????????
*Jump if not equal: hnlich wie JE, nur darf die Bedingung
*nicht erfllt sein.

MOV ???, ???
*Der erstgenannte Register bernimmt den Wert des anderen
*Registers.
*  MOV EAX, EDX  <- EAX := EDX

PUSH ?? & POP ??
* Ein Wert wird dem Stack hinzugefgt (PUSH) oder abgenommen (POP).
* Doch was ist der Stack?
* Den Stack kannst Du dir als einen Turm aus Bierbchsen vorstellen.
* Mit PUSH wird eine Bchse oben draufgestellt, whrend mit POP die
* oberste Bchse wieder abgenommen wird.
* Beispiel:
* PUSH Hansa_Export
* PUSH Bitburger
* PUSH Hansa_Pils
* Jetzt hast Du einen Turm, der aus drei Bchsen besteht. Die unterste Bchse
* ist Hansa Export, die mittlere Bitburger und die oberste Hansa Pils.
* Wichtig ist jetzt beim POP-Befehl, dass der erste POP nicht die erste Bchse
* nimmt (der Turm wrde umfallen), sondern die letzte und damit oberste.
* POP Bier1
* POP Bier2
* POP Bier3
* Jetzt ist Bier1 = Hansa_Pils, Bier2 = Bitburger und Bier3 = Hansa_Export...
* Gut, gut, ich weiss - das ganze ist etwas kompliziert und vielleicht ist mein
* Bchsen-Vergleich nich so toll, wie ich dachte ;)... Lies dir hierzu am besten
* noch ein paar andere Tutorials durch!

RET
*Hiermit springt das Programm zum letzten CALL zurck, also
*das Unterprogramm beendet und ihm Hauptprogramm weitergearbeitet.

SUB ???, ???
*Der zweite Wert wird vom ersten subtrahiert.

**3**

Ein kleines Beispiel:

00000070 PUSH EBX         -> EBX wird in den Stack gelegt (Stack_1)	   
00000071 PUSH EAX	  -> EAX wird in den Stack gelegt (Stack_2)
00000072 PUSH ECX	  -> ECX wird in den Stack gelegt (Stack_3)
00000073 CALL 00000097    -> Aufruf der berprfung
.
.
.
00000097 POP ECX	  -> ECX = Stack_3
00000098 POP EDX	  -> EDX = Stack_2
00000099 POP EAX          -> EAX = Stack_1
00000100 ADD EDX, EAX     -> EDX + EAX (Wert zu Serial addieren)
00000101 CMP EDX, ECX     -> Vergleiche EDX mit ECX (richtige Serial 
                             mit Eingabe)
00000102 JE 00000200      -> Wenn EDX = ECX zu 00000200 springen
00000103 ...              -> Falsche Serial - Vorgang abbrechen
.
.
.
00000200 ...              -> Richtige Serial - Registrierung
                             abschliessen

Das Beispiel ist zwar stark vereinfacht (also keine typische 
Cracking-Situation ;) ), aber man kann ungefhr erkennen wie
alles abluft.
Wenn Du im oberen Beispiel die richtige Serial bekommen willst,
musst Du einfach berprfen, welcher Wert in EDX steht.
Fr den Fall, dass Du das Programm patchen willst (das es also
eine falsche Serial als richtig erkennt), musst Du den JE in
JNE umwandeln:

00000100 ADD EDX, EAX     -> EDX + EAX (Wert zu Serial addieren)
00000101 CMP EDX, ECX     -> Vergleiche EDX mit ECX (richtige Serial 
                             mit Eingabe)
00000102 JNE 00000200     -> Wenn EDX <> ECX zu 00000200 springen
00000103 ...              -> Richtige Serial - Vorgang abbrechen
.
.
.
00000200 ...              -> Falsche Serial - Registrierung
                             abschliessen

Mehr dazu in den nchsten Tutorials.

--------------

Ich hoffe, du hast das ganze Zeug verstanden ;) Dann besorg dir auch
meine anderen Tutorials :)
MyStIc

Kritik mag ich zwar nicht, aber wenn es sein muss:
lord-mystic@gmx.net ;)

VISIT MY HOMEPAGE:
lordmystic.cjb.net OR members.xoom.com/lord_mystic

--------------

Greetinx 2 following guyz:

H_Razor  |^RaZZiA^ |Sauron/Bruder S
Tiger_SP |CPire    |Caos
AzzyRiAN |ProfHAWK |All FFO members
Croc     |sort8
and all guyz I forgot ;)

Also greetinx 2 the following groups:

FiGHtInG fORcE
oDDiTy
Tristar & Redsector Inc.