Analyseur d'executables vb6 (beta release)

Soyez le premier à donner votre avis sur cette source.

Vue 42 357 fois - Téléchargée 5 689 fois

Description

le code respecte le standard exécutable PE , je l'ai spécialement réglé sur les programmes compilé vb6.

Ne fonctionne PAS avec un .exe vb4 ou vb5 ... bref, ce code ne devrai pas planter avec un exe vb6, pour le reste je garanti rien.

Au final, ce prog servira a comparer un même exécutable compilé par vb6 de différentes manières, ou après quelques modifications, pour voir si "asm parlant" le résultat est optimal.

BETA VERSION !! et oui, c'est noel (lol) ! cette version proposée est très proche de l'objectif initiale de ce projet. Il est maintenant possible d'analyser les algorithmes... surtout de les retrouver facilement ! Je passe en "beta" version puisque maintenant il sera question d'enrichir et de débugger. Le core du programme est pratiquement fini.

Pour les habitués, voir l'historique des mises à jours.

MODE D'EMPLOI
Le fichier du projet est : "Projet1.vbp" (les autres sont pour le debug)
1/ démarrer le prog
2/ Menu "Main" puis "Ouvrir un exécutable" et cherchez un exe vb6
3/ si il est mentionné "exe validé par header", choisissez menu "Main" puis "Analyser maintenant!"
4/ Deux nouveaux menus sont proposés : (5) "Analyse" et (6) "Exportation des résultats". "Analyse" permet d'accéder à mes interfaces présentant les résultats, tandis que "Exportation..." génère des fichiers textes avec ces résultats. Le format de ces fichiers textes est spécialement étudié pour être importé sous excel ou lu par un programme tierce partie, ce qui vous permet de créer des utilitaires d'analyses qui n'existent pas dans mon projet!
5-1/ - "Information VB" vous indique sommairement ce que contient l'exe (dont la taille du code compilé, subs et API appelé)
5-2/ - "Rapport hiérarchisé" est la "jolie interface" (treeview) plus détaillé que le rapport texte. vous avez également accès au code compilé qui est désassemblé à la demande
5-3/ - "Listing désassemblé" va désassembler la partie compilé du programme et interpréter au maximum le code (sub appelé, api appelé, strings, objets, etc...)
5-4/ - "Aperçu en hexadécimal" est une simple visualisation en hexa du fichier .exe . Il peut être utile pour tracer les indications "va", "offset" et autres jump/push/call du code compilé désassemblé.
6-1/ "Rapport détaillé de l'analyse" crée un fichier texte avec la fiche technique du fichier exe vb
6-2/ "Informations pour décompilation" crée un fichier texte les informations nécessaires pour faire un désassemblage sans utilisé mon projet. Pour ceux qui veulent faire leurs propres désassembleur/décompilateur, vous avez là une excellente base!
6-3/ "Désassemblage du code compilé" crée un fichier texte avec le listing désassemblé tel que vu en 5-3. Le fichier généré peut ainsi servir de base pour étudier un fichier exe vb6. Idem, bonne base pour ceux qui souhaite créer un utilitaire qui se concentre sur l'analyse du code assembleur
6-4/ "Binaire des feuilles/objets/modules" crée un fichier texte avec les informations sur l'interface du fichier exe vb6. Est inclus un hex dump de la propriété des objets, pour ceux qui se sentent l'envie de faire un VbReFormer à la Warning :) (enfin, juste un viewer :p, pas un éditeur de propriétés d'objets comme fait VbReFormer 4.x -pub gratos!- )
Ces fichiers textes sont lisible avec les méthodes Input #fp, a, b, c et Line Input # de VB6.

EXEMPLE D'ANALYSE :
- créez un .exe d'un projet. Eventuellement pour tester précisément un algorithme, créez un projet avec différentes versions de cette algorithme
- pour retrouver facilement le début de l'algo, mettez des "indicateur" tel que bidon$ = "debut" ... en effet le désassemblage retrouve facilement l'appel à une string. (un dim i as long:i = &H12345678 est un bon marqueur aussi, quoique plus discret : asm = push 12345678h)
- lancez le vb6analyseur et lancez l'analyse (étape 1 à 6). Recherchez dans le code désassemblé le début de votre algorithme (via le marqueur ou via le numéro de sub)

Un algo peux être considéré comme optimale lorsqu'il a presque aucun appel à une API et que le nombre d'instruction est réduit.

Source / Exemple :


'zip de 258Ko (les docs intégrés ont été compressé en rar, sinon zip trop lourd)

'en plein dev (les résultats sont encore incomplet)

'il n'y a pas de partie du code source interessante a placer ici...

'en cours : débogage du désassembleur
'en cours : amélioration de l'interpréteur
'en cours : identifier les appels aux objets (contrôles) pour l'interpréteur
'a faire : récupération d'informations dans les descripteurs de Forms...
'prévu : coloration syntaxique
'prévu : possibilité de patché le code ASM
'prévu : simulateur...

'J'utilise a présent l'excellent PeReader pour corriger mon désassembleur et corriger différentes erreurs d'analyse.
'Ce programme est distribué sous GNU/GPL sur http://sourceforge.net/projects/perdr

Conclusion :


Loin d'être de qualité "production", il s'agit d'un tool vraiment pour ceux qui bidouille ou cherche de l'optimisation dans les moindres recoins, pour un CODE COMPILE !
Les personnes qui cherchent un décompilateur seront déçu : non, ce programme ne reconstitue pas le code.

L'interface n'est *pas* aussi intuitive que la plupart des programmes.
Prenez bien soin de fermer toutes les fenêtres autres que la principale si vous voulez ouvrir/analyser un autre executable vb6 ! Il est possible d'ouvrir plusieurs exe compilé les uns après les autres, mais le code ne gère que le dernier.

Si un pro-asm comme EBArtSoft ou shaoni pouvai me laisser des remarques sur le format PE, ça serai sympa :)

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
37
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
3 novembre 2008
1
très bien fai je me suis servi pour trouver la password d'un fichier exe (vb) que javais depuis longtemps pi sa a marcher #1 !!
Messages postés
419
Date d'inscription
lundi 30 août 2004
Statut
Membre
Dernière intervention
28 janvier 2008

