TutoRiaL n°3
Ah l'hiver!Avec cette saison vient le temps de rester 
tranquillement chez soi mais aussi celui de cracker les derniers 
partagiciels =>shareware! sorti.Aujourd'hui nous allons nous attaquer 
a une protection dite generaliste,j'ai nomme la protec de Software 
by Design.En effet,celle ci possede un schema de protection tres 
interessante pour notre apprentissage du cracking.
Bien assez parlé !Au boulot!
/*************************************************\
|programme cible:                                 |
|Dllshow disponible sur le site de son            | 
|auteur:"http://www.gregorybraun.com"             |
\*************************************************/


_______________________________________________________________________
oUTILS:
SoftIce (Mon prefere)->un Debugger ou plutot Le debugger!
Windasm pour le Deadlisting
un stylo ->pour noter le code
un cahier ou un papier->il faut bien le noter quelquepart!
Un cerveau ->ca vous l'avez si vous etes en trai de lire ce tut
_______________________________________________________________________



 __________________
]===eXPLICATIONS===[:
---------------------
Ceux qui lisent attentivement mes cours auront remarqué que j'ai parle de deadlisting.
Je vais vous expliquer ce que c'est.
Voila en cracking Il existe de nombreuses d'arriver a ses fins mais tout 
on au moins un lien avec ses deux approches:
	-Le deadlisting
	-La livepproach
====================
   Dead listing
====================
en deadlisting le cracker fonctionne ainsi:
	-il execute le progz et essaie d'en tirer le max de string datas 
references(voir tutorial n°2)
	-Il desassemble le programme
	-Il cherche le ou les string datas repertories 
	-il imprime les portions de codes interessantes et 
crack ca tranquillement.
Generalement,on cherchera un je ou jne apres un cmp
======================
    Live approach
======================

La le cracker fonctionne ainsi
	-Il demarre le programme. 
	-il regarde si il y a un moyen de s'enregistrer.
	-Avec SoftIce,il pose un point d'arret sur les apis windows.
	-Il essaie de trouver la comparaison bon code mauvais code

Nous allons nous nous servir de la live approach pour cracker Dllshow.Bon 
si vous avez lu la rubrique Outils vous avez SoftIce.On va d'abord l'installer

()()()()()()()()()()()()
Installation de Softice
()()()()()()()()()()()()

Rien de bien compliqué.Vous avez un setup normal.Au cas Ou vous n'aurez pas de
 code,je vous en donne un tout beau,tout frais.

SOftice CODE:1900-0000dd-9b

bon laissez Softice modifiez votre autoexec.bat ou faite le vous meme.Le resultat
sera le meme de toutes façons.Au moment ou il vous demande si vous voulez
redemarrez Windows DITES NON!Puis allez Tranquillement dans le repertoire ou 
vous avez installe SofIce.La vous avez un fichier Winice.dat.Editez le.VOus
devriez avoir ça pour cracker correctement

NMI=ON
SIWVIDRANGE=ON
LOWERCASE=OFF
MOUSE=ON <-Vous avez la souris dans windasm
NOLEDS=OFF <-verrouillage numerique	
NOPAGE=OFF 
PENTIUM=ON <-vous avez un pentium
THREADP=ON
VERBOSE=ON

PHYSMB=64 <-Memoire ram
SYM=1024
HST=256
DRAWSIZE=2048
TRA=92

INIT="wr;CODE ON ;WR ;LINES 50 ;WC 25 ;WD 10 ; SET FONT 2;fAULTS OFF;wf;x "<-options
de Softice

F1="h;"
F2="^wr;"
F3="^src;"
F4="^rs;"
F5="^x;"
F6="^ec;"
F7="^here;"
F8="^t;"
F9="^bpx;"
F10="^p;"
F11="^G @SS:ESP;"
F12="^p ret;"
SF3="^format;"
CF8="^XT;"
CF9="TRACE OFF;"
CF10="^XP;"
CF11="SHOW B;"
CF12="TRACE B;"
AF1="^wr;"
AF2="^wd;"
AF3="^S 0 L FFFFFFFF 8B,CA,F3,A6,74,01,9F,92,8D,5E,08;" 
AF4="^S 0 L FFFFFFFF 56,57,8B,7C,24,10,8B,74,24,0C,8B,4C,24,14;"
AF5="CLS;"
AF8="^XT R;"
AF11="^dd dataaddr->0;"
AF12="^dd dataaddr->4;"
CF1="altscr off; lines 60; wc 32; wd 8;"
CF2="^wr;^wd;^wc;"

MACRO Deax="e eax"


EXP=c:\windows\system\kernel32.dll
EXP=c:\windows\system\user32.dll
EXP=c:\windows\system\gdi32.dll
EXP=c:\windows\system\comdlg32.dll
EXP=c:\windows\system\shell32.dll
EXP=c:\windows\system\advapi32.dll
EXP=c:\windows\system\shell232.dll
EXP=c:\windows\system\comctl32.dll
EXP=c:\windows\system\crtdll.dll
EXP=c:\windows\system\version.dll
EXP=c:\windows\system\netlib32.dll
EXP=c:\windows\system\msshrui.dll
EXP=c:\windows\system\msnet32.dll
EXP=c:\windows\system\mspwl32.dll
EXP=c:\windows\system\mpr.dll
EXP=c:\windows\system\msvbvm50.dll
EXP=c:\windows\system\msvbvm60.dll
EXP=c:\outils\winace\ace.dll
EXP=c:\outils\winace\acetools.dl
exp=c:\windows\system\msvcrt.dll
exp=c:\windows\system\msvcrt40.dll
exp=c:\windows\system\msvrct20.dll


NOLEDS=Off
WDMEXPORTS=OFF
MONITOR=0
; WINICE.DAT
; (SIW95\WINICE.DAT)
; for use with SoftICE Version 3.2 (Windows 95)
; 14 July 1997
; *************************************************************************
; If your have MORE than 32MB of physical memory installed, change
; the PHYSMB line to the correct # of Megabytes.
; If you have LESS than 32MB you can save a bit of memory by 
; specifying the correct # of Megabytes
; Example: PHYSMB=32
; *************************************************************************
; ***** Examples of sym files that can be included if you have the SDK *****
;	Change the path to the appropriate drive and directory
;LOAD=c:\windows\system\user.exe
;LOAD=c:\windows\system\gdi.exe
;LOAD=c:\windows\system\krnl386.exe
;LOAD=c:\windows\system\mmsystem.dll
;LOAD=c:\windows\system\win386.exe
; ***** Examples of export symbols that can be included *****
;	Change the path to the appropriate drive and directory
;EXP=c:\windows\system\vga.drv
;EXP=c:\windows\system\vga.3gr
;EXP=c:\windows\system\sound.drv
;EXP=c:\windows\system\mouse.drv
;EXP=c:\windows\system\netware.drv
;EXP=c:\windows\system\system.drv
;EXP=c:\windows\system\keyboard.drv
;EXP=c:\windows\system\toolhelp.dll
;EXP=c:\windows\system\shell.dll
;EXP=c:\windows\system\commdlg.dll
;EXP=c:\windows\system\olesvr.dll
;EXP=c:\windows\system\olecli.dll
;EXP=c:\windows\system\mmsystem.dll
;EXP=c:\windows\system\winoldap.mod
;EXP=c:\windows\progman.exe 
;EXP=c:\windows\drwatson.exe 
; ***** Examples of export symbols that can be included for Windows 95 *****
;	Change the path to the appropriate drive and directory


Bon alors on cracke OUi ou NON!!
(Choeur:Oui!!

Bon on y va
Executez le programme.Vous avez un nagscreen de 3s ou vous pouvez lire 
Unregistered 30 days trial version.Puis allez dans le menu Help,puis register.
Ah voila enfin notre cible;
Etudions la vite
	-3 Champs(user name,organization,registration)
	-seule les caracteres numeriques sont acceptés dans le champ registration
Ah nickel!
Bon alors pour crackez cette cible on va faire comme ça
	-ctrl-D pour demarrez SoftIce
	-On va tapez ça:bpx getdlgitemtexta`
	-puis F5
	-On remplis les champs
pour moi ce sera 
User name:aCiD E+HYL!C
Organization:C0nspyraCy
registration:11223344
	-on appuie sur entrée et la BREAK dans softIce
	-On arrive la
	USERS32!Getdlgitemtexta
	015F:BFF51743 	mov cl,A1
	015F:BFF51745 	push ebp
		Etc...
	-On fait 3 fois F5 (pour arriver au 3eme champs)
	-on arrive la:(j'ai mis quelques commentaires)


:0040D6E5 8D442430                lea eax, dword ptr [esp+30]<-Met l'adresse effective de votre compagnie
:0040D6E9 6800010000              push 00000100
:0040D6EE 50                      push eax

* Possible Ref to Menu: MenuID_03E8, Item: "Properties"
                                  |

* Possible Reference to Dialog: DialogID_0DAC, CONTROL_ID:0067, ""
                                  |

* Possible Reference to String Resource ID=00103: "Show information about the currently selected process"
                                  |
:0040D6EF 6A67                    push 00000067
:0040D6F1 55                      push ebp
:0040D6F2 E879820000              call 00415970
:0040D6F7 8D4C2440                lea ecx, dword ptr [esp+40]<-Charge l'adresse de
 votre nom
:0040D6FB 51                      push ecx
:0040D6FC E8E5980000              call 00416FE6 <=call ou se fait la fabrication 
de votre bon serial
:0040D701 56                      push esi
:0040D702 8BD8                    mov ebx, eax
:0040D704 E8F7810000              call 00415900<=ou celui la
:0040D709 83C438                  add esp, 00000038
:0040D70C 3D92A71901              cmp eax, 0119A792<=tiens une comparaison entre 
eax et 18458514
:0040D711 7518                    jne 0040D72B<=saute si pas egal a 0

* Reference To: KERNEL32.lstrcpyA, Ord:0302h<=api qui copie un string dans le 
buffer
                                  |
:0040D713 8B1D28E14100            mov ebx, dword ptr [0041E128]

* Possible StringData Ref from Data Obj ->"Gregory Braun"
                                  |
:0040D719 68001F4200              push 00421F00
:0040D71E 56                      push esi
:0040D71F FFD3                    call ebx

* Possible StringData Ref from Data Obj ->"Software Design"
                                  |
:0040D721 68F01E4200              push 00421EF0
:0040D726 57                      push edi
:0040D727 FFD3                    call ebx
:0040D729 EB07                    jmp 0040D732

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040D711(C)
|
:0040D72B 3D3CCE5F0D              cmp eax, 0D5FCE3C <=tiens un comparaison entre et 224382524
:0040D730 750C                    jne 0040D73E<=saute si pas egal a 0

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040D729(U)
|
:0040D732 57                      push edi
:0040D733 56                      push esi
:0040D734 E8677C0000              call 004153A0
:0040D739 83C408                  add esp, 00000008
:0040D73C 8BD8                    mov ebx, eax

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040D730(C)
|
:0040D73E 57                      push edi
:0040D73F 56                      push esi
:0040D740 E85B7C0000              call 004153A0<=et si c'etait celui la
:0040D745 83C408                  add esp, 00000008
:0040D748 3BD8                    cmp ebx, eax <=compare ebx et eax

Bon on a bien avancé!En effet ces comparaisons sont la pour quelquechose 
de precis.Et Oui!
Le programme va ici comparer Votre MAUVAIS CODE avec LE BON CODE!!!
Vous ne me croyez pas et beh on va voir :à)
(parentheses =>Sous softice pour voir ce qu'un nombre donne en decimal 
tapez (on appelle X la chose cherché)
? X
arrivé ici 	:0040D748 3BD8                    cmp ebx, eax <=compare ebx et eax
tapez ? eax
vous aurez ça:
'votre code en hexa'    'votre code en decimal' 'sa representation en ASCII'
Si par contre vous voulez voir ce que le registre contient reéllement faites ca
d X
vous aurez quelque chose qui s'affichera dans la fenetre data fin de la parenthese=)
Pour moi je trouverais ça

00AB4130 0011223344 "½A0"
Je vous le donne en mille que contient ebx =====>"!!!LE BON CODE!!!"

pour moi ce sera 
00dfbea4a9  3753813161 "le code en ascii"

*********************
    c0NCLUSI0N:
********************* 
Ah C'est magnifique de rentrer le bon code vous trouvez pas ?La prochaine fois 
on attaquera Winzip x.x et ca sera pas de la tarte.
     ==============================GReeTZ===================================
Frog's print(il m'a tout appris),et tous les gens qui touchent de pres ou de 
loin a la scene française,La French Underground 


       =)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=)=
       =(=(=(=(=(=(=(=(=(=(=(=(=(=(=(=(=(=(=(=(=(=(=(=(=(=(=(=(=(=(=(=(=(=(=(=
              !!¡¡Cracking is @n aRT,il n'est pas reserve a tout le¡¡!!
                                  !!¡¡monde¡¡!!
			           

le 10/11/2000
						

                                                          MInoTHauR