X-iT
Débugger en mode protégé: une approche
par Khepri

X-iT Team X-iT Website: http://x-it.base.org

Bon, pour commencer, une petite présentation ;) L'équipe de X-iT se propose de faire une fois de temps en temps (le plus souvent possible) un petit topo sur un point particulier du crack. Ou d'autre chose d'ailleurs. M'enfin, aujourd'hui, je vous propose une des quelques méthodes pour faire du crack sur des softs en mode protégé. Il n'y en a pas eu beaucoup, et à ma connaissance aucun en français. NOHATE [X-iT] vous proposera peut être une autre approche qu'il m'a refilé mais je lui en laisse la primeur ;)

A propos, n'hésitez pas à utiliser le forum pour échanger des techniques, des breakpoints, exposer vos difficultés, etc. Nous, à X-iT, on aimerait bien que ce forum devienne un des lieux d'échanges entre crackers francophones...

Enfin, on va peut-être attaquer ce petit essai ;)


1.Présentation sommaire du mode protégé

Je suis loin d'être un pro du mode protégé en lui-même. Je me limiterai donc aux grands traits généraux, et exprès, je vais surement dire des conneries énormes ;|

Le mode protégé est exclusivement utilisé par des logiciels DOS. Parmi les softs qui utilisent le mode protégé, il y a par exemple, tous ceux qui utilisent le DOS4GW ou le PMODE/W... Le mode protégé, d'après ce que j'ai compris, permet de se libérer de nombreuses contraintes dues à la gestion de la mémoire du DOS.
Un inconvénient pour les crackeurs: on ne peut pas utiliser Softice DOS, qui se vautre inévitablement, ainsi que la plupart des debuggers Dos (sauf Watcom Débugger, fait pour les softs en DOS4GW, mais que je ne trouve pas du tout ergonomique, avec des gros gros bugs).
La solution? Passer par Windaube 95 en utilisant Softice Win (je fais ça avec la version 3.0).

Je suis désolé, je ne vous ferai pas d'exemple précis mais je me limiterai à la technique elle même. Mais cette méthode est assez efficace, elle m'a permis de faire sauter quelques CD Checks (La cité des enfants perdus par exemple, de cracker aussi Executor, l'émulateur Mac, etc...).

J'oubliais de vous dire, j'estime avant de commencer que vous savez poser des breakpoints et vous servir un minimum de Softice...
Assez parlé, c'est parti!


2.Gnak gnak, Débug!

La première étape, c'est bien sur de lancer Winice, ben je ne vous apprendrai pas comment faire, oki?
Ensuite, lancez le soft en mode protégé à débugger dans une fenêtre DOS...
Laisser rouler le soft jusqu'à l'endroit à partir duquel vous désirez tracer dans le soft.

Là un classique Ctrl-D pour avoir l'écran de Winice. Le problème, comme toujours sous Windows 95, c'est k'on arrive n'importe où, quelques part dans les routines Win. Le truc consiste donc à poser un Breakpoint sur le code du soft cible.


C'est maintenant qu'on attaque la partie spécifique mode protégé:
Sous Winice, exécutez l'instruction "vm 2" (c'est a dire Virtual Machine 2). Vous avez maintenant un truc du style:
:vm 2
PROT CS:EIP=0237:824786D4 SS:ESP=0157:00004F40 DS=023F ES=023F FS=0000 GS=0087
V86  CS:EIP=FCB8:00002F97 SS:ESP=221B:00000240 DS=12AD ES=221B FS=0000 GS=0000
EAX=00000000  EBX=824A2364  ECX=0001F630    EDX=0000000C   Z P
ESI=0000000C  EDI=00000000  EBP=894B5354  ECODE=C0000000
:
Vous avez maintenant l'EIP du soft à debugger: PROT CS:EIP:0237:824786D4
Il reste maintenant à l'exploiter, ce qui est assez facile.

Exécutez l'instruction "u CS:EIP noté". Ici, on exécutera: "u 0237:824786D4"
Winice vous affiche donc le code à partir de 0237:824786D4:
0237:824786D4   OUT     EDX,AL
0237:824786D5   MOV     EDX, [EBX+14]
0237:824786D8   SUB     EAX,EAX
0237:824786DA   IN      AL,DX
0237:824786DB   MOV     ECX,EAX
0237:824786DD   MOV     EDX;[EBX+14]
.....
On a maintenant devant les yeux le programme en mode protégé que l'on veut debugger à l'endroit où il était rendu quand on a appuyé sur Ctrl-D.
Maintenant, on va placer le curseur de Winice (le _ qui clignote, pas la souris) sur la seconde ligne de code que l'on voit. Ici: 0237:824786D5: c'est la prochaine instruction qui sera exécutée.

Il ne reste plus qu'a exécuter l'instruction "here" qui lancera le soft jusqu'à ce qu'il arrive à l'instruction désignée.


Quelques petites remarques sur cette technique de debugging:
- n'essayez pas les BPINT, ca ne marche pas
- quand vous relancerez le soft, les BP posés auparavant ne fonctionneront as systématiquement: à vous de les refaire
- il y a parfois des bugs à l'affichage: à vous de faire avec ;)


3.Crédits, bafouilles, etc...

Bon, d'abord un grand salut à toute l'équipe de X-iT: Nop_nop, Crash, NOHATE, Hellraiser!
Ben, un autre grand salut à ceux qui lisent ce ch'tit truc ;)

Enfin, j'espère que ce texte sera le début d'une longue série et que nous pourrons progresser ensemble. Pour X-iT, l'essentiel, c'est le Fun!