perso j'adore et je dit chapeau ^^ j'espere que tu continueras bien cette source car apparement beaucoup de gens en attendent enormement sinon moi j'aime bien meme si je ne comprend pas completement le code ^^ sinon un ptit 9 s'impose (car on ne peut jamais atteindre la perfection comme on dit une oeuvre n'est jamais achevee mais juste abandonnee ;-)) allais bonne continuation ^^
Messages postés
161
Date d'inscription
mardi 19 juin 2001
Statut
Membre
Dernière intervention
10 avril 2007
1
Excellent !!!
Tu viens de me retirer une epine du pied... a savoir comment debugger un programme sans les sources (perdues) :(
StrRef => de la balle :D

Ca vaudrait le coup de packager un peu mieux le logiciel pour le rendre plus pro et le distribuer ;)

Tres bonne continuation a toi
Messages postés
516
Date d'inscription
samedi 3 février 2001
Statut
Modérateur
Dernière intervention
24 octobre 2006
1
lol a mon avis c'est plutot VBReFormer :) faut que tu le vois en actions... tu as msn messenger ? Si oui envoi moi un MP.
Messages postés
248
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
19 décembre 2008

le truc le plus avancé qui soit un soft, a ma connaissance, c'est vbde : il arrive parfois a recréer une (petite) partie du code -le compilo vb6 a tendance a toujours faire la même chose- Il retrouve et associe les subs aux objets (genre command1_click, command1_mousedown) -ce que j'essaye en ce moment de faire- ...
Et ce truc date de 2002...
Afficher les 43 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.