Page 1 sur 1

VB6

MessagePosté: 27 Août 2020, 16:08
par rvq35
Bonjour à tous
j'essaie de trouver le serial d'un petit soft fait en VB6. il s'agit de *p*p*r.exe pour les fichiers pdf mais inutilisable en version d essai.
Avec olly je crois que j'aurai beaucoup de mal bien que je trouve les strings data mais il ne semble pas adapté au cas particulier.
j'ai chargé la cible avec vb decompileur lite mais je tourne en rond, faute de connaissance sur ce soft et sans doute en raison d'une version basique que j'ai pu trouver sur le net.
Quelqu'un aurait il déjà consacré un article sur la recherche de serial d'un solft en VB ? (à part bien sur la leçon dans le guide de Daemons) ? Quel serait le decompileur le mieux adapté ?
merci d'avance pour vos idées

Re: VB6

MessagePosté: 27 Août 2020, 19:51
par Hao
Salut,

Si tu t'intéresses au strings, essayes l'unicode...

Image

Après ça se poutre en 1 octet sans avoir forcément besoin de recourir aux strings ni à un tool spécial VBouse. :aie:

Re: VB6

MessagePosté: 28 Août 2020, 14:41
par rvq35
salut Hao,
je trouve sans problème ma string du badboy dans les références stings ce qui me permet de poser un BP sur un endroit qui semble me parler, plus haut sur un CMP juste avant un JNE. Le problème est que lorsque je fais F9 ensuite il ne se passe rien, c'est à dire que je n'ai pas la fenetre de la cible qui s'ouvre en bas.
Donc je trace dans le vide n'importe quoi par F8 car aucun serial n'a pu être entré !
D'ailleurs, quel que soit l'endroit du BP et même qu'il y en ait un de mis ou pas, lorsque je fais F9 la cible ne s'ouvre pas ! En fait, elle ne s'ouvre jamais
J'avais déjà rencontré ce type de problème. Lorsque j'attache le processus c'est pareil.
qu'est ce que j'aurai loupé ? :?

Re: VB6

MessagePosté: 28 Août 2020, 14:51
par Hao
Salut un anti-debug quelconque...
Généralement les debuggers permettent se s'attacher au processus cible une fois lancé.

Re: VB6

MessagePosté: 28 Août 2020, 15:20
par rvq35
j'ai réussi à modifier un saut et à l'enregistrer en mettant un mot de passe bidon et ça marche.
J'aurais toutefois préféré trouver la routine :gné:

Re: VB6

MessagePosté: 28 Août 2020, 15:25
par Hao
Bien joué !
J'ai procédé de la même façon. Ça force l'enregistrement.

Re: VB6

MessagePosté: 28 Août 2020, 18:19
par Hao
Si tu veux faire un peu plus propre, tu peux fish le serial... Le pointeur vers la chaîne est dans la stack.

Re: VB6

MessagePosté: 30 Août 2020, 19:42
par rvq35
salut
en principe j'analyse la stack par des coups de F8 après avoir pu poser un Bp et entrer un code mais là rien à faire, impossible de poser un Bp et de tracer car la boite de lialogue ne s'affiche jamais.
Toi, tu as réussi à poser un BP ? ou alors tu fais directement F9 et tu regardes ensuite dans la pile après chaque coup de F8 ?

Re: VB6

MessagePosté: 31 Août 2020, 18:36
par Hao
Il y a une sorte d'antidebug (je pense ?) qui te lève une exception dès que tu as le focus sur la fenêtre pour rentrer le serial. Et il y a en a un autre aussi avant quand tu veux ouvrir la fenêtre en question depuis la fenêtre principale du soft.

Ce que j'ai fait c'est que j'ai déjà lancé le soft puis ouvert la fenêtre de saisie du serial, puis je me suis attaché avec Olly (c'est plus simple, et comme ça t'es pas embêté par la première exception).
Ensuite pour l'exception qui se lève quand tu as le focus sur la fenêtre du serial, normalement Olly break automatiquement quand l'exception est levée. Donc à partir du bp tu remonte la pile d'appels jusqu'au usercode et tu nop le call. Ça désactive la levée d'exception qui fait chi... et tu peux rentrer le serial tranquil pour debug le truc.

Une autre solution plus propre, x64dbg ([edit] Olly aussi) permet de filtrer les exceptions pour éviter de prendre la main sur certaines.

Re: VB6

MessagePosté: 01 Septembre 2020, 14:54
par rvq35
Salut Hao,
je procédais comme toi c'est à dire que j'attache la cible à olly une fois effectivement le serial bidon entré mais est ce que tu cliques sur " ok" après la réponse du serial invalide avant d'aller ensuite l'attacher sur olly ?
j'ai retrouvé dans la pile le vrai serial qui commence par FLA... mais ce qui est curieux est qu'il n'apparait pas à chaque fois dans la pile :o c'est quoi le bug ?
j'ai quand même un peu de mal à suivre ta démarche, manque de technique et ayant perdu l'habitude, tu parles de bp mais je suppose que tu veux parler de l'adresse qui se met directement dans olly car il ne s'agit pas de F2 ici. Donc en adresse 756B2C5C ?
quand tu parles de usercode tu fais référence au serial saisi ? et enfin pour noper ton call tu recherches dans la pile le 1er goto to module principal en rouge? dans ce cas ça me retourne sur le call en 004FEBC2 mais tout plante ! quelle pouasse ! je crois que je vais abandonner. De toute façon j'ai trouvé le seriel :wink:

Re: VB6

MessagePosté: 01 Septembre 2020, 18:47
par Hao
Perso, je me suis attaché avant de rentrer le serial.
Oui quand je parle de bp, c'est Olly qui break automatiquement lors de l’exception, ça n'est pas un bp que tu places manuellement. Normalement ça devrait break dès que tu amènes le curseur au dessus de la fenêtre de saisie du serial.
Quand je parle du user code, je fait référence au module principal.
Pour trouver le call, quand Olly a break suite à l'exception, tu regarde dans la pile le premier appel depuis le module principal puis follow in dissassembler, ça t'amène sur le call en question, ou sur l'instruction d'après. Il s'agit d'un appel à la fonction __vbaVarLateMemSt. Une fois nop, tu devrais pouvoir entrer le serial sans problème et debug comme tu le souhaites.

Image :aie: