Softice Toturial zu  WinXFiles 3.9 von www.pepsoft.com by WAHNS [GCK]


1. Einleitung
2. Was wird gebraucht und wo bekommeich es her
3. Einfhrung  und Konfiguration von Sice
4. Wie cracke ich WinxFiles
5. Wichtige Breaks 
6. Nachwort



1.Einfhrung

So alle meine Crackernewbi  , warum gerade WinXFiles ?? Tja gute Frage , wer benutzt schon Software von Pepsoft *g* - Ich jedenfalls nicht . Ein netter Mensch , (hoffe ich jedenfalls ) hat ins GCK Forum geschrieben das er sich wohl um die Pepsoft Software "gekmmert" hat,und ist auf Win-X-Files 3.9 gestoen .
Aber zu seinem rger lie sich das dumme Proggie nicht nach dem berhmten Toturial ber Pepsoft Proggies cracken. (mir fllt im Moment nicht mehr der Autor ein) na ja also hat er die GCK darum gebeten sich der Sache mal an zu  nehmen und ihm Hinterher zu sagen wie es funzt . Mhh ich habs mal probiert  ,und zwar mit Softice , 
das mach im allgemeinen immer so , das lange dissambeln geht mir nmlich auf den Sack.
Also das Programm gestartet Name und dummy Code rein , und siehe da pat natrlich nicht(*G*)
Aber jetzt sah ich auch schon das Prob , es gab keine Messagebox sondern nur nen Bild , wo stand dummer Cracker  probiers nochmal (Frei bersetzt *g*) .
So die folgende Methode funzt gut , mu aber sagen , die gerippte Serial funzt nur am Erstellungsdatum .



2.Was wird gebraucht und wo bekomme ichs her

1. Softice  Von  http://w3.to/protools/
2. Win-X-file 3.9 von www.pepsoft.de
3. Zettel und Stift gibs nicht dort , vielleicht beim Aldi *g* 
4. Ein bissel Zeit , (dauert echt nicht lange)

 3.Wie cracke ich Win-x-Files

Also dazu sei gesagt geh ich immer nach Schema F vor , das funzt nmlich so gut wie immer:
Also Programm starten , in die Registrieraufforderung rein , Name und DummyCode eingeben
Bei mir ist das WAHNS - falls der zu kurz ist , (wie in diesem Fall :WAHNSINNIG)
Und als Dummycode 112233 , wieso ??? weil er sehr leicht in hex zu finden ist :31 31 32 32 33 33
Ich wei nicht in welchem Toturial ich das gelesen habe aber der Cracker hatte recht.
So , aber was jetzt - natrlich Softice mu ran , ich hoffe es luft schon , ansonsten , 
machen wir jetzt erstmal ne Pause und warten auf alle die die es vergessen haben zu laden.
Wart, wart , wart , ja seit ihr wieder da dann kanns ja weiter gehen. Starten wir Sice mit 
STRG+D. Zack , und drin , ahh so ein rger wenn ich in Sice bin kann ich ja gar nicht das Toturial weiter lesen , 
also noch mal schnell mit F5 , X und dann Enter oder STRG+D wieder raus aus Sice Drucker anwerfen und 
drucken . Und wieder warten auf die Nachzgler , fertig gedruckt ??? Dann geht's weiter , wieder in Softice rein 
(mit STRG+D) und einen Breakpoint setzen ,(jaja was ist ein Breakboint , mhh mir bleibt auch nix ersparrt)

Ein Breakpoint ist eine Markierung die ihr ins Programm setzt damit das Programm an der Stelle anhlt wo wir es gerne httet.Also ein Stopschild fr euer Softice . Man kann  direkt an einer Adresse breaken , aber wie bekomme ich raus wo die richtige Stelle ist ??? Also keine Gute Idee ,aber obwohl alle so auf Microsoft schimpfen  , sie haben uns da viel Arbeit abgenommen , die sagenannten Apis - das sind unsere Wegweiser durchs Proggie , es sind in englisch geschriebene Marken , die sagen was an der stelle des Programms gerade los ist , und da genau die richtige zu finden ist des Crackers meistes Problem . Also mach ich es mir leicht und nehme (fast ) immer hmemcpy . Hmemcpy  passt  zu 99.9 Prozent. Zuviel versprochen , bei Map&Guide 5 Demoversion ging er nicht , aber egal nicht vom Thema abschweifen ,  weiter im Text :

