Analyseur d'executables vb6 (beta release)

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

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.