DOOM - Tutorial: Grundwissen ber das Cracken von VB Programmen mit SoftIce


Programm: 	SoftIce v3.24
Beschreibung: 	Debugger
Firma: 		(c)199x Nu-Mega Technologies

Tool: - SoftIce
          
1. Warum mit SoftIce und nicht mit SmartCheck ???

   Das ist ganz einfach erklrt. Wir haben noch nicht mit SmartCheck gearbeitet und
   knnen somit auch keine Anleitung, fr das Debuggen bzw. Cracken damit, schreiben.
   Und da das Cracken von VB Programmen mit Disassemblern wie z.B. W32Dasm grtenteils
   nicht mglich ist, bleibt nur unser gutes SoftIce brig.
                                               						 
2. SoftIce fr's VB Cracken konfigurieren (Winice.dat)

PENTIUM=ON   			; wenn Du einen Pentium PC hast, dann lasse diese Option auf 'ON' ansonsten =OFF 
NMI=ON				; trap Non-Maskable Interrupt--ntzlich mit einem Hardware Breakout Schalter 
ECHOKEYS=OFF 
NOLEDS=OFF			; deaktiviere/aktiviere Capslock und Numlock Programmierung 
NOPAGE=OFF			; deaktiviere/aktiviere Mapping von nichtvorhandenen Memoryseiten 
SIWVIDRANGE=ON  
THREADP=ON			; aktiviere/deaktiviere thread-spezifische Stufenabarbeitung 
LOWERCASE=OFF			; aktiviere/deaktiviere Kleinschreibung 
WDMEXPORTS=OFF 
MONITOR=0 

; ************************************************************************* 
; Wenn Du mehr als 32MB Speicher installiert hast, ndere die Zeile PHYSMB 
; auf den richtigen Wert Deiner # Megabytes. 
; Wenn Du weniger als 32MB hast, kannst Du ein bichen Speicher sichern 
; indem Du die korrekten Wert Deiner # Megabytes angibts 
; Example: PHYSMB=32 
; ************************************************************************* 

PHYSMB=32   			; ndere diesen Wert auf den korrekten MB-Wert RAM in Deinem PC 
SYM=1024       			; Reserviert 1MB des Speichers um Symbole vom Source Code abzulegen 
HST=256          		; Reserviert 256K des Speichers fr den History Buffer 
TRA=8				; Gre des Trace Buffers 
MACROS=32 
DRAWSIZE=2048			; Gre des Videospeichers in K 

; ************************************************************************* 
; Die nchste Zeilen konfiguriert Softice nach jedem Neustart Deines PC's. 
; Die folgenden Einstellungen empfehlen wir fr Neulinge. Du solltest also 
; Deine Standardeinstellungen mit diesen Werten ersetzen. 
; *************************************************************************
 
X;         			; Verlasse Softice und das Semicolon hat die gleiche Funktion, wie die Enter  
             		  	  Taste
wl;        			; Schaltet das Variablen Window in SoftIce ein und aus  
             		  	  
code on;   			; In der Grundeinstellung ist diese Funktion aus, wir wollen sie aber einschalten. 
             		  	  Es werden die Hexadezimalen Zahlen (Adressen) neben unserem disassemblierten
				  Code angezeigt. 
altscr off; 			; Wir wollen nicht, da SoftIce verschiedene Screens nutzt, um irgendwelche Ausgaben 
             		  	  auf diesen zu machen. 
Lines 57;  			; Setzt die gesamte Window Gre von Softice so, da SoftIce auf dem gesamten Screen   
             		  	  zu sehen ist. Die Grundeinstellung ist zu klein. 
wc;        			; Softice Code Window, diese Funktion legt die Gre dieses internen Window fest. 
wd;        			; Softice Hexadezimal Window Gre 
wr;        			; Zeigt Dir alle Register am oberen Bildschirmrand. Sehr ntzlich fr's Cracken ;) 
faults off; 			; Damit SoftIce nicht bei jedem Windowsfehler anspringt, schalten wir diese Funktion
				  aus.

Ein Beispiel fr eine INIT-Zeile:

INIT="X;" 
INIT="wl;code on; altscr off; lines 57; wc 32; wd 8; wr; faults off;" 

