			=============================
			PeeGees Cracking Tutorial #2
			=============================

So es ist mal wieder soweit...es gibt wieder ein tutorial von mir :) Ich hoffe das letzte
hat euch gefallen. Dieses tutorial handelt von gepackten programmen die nur schwer 
patchbar sind. Viele programme werden heutzutage schon gepackt...nur die programmierer
wiegen sich in falscher sicherheit wie mein tutorial zeigen wird :) Dieses tutorial richtet
sich nicht an unbedingt an anfnger da ich ein paar kenntnisse voraussetze :

 - SoftIce muss vorhanden sein
 - Rudimentre SoftIce kenntnisse
 - ein bisschen Assembler kenntnisse (naja eigentlich nicht so sehr :)
 - R!SC s Runtime Prpcess Patcher (dabei)

INFO
====

ZielProgramm : Official Execution 1999 Trial Crackme von DEATH
		- http://crackmes.cjb.net (sollte tutorial beiliegen)

Info zum Programm : Ich hab mir das ausgesucht weil ich im chat mit dem typen
		    geredet habe und er gesagt hat ich soll mal sein crackme
		    versuchen...die bedingung ist zwar ein win32 keygen aber 
		    wen interessiert das denn schon ? *g* in meinem tutorial wird
		    es darum gehen wie man einen einfachen Schutz umgehen kann mit
		    Hilfe eines sog. Memory Patchers ( auch loader gennant)

RPP V1.2 : Dies ist meiner meinung nach die grte innovation der letzten paar monate...
	   ProcDump 1.4 schn und gut aber mit diesem kleinem teufelswerkzeug kann man
	   jedes prog cracken (die betonung liegt auf "jedes"). Sei es nun gepackt oder
	   nicht. 

INFO zum RPP
============

Frage : Was ist der Runtime Process Patcher (RPP) ?

Antwort : Also erstmal grundlegendes. Dies ist eigentlich eine normale patch engine
	  bis auf die tatsache das sie nicht die festplatte (sprich exe datei) sondern
	  den speicher patcht !

Frage : Wie arbeitet der RPP ?

Antwort : genaueres steht in der readme.txt des rpp


START
=====

Nun, starten wir das Crackme mal. Aha 2 textboxen, Namen eingeben, Code eingeben.
Falsche Serial => programm beendet sich. Also keine panik. Das programm zu cracken
ist einfacher als viele denken da der programmierer nicht sauber gearbeitet hat :).

PACKEN WIR ES AN
================

Also erstmal nen BPX auf GetWindowTextA und GetDlgitemTexta setzen. Jetzt namen und
Serial eingeben und auf "Register" klicken. Ok wir sind in SICE. Jetzt Suchen wir mal die
KeyGen routine. vor der keygen routine kommt noch ein Namen-Lngen Check (nur als kleiner tip die lnge wird in ebx gespeichert). Die Keygen routine drfte ja wohl jeder gefunden haben einfach ein paar zeilen runter scrollen :). Jetzt Schauen wir uns mal diese zeilen an:

JNZ	004012xx
CMP	EDI, EBP-04
JNZ	004012xx
PUSH	00

Jetzt mal zur erklrung : JNZ 004012xx (1) :
		
		vor diesem JNZ is ein TEST	EBX, EBX, wir wissen das
		in EBX die lnge unseres Namens gespeichert. d.h. wenn ebx=0 dann
		verlsst er diesen loop. Am anfang der routine steht ein 
		DEC	EBX. DEC = Decrease (-1 einfach :). Nun dies drfte jetzt
		geklrt sein. Jetzt tippen wir mal BC* ein und legen einen BPX auf die
		relative Addresse von CMP	EDI, EBP-04.

CMP	EDI, EBP-04

		Der trick dieses Crackmes ist ziehmlich gewitzt, weil er anscheinend
		whrend er keygen routine noch die serial verschlsselt :) 

JNZ	003012xx

		Ok falls ihr beim vorherigen CMP die gleiche serial hattet ist das zero
		flag 0 falls nicht ist das zero flag gesetzt (=1). Da wir (hoffentlich) 
		nicht die richtige serial hatten ist das zero flag gesetzt und er wird 
		dort hin springen. ABER ! was sehen wir den unter dem code ??? 

		CALL	MessageBoxA

		was knnte das wohl sein ?? probieren wir es halt mal aus und ndern 
		dieses JNZ in ein NOP. Dies ndern wir indem wir "e" und die relative
		addresse eingeben (xxxx:xxxxxxxx) jetzt tippen wir 9090 ein (ich hoffe
		ihr wisst was das heist *g*) und schauen an was passiert :)
		also "bc *" (lscht alle breakpoints) und STRG+D oder F5. Was sehen 
		unsere augen den da ??? HEY wir knnen trial bei der Execution - Crew
		werden *g*. 

Der 2te Teil
============

Also ich hoffe ihr habt das vorherige "kapitel" verstanden falls nicht seid ihr einfach 
noch nicht gut genug (msst halt noch ein bisschen erfahrungen sammeln). So, wir haben
jetzt also den jump gefunden nur wie editieren wir den jetzt dauerhaft ??? Jetzt kommt 
der Runtime Process Patcher ins Spiel. Liest euch genau die Script commands durch damit
ihr wisst wie ihr damit umgehen sollt. Jetzt notieren wir uns die relative addresse
(aber nur der zweite teil, z.b. xxxx:40123232) des Jumps und die bytes (bei mir war das
40120C, die 00 davor knnt ihr weg lassen, die bytes sind 7514h). Jetzt noch die bytes
die geschrieben werden sollen (also 9090). 

Jetzt wollen wir aber endlich nen loader erstellen. Wie ihr jetzt hoffentlich inzwischen
wisst bentigt man fr den RPP ein sog. Script-file hier wre das Script fr das Crackme :

;======================CUT HERE========================
; PeeGees Script fr das Execution Crackme

T=1000:                 ; Anzahl der versuche die bytes zu finden bevor der loader 
                        ; aufgibt...

F=crackme.EXE:         ; datei zum patchen
P=40120C/75,14/90,90:    ; relative addresse/vorhandene bytes/zu ersetzende bytes
$
;=======================================================

Jetzt starten wir die datei rpp.exe und whlen unser script (crackme.rpp) aus. 
Jetzt erstellt der rpp eine datei mit dem namen loader.exe. diese kopieren wir
in unser crackme verzeichnis und fhren es aus. Es ladet nun die datei crackme.exe
und patcht die bytes. Ein kurzer test.....3.2.1 JA ES GEHT !

SCHLUSS
=======

Also ich hoffe ich habe euch ein bisschen geholfen und ihr nutzt diese neue mglichkeit
des crackens (mehr oder weniger neu). Sie hat die vorteile :

a.) Irgendwelche Consistency Checks (ala CuteFTP 3.xx) sind nutzlos
b.) Packen von programmen ist nutzlos
c.) Kleine Lamer knnen eure cracks nichtmehr klauen

Greets
======

fly out to : Slick^, ERaD, nitr8^, raider, the egoiste, zor, vtec, Yaan, WuSing,
	     andrenalin, russ97, R!SC, cosmo, da kurious child, waxweazel, [SNAp],
	     die ganze laxity crew, uct, pc, und 4110 crew und an alle die denken
	     das sie hier stehen sollten, oh Berserka fllt mir grad ein.

fuck you to: Hawk2000, texskyman, THE_WEB


cya und viel spass,

PeeGee