Tutorial
de Cracking |
Mon objectif : Vous apprendre a vous servir de SoftIce et meme à cracker avec SoftIce (tant ka faire ;)
Bon, ne mettons pas la charrue avant les boeufs, et commencons deja par installer SoftIce correctement :
Lorsqu'on
vous demande un serial...ben vous avez ka mettre 1900-0000DD-9B (v3.25)
Installez-le
dans le repertoire par defaut...
Choisissez tous les composants...
Si
vous trouvez pas votre carte video, mettez "Standard VGA" et cochez
"Universal Video driver"...
Choisissez si votre souris est sur
COM1, COM2 ou PS2...
Laissez l'installation modifiez votre autoexec.bat...
Faite
"Register Later" puis "Yes, restart my computer now".
Vala,
maintenant SoftIce est installe !! ;)
Ok,
maintenant il faut que vous modifiez quelque parametres...
Editez le fichier
winice.datqui se trouve dans le repertoire ou vous avez installe SoftIce.
(avec
notepad, vous faites "ouvrir", vous allez dans le repertoire de SoftIce,
par defaut c:\program files\numega\softice95, et vous ouvrez le fichier winice.dat...)
Enlevez
les ';' devant les dll suivantes : kernel32.dll, user32.dll, gdi32.dll.
Recherchez
aussi une ligne commencant par ligne INIT= et remplacez là par
ceci:
Vous
avez redemarrez ? Et maintenant, vous vous dites : bon, comment on lance SoftIce
?
Reponse: on le lance pas, car vous etes deja dedans ! En fait, c'est comme
dans Alien IV :))
Vous etes en apparence dans windows, mais au fond, ya SoftIce
qui veille...
Et des que vous tapez Ctrl+D (ou F5), vous etes dans SoftIce
!
Et la, vous allez me dire "mais a koi ca sert le Symbol Loader
qu'il m'on mis en raccourci ??"
Et ben ca, c'est si vous voulez tracer
un programme depuis sa premiere instruction ! Autant dire que ca sert pas a
grand chose...du moins pas souvent :) Passke, entre le debut d'un programme
et son nagscreen, peut bien avoir des milliers d'instruction...imaginez si faisiez
chacune de ces instruction pas a pas !
Le probleme du debuggeur, c'est
que quand vous entrez dedans, vous pouvez etre n'importe ou !!
Je m'explique:
windows, ca fait plein plein de truc en tache de fond...(vous imaginez meme
pas...) et comme le debuggueur il sait pas que vous vous interressez qu'a tel
ou tel programme, et ben il vous affiche les instructions en cours au moment
ou vous l'appelez.
...Oauis...vous avez l'air perdu...En gros, des que
vous faites Ctrl+D, vous tombez n'importe ou dans windows !! (Meme si vous faite
Ctrl+D alors que vous etes dans le programme a cracker..)
Va donc falloir
trouver une ruse pour atterir ou on veut !
Et c'est ce qu'on appelle les
"breakpoints" (= "point d'arret" = bpx).
Ca consiste
a dire a SoftIce "Arrete toi a tel endroit". Et alors je vous entend
d'ici me crier :
Notes
toutes les fonctions ayant un A la fin signifie que ce sont des fonctions 32
bits.
Pour le mode 16 bits enlever simplement le A...
Exemple : GetWindowTextA
= GetWindowText
|
Lecture/Ecriture de fichier : |
ReadFile
|
|
Lecture de donnees d'un fichier ini : |
GetPrivateProfileStringA
|
|
Accès à la base de registre: |
RegCreateKeyA
|
|
Boites de Dialogues: |
GetWindowTextA
|
|
Boite de messages: |
MessageBox
|
|
Date et Heure : |
GetLocalTime
|
|
Creation d'une fenêtre : |
CreateWindowExA |
|
Fonctions utiles pour les programme en Visual Basic : |
Hmempcy |
Don't Panic !! Si j'enumere ces fonctions (liste non exhaustive..) c'est juste pour vous montrer quelque exemples...dans les autres parties du cours, vous apprendrez a vous en servir :)
C'est pas tout, mais faut bien que vous sachiez utiliser un peu SoftIce...Donc voci une liste des principales commandes de SoftIce...
F8
= permet d'éxécuter le programme pas à pas tout en rentrant
dans les CALL (c'est à dire que le programme appelle une fonction, ou
une routine de vérification du serial par exemple...).
Exemple : CALL
000012345 => si ici on fait F8 on rentre dans la fonction.
F10 = la meme chose que F8 mais ne rentre pas dans les CALL : il les éxécutent, vous n'avez simplement pas le détail de la fonctions ). Si on fait F10 on éxécute le CALL mais on ne rentre pas dedans on va directement a l'instruction suivante...
La
nuance entre les deux est tres importantes: Imaginez qu'un Call est une porte
donnant sur une piece ayant elle meme d'autre porte, et ainsi de suite a n'en
plus finir...
Et ben, si vous rentrez dans une porte (un CALL) puis, a partir
de cette porte, vous entrez dans une autre, et une autre, et encore une autre....
ben vous vous etes plus qu'eloigner de l'origine... :) c'est pour ca que F8
est a utiliser avec moderations, et il faut eviter de trop s'enfoncer de call
en call...
F12 = permet de sortir d'un CALL et de reprendre l'éxécution juste après. C'est comme ca que vous retrouverez l'appelant d'une fonction.(vous etes a l'endroit X, appuyez sur F12 et vous arriverez juste apres l'endroit Y qui appelle X...)
"?
nom_de_registre"
= permet d'évaluer une valeur d'un registre en décimal
Exemple
si eax = 00003039 faites "? eax" et vous obtiendrez : "12345"
? = aide, très utile, vous y trouverez toutes les fonction de SoftIce...
r
= pour modifier la valeur d'un registre
Exemple si vous voulez que eax soit
égal à 1 faites "r eax=1"
Attention
: les valeurs contenues dans les registres sont des valeurs héxadécimale.
bpx
nom_de_fonction
= pour creer un breakpoint sur une fonction (ex: bpx showwindow).
bpm
adresse_memoire
= pour creer un breakpoint sur une addresse memoire (ex: bpx 0040660).
bc * = supprimmer tous les breakpoints, car quand vous en poser un, il reste jusqu'a ce que vous l'effaciez....
Exit = forcer SoftIce à quitter le programme (pratique en cas plantage).
Task = permet de savoir sous quel nom tourne un programme précis.
HWND
nom_du_programme
= Pour connaître le différents sous objets d'une application
(fenetre,
boite de dialogue...)
Ctrl+D ou F5 = Rentrer et sortir de SoftIce...une des touches les plus utile :)
Voila,
vous savez le principal sur l'utilisation de SoftIce... N'hesitez pas a revenir
sur cette partie du tutorial pour revoir les commandes et les fonctions utilise
dans SoftIce...
Allez, en cadeau bonux, je vous offre un beau dessin d'une
fenetre SoftIce, histoire que vous voyez a quoi ca ressemble :) Ouais, je sais,
ca parait austere vu comme ca, mais en fait c'est bien pratique :)