Ich habe also meine kompletten Daten inclusive DummyCode eingegeben ,  in Softice bin ich jetzt auch und gebe hier nun meinen Breakpoint ein : bpx hmemcpy , besttigen , und mit F5 softice verlassen.

Kurze Pause um die verschiedenen Befehle in Sice zu erklren:
Also um es gleich zu sagen , @ngelkiller hat sich soviel Mhe gegeben um uns Softice zu erklren , 
und ich schreib mir nun auch nicht so gerne die Finger wund ,also hab ich den nachfolgenden Text von ihm einfach mal ausgeliehen :

Die wichtigsten Befehle sind die Breakpoint-Befehle:

BPM [Adresse]	setzt einen Breakpoint auf EINE bestimmte Speicher Adresse, aber
		vorsicht ihr knnt hiervon nur 4 Stck setzen, dafr merkt das Programm
		,welches ihr cracken wollt, aber nicht, da ihr einen Breakpoint auf
		diese Adresse gesetzt habt.
		Ihr knnt hier die Parameter R und W anhngen. Sie stehen fr Read und
		Write. Damit knnt ihr festlegen ob der Breakpoint ausgelst wird, wenn
		von der Adresse gelesen oder an die Adresse geschrieben wird. Es geht
		auch beides gleichzeitig angeben, also RW. Gebt ihr nichts an ist W die
		Default-Einstellung.

BPR Von Bis	setzt einen Breakpoint auf einen Speicherbereich, Ihr knnt hiervon
		beliebig viele setzen, dafr kann ein Programm feststellen, da ein
		solcher Breakpoint gesetzt wurde.
		Auch hier knnen R und W angegeben werden.

BPIO IOAddr	setzt einen Breakpoint auf eine Bestimmte I/O-Adresse, dies ist
		ganz ntzlich fr Dongle-Cracking, da die meisten Dongles auf einer
		Drucker-	Schnittstelle aufgesteckt werden mssen kann hier gut
		einen BPIO 378 RW setzen. (Dieser BP wird ausgelst, wenn von
		LPT1 gelesen oder auf LPT1 geschrieben wird.)
		Auch hier knnen R und W angegeben werden.

BPINT interrupt	setzt einen Breakpoint auf Interrupts. Ist fr Windows-
		Anwendungen nicht so wichtig, da in Windows Interrupts
		deaktiviert sind. Fr DOS-Programme ganz praktisch, da diese
		meist auf Interrupts zurckgreifen.
		Hier kann als Erweiterung mit IF eine weitere Bedingung angegeben
		werden. Zum Beispiel wird "BPINT 21 IF AH==9" ausgelst wenn der
		Interrupt 21 mit der Funktion 9 aufgerufen wird
		(INT 21 AH=9 - Display Text on Screen at actual Cursor Position)
		Fr DOS Programme schlage ich vor, da ihr euch Ralph Brown's
		Interrupt-Liste besorgt, in welcher jede einzelne Funktion jedes einzelnen
		Interrupts beschrieben ist, auch Software-bezogene Interrupts.

BPX Adresse	setzt einen Breakpoint auf eine bestimmte Speicher-Adresse, der
		ausgelst wird wenn der Befehl an dieser Adresse ausgefhrt wird.
		Anstatt einer konkreten Adresse knnt ihr auch eine Function angeben,
		die in einer der Exports enthalten sein muss

		Beispiele:

		BPX 42E384 wird ausgelst wenn der Befehl, der an Position 42E384
		beginnt ausgefhrt wird.

		BPX HMEMCPY wird ausgelst wenn die Function HMEMCPY
		ausgefhrt wird.

		BPX MSVBVM50!__VBAStrCmp wird ausgelst wenn die Function
		__VBAStrCmp aus dem Export MSVBVM50 aufgerufen wird

BD BPNr	Deaktiviert den Breakpoint BPNr. "BP *" deaktiviert alle Breakpoints

BL		Listet alle gesetzten Breakpoints auf

BE BPNr		Aktiviert den Breakpoint BPNr. "BE *" aktiviert alle Breakpoints

BC BPNr		Lscht den Breakpoint BPNr. "BC *" lscht alle Breakpoints

Dann kommen Standard-Befehle:

D Adresse	zeigt im Display-Window den Speicher Inhalt ab Adresse an

E Adresse	man kann im Display-Window den Speicher ab Adresse ndern

? Hex-Wert	wandelt einen Hex-Wert von maximal 4  Byte lnge in Dezimal um,
		oder fhrt Rechen-Operationen durch, wie zum Beispiel +, -, * und /
		und zeigt das Ergebnis an

