FiReAnGeL [EViDENCE] Cracking Tutorial #2 (GERMAN)
==================================================
(1) Vorwort
(2) Ben÷tigte Programme
(3) Patchen des Crackmes
(4) Serial sniffen des Crackmes
(5) Einen Keygen coden
(6) Schlusswort
(7) Grⁿ▀e
[1 - Vorwort]
-------------
Hallo allezusammen. Mein Name ist FiReAnGeL und ich bin Member der !!!neuen!!! EViDENCE.
Ich m÷chte euch heute zeigen wie man fⁿr r0m4n's Crackme 1 eine Serial fⁿr seinen Namen snifft
und es so patcht das es jede Serial annimmt. Es ist zwar schon ein bischen alt, aber ich fand
es gerade auf mein Festplatte gefunden.
[2 - Ben÷tigte Programme]
-------------------------
- NuMega SoftIce 4.xx (http://protools.cjb.net)
- W32Dasm 8.93 (http://protools.cjb.net)
- Hexeditor (http://protools.cjb.net)
- r0m4n's Crackme 1 (http://crackmes.cjb.net)
- Irgendein Compiler
[3 - Patchen des Crackmes]
--------------------------
Wenn ihr das Crackme runtergeladen habt und es entpackt habt, macht ihr eine Kopie der *.EXE.
Dann starten mal W32Dasm und lasst die Kopie von crackme1.exe dissamblen.
WΣhrend dessen schauen wir uns das Crackme mal ein wenig an. Es hat ein Eingabefeld fⁿr den
Namen und eines fⁿr die Serial. Gebt dort mal irgendwas ein und ihr erhaltet die Meldung
"Incorrect!!!".
So, das reicht. Inzwischen mⁿsste auch WinDasm fertig sein. Nun ÷ffnet mal die "STRING DATA
REFERENCES" und sucht diese Meldung, wenn ihr sie gefunden habt macht ein doppelklick darauf
und ihr mⁿsstet an folgender Stelle sein:
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0042CE76(C)
|
* Possible StringData Ref from Code Obj ->"Incorrect!!!"
|
:0042CE8E B83CCF4200 mov eax, 0042CF3C // Hier steht ihr
:0042CE93 E824FCFFFF call 0042CABC
Wie ihr sehen k÷nnt wird unsere Meldung von einem JUMP bei der Adresse 0042CE76 aufgerufen.
Also gehen wir mal dort hin ⁿber GOTO --> GOTO CODE LOCATION --> ADDRESSE EINGEBEN, dann seit
ihr hier.
--- schnitt ---
:0042CE32 8BC3 mov eax, ebx
:0042CE34 8B08 moc ecx, dword ptr [eax]
:0042CE36 FF5118 call [ecx+18]
* Possible StringData Ref from Code Obj ->"420" // Sieht verdΣchtig aus, merken
|
:0042CE39 68C4CE4200 push 0042CEC4
:0042CE3E FF7308 push [ebx+08]
* Possible StringData Ref from Code Obj ->"C00l" // Sieht verdΣchtig aus, merken
:0042CE41 68D0CE4200 push 0042CED0
:0042CE46 B818F74200 mov eax, 0042F718
:0042CE4B BA03000000 mov edx. 00000003
:0042CE50 E82B6AFDFF call 00403880
:0042CE55 8D45FC lea eax, dword ptr [ebp-04]
:0042CE58 8B0D18F74200 mov ecx, dword ptr [0042F718]
* Possible StringData Ref from Code Obj ->"Rc1-" // Sieht verdΣchtig aus, merken
:0042CE5E 8B15C8E84200 mov edx, dword ptr [0042E8C8]
:0042CE64 E8A369FDFF call 0040380C
:0042CE69 8B55FC mov edx, dword ptr [ebp-04]
:0042CE6C A110F74200 mov eax, dword ptr [0042F710]
:0042CE71 E85A6AFDFF call 004038D0 // Der ist SpΣter wichtig
:0042CE76 7516 jne 0042CE8E // Bad boy
* Possible StringData Ref from Code Obj ->"Good work, Cracker!!!" // Erfolgsmeldung
:0042CE78 B8E0CE4200 mov eax, 0042CF00
:0042CE7D E83AFCFFFF call 0042CABC
* Possible StringData Ref from Code Obj ->"Send the tut/patcher/keygen to " // Erfolgsmeldung
"[email protected]"
:0042CE82 B800CF4200 mov eax, 0042CF00
--- schnitt---
Wie ihr seht, wird unsere Fehlermeldung von dem "JNE 0042CE8E, an Addresse 0042CE76" ausgel÷st.
Also ÷ffnet nun die Crackme1.exe im Hexeditor, geht an die Stelle des JNE und Σndert das 7516 in,
9090. Also ausnoppen. Dann speichert die ─nderung.
Nun startet das Crackme mal und versucht es zu reggen, und siehe da, es bringt immer die Erfolgs-
meldung.
Nun haben wir es gepatched. Wenn ihr noch ne Serial rippen wollt lest weiter.
[4 - Serial sniffen]
--------------------
So, ihr wollt also ne Serial. Dann schauen wir uns doch mal 9in der Umgebung des JNE 0042CE8E um.
:0042CE5E 8B15C8E84200 mov edx, dword ptr [0042E8C8]
:0042CE64 E8A369FDFF call 0040380C
:0042CE69 8B55FC mov edx, dword ptr [ebp-04]
:0042CE6C A110F74200 mov eax, dword ptr [0042F710]
:0042CE71 E85A6AFDFF call 004038D0 // Hier rein
:0042CE76 7516 jne 0042CE8E // Bad boy
Wir sehen ⁿber dem Jump ein call. Dort gehn wir mal rein und sehen folgenden ASM Code.
--- schnitt ---
:004038D0 53 push ebx // ebx wird auf den Stack gesichert
:004038D1 56 push esi // esi wird auf den Stack gesichert
:004038D2 57 push edi // edi wird auf den Stack gesichert
:004038D3 89c6 mov esi, eax // eax wird in esi kopiert
:004038D5 89D7 mov edi, edx // edx wird in edi kopiert
:004038D7 39D0 cmp eax, edx // eax wird mit edx verglichen
:004038D9 0F848F000000 je 0040396E // Wenn eax=edx dann Sprung
--- schnitt ---
Nun k÷nnt ihr raten was bei Adresse 004038D7 verglichen wird, richtig unsere Fake Serial mit der
richtigen. Merkt euch diese Adresse.
So, das reicht und um eine Serial zu rippen.
Startet euren Rechner mit Soft Ice neu (wenn ihr SI noch nicht geladen habt).
Nun startet eine noch nicht verΣnderte EXE des Crackmes und gebt euren Namen und eine Serial ein,
aber noch NICHT auf check klicken.
╓ffnet nun Soft Ice und setzt einen Breakpoint auf HMEMCPY. Dann verlasst SI wieder und drⁿckt auf
Check. Nun sollte SI aufpoppen. Drⁿckt nun einmal F5 und dann solange F12 bis ihr im richtigen Code
des Crackmes seid.
L÷scht nun den gesetzten breakpoint und setzt einen neuen auf das "cmp eax, edx". Drⁿckt nun F5.
Schaut euch dann mal die register an, wenn ihr auf dem CMP steht, mit d eax und d edx.
Nun mⁿsstet ihr einmal euren Fakecode sehn und einmal euren richtigen.
In meinem Fall:
NAME : FiReAnGeL
SERIAL: Rc1-420FiReAnGeLC00L
Nun sehen wir auch wieder unsere Hardgecodeten Strings aus WinDasm, das wΣren: Rc1-, 420, C00L
Daraus lΣsst sich schliesen dass jeweils nur der Name verΣndert wird, der rest schon Feststeht.
Nun k÷nnte man auch sehr leicht einen Keygen "bauen". Versucht es selbst, ansonsten lest weiter.
[5 - Keygen coden]
------------------
Da ihr seht das Die Serial so gut wie feststeht, nur der Namen wird immer geΣndert, ist es relativ
leicht einen Keygen zu Coden. Versucht es selbst, ist sau einfach. Ansonsten ist hier mein Source,
erstellt in Delphi 5.0.
---------- Start Delphi ----------
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
GroupBox1: TGroupBox;
Edit1: TEdit;
GroupBox2: TGroupBox;
Edit2: TEdit;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
var
name, a, b, c: String;
procedure TForm1.Button1Click(Sender: TObject);
begin
Name := edit1.Text;
a := ('Rc1-');
b := ('420');
c := ('C00L');
edit2.text := a + b + Name + c;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;
end.
---------- Ende ----------
Der Source ist vielleicht nicht der sch÷nste, erfⁿllt aber seinen Zweck.
[6 - Schlusswort]
-----------------
So, das war es auch schon. Mailt mir doch bitte, wie euch das Tutorial gefallen hat. Wenn ihr noch
Fragen habt, mail mir diese. Ich werde dann versuchen, diese so gut wie m÷glich zu beantworten.
[7 - Grⁿ▀e]
-----------
Groups: EViDENCE, Da Breaker Crew, refleXXion, Ebola Virus Crew, Natural Born Killers, CROSSFiRE,
iNTENSiON, LAXiTY, Underground Cracking Crew
Personen: Garuro, MacBain2k, Incredible Fighter, Yaan, vtec, viruz666, pHAT_tEQ, NUKEM, kab00m2k,
The FoX, Gravity-, Tojo, Milhouse, Cre@k, bYtEbReAkEr, L1quid, The_5TAR, BOT-CK, Hixxy,
PorTeX, Tschenzi, Daywalker, Helium, R2-C2, RaMSiX, Erazor, FiReStAr, Raven, ...
---------------------------------------
Autor : FiReAnGeL
Groups : EViDENCE, Natural Born Killers
E-Mail : [email protected]
Homepage: http://evidence.6x.to
http://nabocrk.cjb.net
Datum : 12.06.2001