F1="h;"       			
F2="^wr;"			; Aktiviere/Deaktiviere Register Window 
F3="^src;" 
F4="^rs;" 
F5="^x;"			; Verlasse Softice und gehe zu Windows zurck 
F6="^ec;" 
F7="^here;" 
F8="^t;"			; Trace zum nchsten Befehl (bei dieser Variante werden alle CALLS aufgerufen) 
F9="^bpx;" 
F10="^p;"   			; Gehe zum nchsten Befehl (fhrt alle Befehle auer die CALLS aus)
F11="^G @SS:ESP;"  		; erlaubt es uns eine Call-Routine zu verlassen 
F12="^p ret;"			; Gehe bis zum nchsten RETurn Befehl 
SF3="^format;" 
CF8="^XT;" 
CF9="TRACE OFF;" 
CF10="^XP;" 
CF11="SHOW B;" 
CF12="TRACE B;" 
AF1="^wr;" 
AF2="^wd;" 
AF3="^wc;"
AF4="^ww;" 
AF5="CLS;" 
AF8="^XT R;" 
AF11="^dd dataaddr->0;" 
AF12="^dd dataaddr->4;" 
CF1="code on; altscr off; lines 57; wc 32; wd 8; wr; wl; ww 2; faults off" 
CF2="^wr;^wd;^wc;" 

; ndere den Pfad auf das entsprechende Laufwerk und Verzeichnis 
  
EXP=c:\windows\system\kernel32.dll      ; Diese Zeilen lassen Softice automatisch die 
EXP=c:\windows\system\user32.dll        ; hier eingetragenen System DLL's laden. Diese
EXP=c:\windows\system\gdi32.dll         ; Eintragungen sind sehr wichtig, damit SoftIce 
EXP=c:\windows\system\comdlg32.dll      ; auch wirklich ein Programm unterbricht, wenn 
EXP=c:\windows\system\shell32.dll       ; Du ein Breakpoint auf eine API-Funktion setzt. 
EXP=c:\windows\system\shell232.dll      ; Es gibt auerdem kaum Programme, die nicht eine
EXP=c:\windows\system\advapi32.dll	; dieser DLL's nutzt.
EXP=c:\windows\system\comctl32.dll

; Dazu kommen jetzt folgende DLL's, die speziell von VB Programmen genutzt werden

EXP=c:\windows\system\vbrun300.dll 	-> Visual Basic 3.0 (16-bit)
EXP=c:\windows\system\vb40016.dll 	-> Visual Basic 4.0 (16-bit) - eher selten
EXP=c:\windows\system\vb40032.dll	-> Visual Basic 4.0 (32-bit)
EXP=c:\windows\system\msvbvm50.dll	-> Visual Basic 5.0
EXP=c:\windows\system\msvbvm60.dll	-> Visual Basic 6.0

 
Alle nderungen die Du in der WinIce.dat machst, erfordern einen Neustart des PC's damit die Einstellungen aktiv werden. 


3. Die wichtigsten Breakpoints 


   Der wichtigste Breakpoint	 	: bpx hmemcpy -> er funktioniert zu 99.9 % bei allen prog's

   Folgende Breakpoints funktionieren nur, wenn Du oben aufgefhrte VB DLL's in der WinIce.dat eingefgt hast!

   Nagboxes/Messagebox			: bpx rtcBeep
					  bpx rtcMsgBox
					  bpx rtcInputBox

   weitere Breakpoints			: bpx MultiByteToWideChar
					  bpx WideCharToMultiByte
					  bpx __vbaStrCmp
					  bpx __vbaStrComp
					  bpx __vbaStrMove
					  bpx __vbaStrCopy
					  bpx __vbaR8Str   
   

4. Was mu man beachten ?

  Am besten Du liest unser Tutorial ber die Grundlagen von SoftIce. Es gibt einen Unterschied bei
  VB Programmen gegenber den Programmen, die in C, C++ etc. geschrieben worden sind. Die Strings
  (z.B. Username oder Serial) werden von VB Programmen im Wide Character Format gesichert und auch
  so verglichen.Das sieht z.B. so aus:

	Normaler String	:  DOOM	  (Hex: 44h 4Fh 4Fh 4Dh)
      Wide Char String	:  D O O M (Hex: 44h 20h 4Fh 20h 4Fh 20h 4Dh)

  Dazu noch ein kleiner Hinweis. Falls Du mal keinen Breakpoint findest mit dem Du in ein VB-Programm
  reinkommst, dann klappt meistens bpx MultiByteToWideChar.
  
  Ansonsten funktionieren die oben aufgefhrten Breakpoints einwandfrei und fhren meist auch zum Ziel.
 

5. Grundlegende Literatur

- SoftIce Command reference - hier sind alle SoftIce Befehler ausfhrlich beschrieben
- SoftIce UserGuide
- WinIce Doc
- SoftIceTutors & VBTutors


6. Nachwort

Dieses Tutorial soll nur eine kleine Hilfe sein, denn die VB Programme arbeiten doch sehr unterschiedlich und
man kann keine allgemeine Crackanleitung geben.
Um das Cracken von VB Programmen richtig zu lernen, mut Du noch sehr viel andere Tutorials und Anleitungen lesen und Du wirst nie genug lernen knnen.


Ich hoffe, da Dir dieses Tutorial helfen wird einige Programme zu "debuggen" ;)
Vanor [DOOM]
22.04.1999