S		durchsucht den Speicher nach einem bestimmten Inhalt, und wird so
		aufgerufen: S Anfang L Ende Inhalt. S 400000 L 500000 'Thank you for'
		sucht von Adresse 400000 bis 500000 nach dem String 'Thank you for'
		"S 400000 L 500000 31,32,33,34,35,36" sucht von Adresse 400000 bis
		500000 nach der Hex-Folge 31,32,33,34,35,36.
So hier @ngekillers Text und von mir folgen noch ein paar Ergnzungen :

STRG+D              Starten von Softice 

F5                          Weiter laufen des Programms , und zwar solange bis der nchste eventuell vorhandene
                              Breakpoint kommt. 

F10                        mit F10 wird gtracet , tracen heit nix anderes als den Code Zeile fr Zeile abzuarbeiten.

F8                           anders als mit F10 bercksichtigt F8 auch Calls  , Calls sind vom Programm aufgerufene 
                               Unterroutinen , die fr uns sehr wichtig sind , da wie auch bei Win-X-Files meistens die 
                               Berechnungsroutine fr unsere Serial liegt

F12                          um aus so einem Call wieder raus zu kommen traced ihr ihn entweder bis zum Ende, oder  
                                drckt F12 wenn euch der Inhalt nicht sonderlich interessiert

F6                            Mit F6 landet ich in dem Codeteil von sice , hier knnt ihr ohne zu tracen  ,sondern nur um 
                                zu gucken was schon passiert ist,  und oder was passieren wird , abzuchecken.

F9                            Auerdem knnt ihr direkt mit F9 nen Break auf  direkt auf die die Zeile im Programm 
                                setzen die euch interessiert.

So genug Theorie , lets the Crack go on. 
Nur zur Erinnerung: Ich habe also meine kompletten Daten inclusive DummyCode eingegeben ,  in Softice bin ich jetzt auch und gebe hier nun meinen Breakpoint ein : bpx hmemcpy , besttigen , und mit F5 softice verlassen
Ich drcke jetzt den OK Button und Zack Softice meldet sich wieder , und wie soll auch nicht anders sein , 
bei hmemcpy.  Aber was nun , sieht ja gar nicht aus wie mein Proggie , da steht ja nirgens was von WinXfiles , mhh klar , denn ich bin in einem Call von WinXfile also was machen ??? 
Erstmal mit F5 solange drcken bis das Bild erscheint , das uns so rgert (dummer Cracker  probiers nochmal)
Bei mir waren das 13 mal F5 - ganz schn langweilig , aber hmemcpy , springt halt immer an wenn irgendwas verglichen wird - der einzige Nachteil im Gegensatz zu anderen Breaks wie Getwindowtexta oder so - aber der Cracker hats bekanntlicherweise nie leicht . 

Gut , aber einen ein F5 vor der Message sollte da doch irgendwo die Abfrage sein , die nachfragt ob die Serial richtig ist oder nicht ??? oder ??? Ja und so ist es auch , unsere Daten neu eintragen .(so ein Shit hmemcpy vergessen , Softice meldet sich wieder *G* - also flux bd * eingeben und alle Breakpoints sind deaktiviert)
Unsere Daten zu Ende eingeben , mit STRG+D wieder in sice rein , be * eingeben , und hmemcpy ist wieder aktiv. Mit F5 wieder raus , OK drcken und schwupps sind wir wieder in Sice drin.
So 12 mal F5 warens bei mir , und beim 13ten gabs die Message , also 12x F5 , sieht immer noch nicht nach win-X-files aus , mit F12 raus und zwar solange bis wir bei winxfile angekommen sind , an den ganzen Kernel und User aufrufen vorbei (steht direkt ber der Eingabe) und wir landen im winxfiles Code.
Na Klasse endlich angekommen , tracen wir mit F10 durchs Programm , doch nur ein paar Zeilen weiter finden 
Wir ein ret mhh , was ist das , es steht einfach nur fr return , also zurck , und wohin ???
Zum Call der aufgerufen wurde . Was hab ich nochmal ber den einen Call geschrieben??? Ah ja ein Aufruf , der eine Unterroutine aufruft . Mhh , wir haben hier 2 Mglichkeiten , tracen mit F10 oder mit F12 raus , (so interessant sieht das hier nmlich nicht aus) also mal gucken - ich trace lieber  .
So und Zack ich lande in einem anderen Code Teil von winxfile , da steht ja nach ein paar Zeilen schon wieder ein ret , naja , mit F12 raus  , und schon wieder ??? , um es kurz zu machen  ,solange F12 drcken bis ihr hier her kommt:


:0047017F 8B85D4FBFFFF            mov eax, dword ptr [ebp+FFFFFBD4] 

Hier bin ich gelandet 
                                                                    :00470185 50                      push eax
:00470186 8D85D8FBFFFF            lea eax, dword ptr [ebp+FFFFFBD8]
:0047018C 8D95F8FDFFFF            lea edx, dword ptr [ebp+FFFFFDF8]
:00470192 E83D36F9FF              call 004037D4
:00470197 8B95D8FBFFFF            mov edx, dword ptr [ebp+FFFFFBD8]

ein d edx und siehe da  , das sieht doch verdammt nach der richtigen Serial aus

:0047019D 58                      pop eax
:0047019E E89537F9FF              call 00403938

sieht sehr interessant aus ein Call gefolgt von nem Jump
knnte das nicht die Abfrage sein, die sagt:guter Cracker , bser Cracker ??? , und ja sie ist es *g*


:004701A3 753B                    jne 004701E0
:004701A5 8B45FC                  mov eax, dword ptr [ebp-04]
:004701A8 E883030000              call 00470530
:004701AD 8B0D2CA64700            mov ecx, dword ptr [0047A62C]
:004701B3 B201                    mov dl, 01
:004701B5 B824F94600              mov eax, 0046F924
:004701BA E8512EFBFF              call 00423010
:004701BF E87C5AFBFF              call 00425C40
:004701C4 A1E4A74700              mov eax, dword ptr [0047A7E4]
:004701C9 8B80B4010000            mov eax, dword ptr [eax+000001B4]
:004701CF 33D2                    xor edx, edx
:004701D1 E8D6FDFBFF              call 0042FFAC
:004701D6 8B45FC                  mov eax, dword ptr [ebp-04]
:004701D9 E85E58FBFF              call 00425A3C
:004701DE EB27                    jmp 00470207


Ist ja Klasse , aber was macht das Programm in dem Call ???
Also schnell mal rein mit F8:

:00403938 53                      push ebx        hier haut er die
:00403939 56                      push esi        Register in den Speicher
:0040393A 57                      push edi
:0040393B 89C6                    mov esi, eax    hier wird esi mit eax 
:0040393D 89D7                    mov edi, edx    aufgefllt  
:0040393F 39D0                    cmp eax, edx    und hier werden 2 

Register Verglichen d eax sagt uns unsere Serial , 
d edx eine lange Zeile mit Buchstaben , mhhh 
warum vergleicht er meine Serial mit so einem Mist ???
Ahh alles klar , knnte es sein das das die Richtige serial ist ???
Jepp sie ist es !!!!!!!
Juhu !!!!!!!!!!! 

:00403941 0F848F000000            je 004039D6
mhh wenn das die richtige ist  , dann ist das sicher der Sprung der entscheidet guter Code bser Code .

:00403947 85F6                    test esi, esi
:00403949 7468                    je 004039B3
:0040394B 85FF                    test edi, edi
:0040394D 746B                    je 004039BA
:0040394F 8B46FC                  mov eax, dword ptr [esi-04]
:00403952 8B57FC                  mov edx, dword ptr [edi-04]
:00403955 29D0                    sub eax, edx
:00403957 7702                    ja 0040395B
:00403959 01C2                    add edx, eax

so die Serial  aufgeschrieben , mit bc * alle Breakpoints lschen , F5 gedrckt die serial eingetippt , und Klasse , 
guter Cracker sagt das Proggie *g*

Wichtige Breaks :
Und da ich mal wieder Faul bin , hab ich hier ne Liste von Viper -BJK
Eingefgt:

Info : Ist z.B. GetSystemDirectoryA geht auch GetSystemDirectoryW

(A od. W bez. 32-Bit Programme)

Breakpointen mit "bpx"

Ein- und Ausgabe von Dateien

Ein- und Ausgabe von binren Dateien :

ReadFile

WriteFile

Andere Pointer :

SetFilePointer

GetSystemDirectory

GetSystemDirectoryA

Ini oder hnliche Dateien (z.B. Reg) auslesen :

16-Bit Anw.

GetPrivateProfileString

GetPrivateProfileInt

WritePrivateProfileString

WritePrivateProfileInt

32-Bit Anw.

