Tracer un code bourré d'exception devient très vite fastidieux il faut en effet récupérer l'adresse du handler dans la pile , mettre un BP dessus , passer l'exception au programme et quand l'exception a fini d'être traité , il faut encore mettre un BP a l'endroit où le code reprendra son cour normal.

Ca donne une combinaison de touche qui ressemble à ça : ctrl-c / ctrl-g / ctrl-v / entré / F2 / Shift-F9 / F2 (ba oui faut enlever le BP) et ce juste pour arriver au handler....

Mon pitit plugin permet d'arriver aux points clefs beaucoup plus rapidement.

Lorsque vous arrivez à une exception, il vous suffit de faire un petit Shift-F9 et vous arrivez au handler. L'image du Context envoyé au handler a été modifié, les DebuggRegister ont été mis à 0 (MAIS vos HBP sont encore en parfait état de marche, si vous avez mis un HBP dans le handler, ca breakera bien, seule la pile est vraiment modifiée)

Vous pouvez alors tranquillement tracé le handler, arrivé au retn qui signal la fin du handler, vous n'avez plus qu'a appuyer sur F9, les DebuggRegisters sont restaurés et vous atterissez a l'endroit où le code continue, un BreakPoint "OneShot" ayant été posé.

Enfin, le plugin permet de "jongler" entre les HBPs mis par le programme et ceux posés par olly pour par exemple travailler sur tElock sans problemes.

le plugin fonctionne selon ce shema :

  • Au démmarrage il patche la fonction KiUserExceptionDispatcher situé dans Ntdll.dll en y mettant une int3 (bon je sais ce n'est pas tres discret ...)
  • Quand le programme break sur cette Int3 :
    1. Le plugin met un BP "OneShot" sur le handler
    2. Il enregistre les DRs et efface leur copie dans la pile
    3. Il restaure le code de KiUserExceptionDispatcher
    4. Et enfin il relance le programme
  • Le programme break alors sur le BP "OneShot" et vous n'avez plus qu'a tracer le handler.
  • Arrivé a la fin du handler, lorsque vous appuyez sur F9, le programme break sur l'Int3 situé dans ZwContinue et alors :
    1. Le plugin met un BP "OneShot" a l'endroit où le code reprendra son execution "normale"
    2. Il restaure les images des DebuggRegisters dans la pile (si des HBP ont ete posés par le handlers, le plugin vous demandera confirmation)
    3. Il restaure ZwContinue
    4. Il relance le programme ...
  • ... Qui vient breaker sur le BP "OneShot" précedemment mis

voili voilou

LE PLUGIN (+le read-me et tElock)

(je voulais mettre un exe protege par tElock mais toute mes tentatives de packing de messages box ce sont soldées par douloureux z'et cuisant z'echec

Il se peut qu'il y ai des bug, merci de me les signaler

;)

Je prevoit de faire une petite interface qui permette de configurer un peu le plugin mais pas dans l'immediat ...

(greetz : Kaine : pour le nom et en plus il parait que c'est un gage de qualité :p )

[EDIT ECLAIR] Modification de 2-3 choses , maintenant compatible XP SP1

-God Certified-