[ - Intro - ExplicationsTutoriaux - Liens - Notes de fin - ]
 
[ - L'outil expliqué - ]

Softice, le meilleur outil du cracker...quand on sait bien s'en servir et qu'on l' a bien configuré. 
Son utilisation permet de tracer dans le code d'un programme en "live" en voyant sa réaction au fur et à mesure et d'y apporter sa "contribution" pour y ajouter des fonctionnalités ou changer des conditions. 
La version que j'utilise est la 4.05, mais vous pouvez utiliser la 3.2x, 4.x ou Numega Driver Studio 2.xx, qui contient Softice. 

1 - On installe Softice 
2 - On configure Softice 
 


1 / On installe Softice 

Bon, pendant l'installation, c'est pas dur, on suit pas-à-pas l'installation.

Dans un premier temps, il s'agit de la carte graphique.

Là, il suffit de choisir le nom du fabricant de la carte graphique, puis de choisir le modèle de la liste... On clique sur le bouton "Test" pour voir la réaction...et on continue. 
Si votre carte n'est pas mentionnée, testez avec un autre modèle du fabricant ou en désespoir de cause, cocher standard VGA... puis testez. Si ça ne marche toujours pas, il vous reste chercher sur des forums dédiés ou la doc, s'il n'existe pas un Driver spécifique.

Passons à l'autre étape : la Souris.

Pour le standard, il faut choisir PS/2 compatible et si votre souris possède une molette, choisissez la case "Microsoft IntelliMouse".

Voilà, c'est fini... vous pouvez redémarrez.
Si ça marche pas dans la suite, vous pourrez revenir sur la configuration souris/carte graphique par le menu Démarrer.


2 / On configure Softice

La première chose est de voir si Softice répond bien à notre appel et qu'il ne déconne pas.
Un petit "Ctrl D" et hop, si l'interface apparait s'est déjà un bon signe. Attender quelques secondes puis taper n'importe quoi et "entrée".
Si tout plante ou se fige, il y a de grandes chances pour que la configuration de la carte graphique soit en cause, donc relancer la bécane et trouver la config. qui va bien.
Si tout va bien, taper "F5" pour revenir sous Windows.

****************************************Choisir d'avoir Softice ou non****************************************
La première chose est de permettre d'avoir le choix de lancer S.I au démarrage de Windows.
En effet, il existe des softs qui ne supportent pas la présence du débugger. ( On a des parades toutefois avec certains outils, Frogsice, Bang...)
Donc, on va introduire le script suivant ( merci à son auteur dont je n'ai plus le nom ) dans l'autoexec.bat.
Pour les utilisateurs de Windows ME, allez regarder sur Protools pour obtenir le Loader.

@echo
echo 1:Ne Pas Charger SoftIce 
echo 2:Charger SoftIce 
C:\WINDOWS\COMMAND\choice /C:12 /T1,8 Choix? 
if errorlevel 2 goto Charger 
echo SoftIce non charge ! 
goto fin 
:Charger 
C:\PROGRA~1\NUMEGA\SOFTIC~1\WINICE.EXE
:fin

Pour le path de WINICE.EXE, vous devez impérativement respecter les 8 caractères maximum des noms de répertoire, comme pour le DOS.
Au prochaine lancement de Windows, on aura le choix d'avoir Softice ( touche "1" ) ou non ( touche "2" ).
Si aucun choix n'a été fait au bout de 8 secondes, S.I n'est pas lancé.
Dans le répertoire de Softice, on a un fichier qu'il faut configurer : WINICE.DAT.
Editer le avec le notepad.

Vous avez du texte dont certaines lignes doivent être changées.

PENTIUM=ON  <= si votre processeur est un pentium et OFF si autre...
.....................
PHYSMB=64    <= mettez la valeur de votre RAM. ( 32 , 48, 64, 128 M)
SYM=1024       <= mets 1 Méga pour les symboles du code.
HST=256          <= mets un buffer de 256 Ko pour l'historique.
.....................
INIT="X;"           <= définit ce que l'interface de S.I va afficher.

Voici les différentes instructions que l'on peut ajouter à cet INIT.

WD 20 : édite en hexadécimal les adresses mémoire sur une hauteur de 20 lignes.
WC 35 : montre le code en assembleur que l'on trace sur une hauteur de 35 lignes. 
FAULTS OFF : S.I apparait ou non si apparition d'une "General Protection Faults" ; exemple qd windows plante.
I3HERE OFF : pour éviter de voir S.I apparaitre si l'interruption 3h est utilisée par un autre débugger. ( Builders... )
CODE ON : pour voir dans le code, l'équivalence instruction ASM et opcodes en hexadécimal.
LINES 70 : définit 70 lignes de hauteur pour l'interface
X : pour permettre à Windows de récuperer la main
ALTSCR OFF : Faire apparaitre les outputs de S.I dans un autre écran. 

Vous trouverez beaucoup d' INIT différents.

On a ensuite la définition des touches de fonctions de S.I. ( A ne pas modifier, on va voir dans la suite leurs utilités )

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;"

Puis , on a une partie que l'on peut "customiser" pour son propre usage.
Voici la syntaxe que j'utilise. Les instructions seront expliquées plus loin.

"CFx" = la combinaison de la touche Contrôle et d'une touche de fonction Fx (F1, F2,... )
"^d eax;" = instruction "display eax : d eax"
Donc en appuyant sur "Ctrl F1", on demande à S.I de nous pointer sur l'adresse contenue dans eax.

"AFx" =  "         "           "   "     "       ALT        "     "       "       "      "        "        "
"^? eax;" = instruction "evaluate eax : ? eax"
De même en appuyant sur "Alt F1", on demande à S.I de nous afficher la valeur contenue dans eax.

Ce qui nous donne...

CF1="^d eax;" 
CF2="^d ebx;"
CF3="^d ecx;"
CF4="^d edx;"
CF5="^d esi;"
CF6="^d edi;"
AF1="^? eax;"
AF2="^? ebx;"
AF3="^? ecx;"
AF4="^? edx;"
AF5="^? esi;"
AF6="^? edi;"

Ces combinaisons sont assez utiles pour connaitre rapidement le contenu et vers quoi pointe un registre.
Idéal pour le "serial fishing" et autre...

On continue dans notre winice.dat

; 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 

On ne change rien. Passons à la suite.
 

;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\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

On ne les laisse pas en commentaires car Softice doit pouvoir charger des routines dans ces DLL.
De plus, il existe d'autres DLL dont nous avons besoin, notamment dans les progs Visual Basic.

Voici d'autes DLL à rajouter à cette liste :

EXP=C:\windows\system\msvbvm50.dll 
EXP=C:\windows\system\msvcrt40.dll

Voilà, on en a fini avec le winice.dat.
 

Lise Grim 2002 / WiA