GetPrivateProfileStringA

GetPrivateProfileIntA

WritePrivateProfileStringA

WritePrivateProfileIntA

Interupt Info :

bpint 21 falls (ah==3d)

bpint 2f falls (ah==01)

Die Windowsregistrierung :

Einfgen oder Lschen von Schlsseln :

RegCreateKey

RegDeleteKey

RegCreateKeyA

RegDeleteKeyA

RegQueryValue

RegQueryValueA

ffnen oder Schliessen von Schlsseln :

RegCloseKey

RegOpenKey

RegCloseKeyA

RegOpenKeyA

Weitere Ein- und Ausgaben mit : EXP GETPRIVATEPROFILE

Dialogboxen

Erfassen von Text oder Ziffern in Dialogboxen :

GetWindowText

GetDlgItemText

GetDlgItemInt

GetWindowTextA

GetDlgItemTextA

GetWindowTextW

GetDlgItemTextW

Dialogbox ffnen :

MessageBox

MessageBoxA

MessageBoxW

MessageBoxExA

MessageBoxExW

MessageBeep

Andere Wege :

Sendmessage

SendmessageA

_WSPRINTF

 

Zeit & Datum

GetSystemTime

GetLocalTime

SystemTimeToFileTime

 

Erstellen eines Fensters

Bitblt

(hnlich HMEMCPY)

 

Nummerische Fenstereingaben

GetWindowWord

GetWindowLong

Andere Breakpointe

BOZOSLIVEHERE

HMEMCPY

GLOBALGETATOMNAME

 

 

 

 

 

 

CD-ROM Zugriffe

GetDriveType (falls EAX=5 dann ist es eine CD-ROM berprfung)

GetDriveTypeA

Return Codes :

Laufwerk kann nicht definiert werden 
Hauptverzeichnis existiert nicht 
Removable Laufwerk 
Festplatte 
Netzwerk 
CD-ROM Laufwerk 
RamDisk
GetLogicalDrives

GetLogicalDrivesA

GetLogicalDrivesStrings

GetLogicalDrivesStringsA

Andere CD-ROM Information

Interupt 2F ist der MSCDEX Interupt

 bpint 2f, al=0 ah=15 berprft ob MSCDEX installiert ist

Messagebreaks

Herausfinden des Messagebox mit "hwnd"

BMSG xxxx WM_Gettext (gut fr Passwrter)

BMSG xxxx WM_COMMAND (gut fr OK Buttons)

Serials bei MSVCRT :

_mbscmp

_mbscmpi

Serials bei Visual Basic 5 herausfinden :

bpx hmemcpy

(Im Registrierfenster OK drcken)

bpx 0030:0F79B348 (Ergebnisse des Vergleichs stehen im ESI oder EDI !!)

oder falls dies nicht geht :

s 0 l fffffffff 56,57,8b,7c,24,10,8b,74,24,0c,8b,4c,24,14

und alle Treffer bpx

Serials bei Delphi Programmen :

Suche in der EXE-Datei nach einem Button der die Registrierung ausfhrt.

Nach dem Buttontext (Caption) steht spter Onclick und gleich danach der

Pointer (z.B. Okbttnclick).

Suche nach dem Pointer.

Vor dem Pointer steht der Code den man bpx muss.

Z.B. 69 88 43 00 (OKBTTNCLICK HEXCODE)

Symbollader starten, Programm laden und beim Ersten bpx eingeben :


Nachwort : 

Dieses Proggie war ziehmlich einfach . Eventuell schreib ich irgendwann noch nen Text wie ihr es Cracken knnt so das ihr gar keine Nummer mehr braucht. Ich pack jetzt noch meine Winice.dat dazu  , damit auch alles klappt.
So ich hab jetzt auch keinen Bock mehr  , wenn irgend jemand was damit anfangen kann , kann er ja seine
Meinung bei DER-WAHNS@gmx.de abgeben , fr Fragen und Anregungen , ebenfalls diese E-Mail benutzen.
Ansonsten Gr ich natrlich @ngelkiller , Viper , JFK , Cyberdemon_99 , The Unvisible , Skunk , Haribo , N!P , PerryX, mOOdify , Scorpion , _7oke , bLaCk-nITe , DaPhreak , BumBum_Killa , WebToaster , Agent Data,eRaSeR , thE rZA , Venator ,  Underground , GGC , DCH , alle Cracking Groups dieser Erde , und natrlich alle die mich kennen und dich ich eventuell vergessen habe !!!



