Principe de fonctionnement d'un debugger (SoftIce)
Là nous commençons les choses sérieuses. Nous allons apprendre a se servir de softice et aussi a quoi cela
va nous servir. SOFTice est donc un débugger crée par NuMega qui vaut assez cher (qui a dit que
vous deviez l'acheter :). Il faut tout d'abord que vous l'installiez convenablement. Le processus
d'installation s'est considérablement amélioré avec le temps si bien que ce sera très simple à installer.
Vous commencez donc par éxécuter le setup.exe puis vous spécifiez quel type de souris vous avez.
(ps2 ...) puis vous cliquez sur "tester" pour faire accepter votre carte graphique.
Cependant il reste une petite manipulation a ne pas oublier. Allez dans votre répertoire de SOFTice
et éditez "winice.dat" avec le bloc-note. Ensuite enlevez tous les ";" devant les EXP=!!!. Cela
permet de placer plus de breakpoints (pas de panique je vais vous expliquer ce que c'est).
Bon voila SOFTice est installé. Il vous suffit de rebooter le pc et si tout a bien fonctionné vous allez
le voir se mettre en route en même temps que windows. Il tournera en fond sans que vous vous
en rendiez compte. Pour l'appeler, rien de plus simple, faites CTRL + D.
Avant de rentrer dans les détails voyons plutôt a quoi ce programme va nous servir. Un débugger
intercepte tout le code qui est envoyé au processeur et nous le montre a l'écran quand nous le désirons.
Il nous permet aussi de tracer un programme ligne de code par ligne de code. De plus il convertit
le code hexadécimal en assembleur ce qui nous permet de comprendre comment foncionne un
programme. Un débugger permet aussi de placer des breakpoints. Un breakpoint est une chose que
l'on place a n'importe quel endroit d'un programme et qui arretera tout le système dès que cet endroit
sera lu par le processeur.
On peut placer aussi des breakpoints sur les APIs de windows. Par exemple si vous placez un breakpoint
sur l'api MessageBoxA qui permet l'affichage de boite de messages le système s'arretera dés qu'une boite
de messages fera son apparition a l'écran et SOFTice vous montrera où l'appel a cette API a été éffectuée.
Passons directement aux commandes utilisées pour faire fonctionner SOFTice:
------------------------------------------------------------------------------------------
CTRL+D >> faire apparaitre ou disparaitre SOFTice
F5 >> Continuez l'éxécution après un breakpoint
F10 >> Tracer pas à pas (step over)
F8 >> Tracer pas à pas en rentrant dans les calls (step into)
F12 >> Revenir d'un call
-------------------------------------------------------------------------------------------
Voila pour les touches importantes. Voyons maintenant les commandes :
-------------------------------------------------------------------------------------------
Placer un breakpoint à une adresse : "bpx " Par exemple : bpx 00405400
Voir les registres du processeur : "r"
Voir le code hexadécimal : "code on"
Voir la mémoire : "data"
Voir la liste des bpx (breakpoints) posés : "bl"
Effacer un bpx : "bc " ou numéro est le chiffre attribué au bpx
Effacer tous les bpx : "bc*"
-------------------------------------------------------------------------------------------
Voila qui devrait suffir pour le début. Pour de plus amples informations consulter le fichier
d'aide qui devrait être disponible sur le site de NuMega.
Principe de fonctionnement d'un désassembleur
Le désassembleur est l'outil idéal pour débuter quand nous ne maitrisons par encore beaucoup l'asm.
Un désassembleur tel que W32dasm va lire en héxadécimal le programme a désassembler
puis convertir tout le programme en assembleur pour finalement vous afficher le résultat à
l'écran. L'avantage de W32dasm est ses "Strings Datas References". En fait ce sont des chaînes
de caractères trouvées dans le programme qui se révellent très utiles. Par exemple il n'est pas
rare de voir apparaître des phrases telles que "INVALID REGISTRATION CODE" ou encore
"THANK YOU FOR REGISTER" qui vous donnent des renseignements sur l'endroit ou nous allons agir.
Cependant le désassembleur peut paraître assez limité. Il existe des protections contre ceux-ci.
Par exemple si vous désassemblez un .exe crypté le code sera imcompréhensible (crypté par
PeShield - Aspack etc...). C'est pourquoi nous utilisons le désassembleur que lorsque le programme
à cracker est simple. Sinon l'utilisation du débugger se révèlera bien plus judicieuse.
On ne va pas s'attarder sur tout ceci car je suis sur que vous mourrez d'envie de passer a l'action...