Décompilation leçons : form lister pour .exe vb6

Soyez le premier à donner votre avis sur cette source.

Vue 5 814 fois - Téléchargée 710 fois

Description

Bon je sais que sa marhce sur les .exe VB6 mais pour VB5 je sais pas, pour le moment sa fait juste faire un liste des form

Source / Exemple :


'DANS LE ZIP, Mais attention il contient du code inutile, pour le moment je fais que des test le prog est pas officiel

BIENTOT LES CONTROL LISTER !!!!!!!!!!!

Conclusion :


J'ai été aider pas la documentation que HexMan a laisser sur la décompilation

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
224
Date d'inscription
samedi 25 janvier 2003
Statut
Membre
Dernière intervention
17 juin 2006

(erf je vais me faire des ennemis...) voilà de quoi récupérer des infos PE :
D'ABORD le MZ

Public Const MZ_SIGNATURE As Long = &H5A4D

Public Type MZ_HEADER
Signature As Integer ' MZ
BytesOnLastPage As Integer ' le nombre d'octets de la dernière page
NumberOfPages As Integer ' le nombre de pages
Relocations As Integer ' relocations
HeaderSize As Integer ' taille du header en paragraphes
MinAlloc As Integer ' minimum de paragraphes requis
MaxAlloc As Integer ' maximum de paragraphes requis
InitSS As Integer ' valeur SS initiale
InitSP As Integer ' valeur SP initiale
CheckSum As Integer ' CheckSum (?)
InitIP As Integer ' valeur IP initiale
InitCS As Integer ' valeur CS initiale
RelocAddress As Integer ' adresse (dans le fichier) de la table de relocations
Overlay As Integer ' Overlay
Reserved1(3) As Integer ' réservé
OemID As Integer ' identificateur OEM
OemInfo As Integer ' information OEM
Reserved2(9) As Integer ' réservé
NextHeaderAddress As Long ' adresse (fichier) du nouveau header de l'exécutable
End Type





ET LE PE :
' ======================================================================================== _
CONSTANTES
' ========================================================================================

Public Const PE_SIGNATURE As Long = &H4550 ' Signature d'un fichier PE

'constantes possibles pour Machine dans PE_HEADER
Public Const PE_HEADER_MACHINE_NONE As Long = &H0& 'Toutes les machines ?
Public Const PE_HEADER_MACHINE_I860 As Long = &H14D 'Intel i860
Public Const PE_HEADER_MACHINE_I386 As Long = &H14C 'Intel i386
Public Const PE_HEADER_MACHINE_I486 As Long = &H14D 'Intel i486
Public Const PE_HEADER_MACHINE_I586 As Long = &H14E 'Intel Pentium
Public Const PE_HEADER_MACHINE_MR3000B As Long = &H160 'MIPS R3000, big endian
Public Const PE_HEADER_MACHINE_MR3000L As Long = &H162 'MIPS R3000, little endian
Public Const PE_HEADER_MACHINE_MR4000L As Long = &H166 'MIPS R4000, little endian
Public Const PE_HEADER_MACHINE_MR10000L As Long = &H166 'MIPS R4000, little endian
Public Const PE_HEADER_MACHINE_DAAXP As Long = &H183 'DEC Alpha AXP

'valeurs possibles pour Characteristics dans PE_HEADER
Public Const PE_HEADER_CHRSTCS_NORELOC As Long = &H1 ' Pas de relocation
Public Const PE_HEADER_CHRSTCS_EXECUTABLE As Long = &H2 ' le fichier est un exécutable (pas objet ni librairie)
Public Const PE_HEADER_CHRSTCS_DLL As Long = &H2000 ' le fichier est une DLL

'valeurs possibles pour Magic dans PE_OPTIONALHEADER
Public Const PE_OPTHEADER_MAGIC_PE32 As Long = &H10B ' PE32
Public Const PE_OPTHEADER_MAGIC_PE32Plus As Long = &H20B ' PE32+
Public Const PE_OPTHEADER_MAGIC_ROM As Long = &H107 ' ROM

'valeurs de SubSystem possibles dans PE_OPTIONALHEADER
Public Const PE_OPTHEADER_SUBSYS_UNKNOWN As Integer = 0 ' Inconnu
Public Const PE_OPTHEADER_SUBSYS_NATIVE As Integer = 1 ' Natif (pas besoin de sous-système)
Public Const PE_OPTHEADER_SUBSYS_WINDOWSGUI As Integer = 2 ' Interface Windows
Public Const PE_OPTHEADER_SUBSYS_WINDOWSC As Integer = 3 ' Console windows
Public Const PE_OPTHEADER_SUBSYS_OS2C As Integer = 5 ' Console OS/2
Public Const PE_OPTHEADER_SUBSYS_POSIXC As Integer = 7 ' Console Posix
Public Const PE_OPTHEADER_SUBSYS_NATIVEWINDOWS As Integer = 8 ' Driver natif Win9x
Public Const PE_OPTHEADER_SUBSYS_WINDOWSCEGUI As Integer = 9 ' Windows CE

'valeurs possibles pour DllCharacteristics dans PE_OPTIONALHEADER
Public Const PE_OPTHEADER_DLLCHRSTCS_DLLLOAD As Long = &H1 ' quand la Dll est chargée
Public Const PE_OPTHEADER_DLLCHRSTCS_THREADTERMINATE As Long = &H2 ' quand le thread est déchargé
Public Const PE_OPTHEADER_DLLCHRSTCS_THREADSTARTS As Long = &H4 ' quand le thread est chargé
Public Const PE_OPTHEADER_DLLCHRSTCS_DLLEXIT As Long = &H8 ' quand la Dll est déchargée


'valeurs AnsiName possibles dans PE_SECTIONTABLE
Public Const PE_SECTIONTABLE_ANSINAME_EXECUTABLECODE As String = ".text" ' Code exécutable du programme
Public Const PE_SECTIONTABLE_ANSINAME_CODE As String = ".code" ' Code exécutable du programme
Public Const PE_SECTIONTABLE_ANSINAME_CODE2 As String = "CODE" ' Code exécutable du programme
Public Const PE_SECTIONTABLE_ANSINAME_DATA1 As String = ".data" ' Variables globales ou de programme
Public Const PE_SECTIONTABLE_ANSINAME_DATA2 As String = ".rdata" ' Données en lecture seule (constantes)
Public Const PE_SECTIONTABLE_ANSINAME_DATA3 As String = ".bss" ' Données non initialisées (variables locales ?)
Public Const PE_SECTIONTABLE_ANSINAME_DATA4 As String = "DATA" ' Variables globales ou de programme
Public Const PE_SECTIONTABLE_ANSINAME_DATA5 As String = "BSS" ' Données non initialisées (variables locales ?)
Public Const PE_SECTIONTABLE_ANSINAME_RELOC As String = ".reloc" ' Relocations
Public Const PE_SECTIONTABLE_ANSINAME_RESOURCE As String = ".rsrc" ' Ressources
Public Const PE_SECTIONTABLE_ANSINAME_EXPORT As String = ".edata" ' Exports
Public Const PE_SECTIONTABLE_ANSINAME_IMPORT As String = ".idata" ' Imports
Public Const PE_SECTIONTABLE_ANSINAME_DEBUG As String = ".debug" ' Informations de debug
Public Const PE_SECTIONTABLE_ANSINAME_TLS As String = ".tls" ' Stockage Local De Fil

'valeurs Characteristics dans PE_SECTIONTABLE
Public Const PE_SECTIONTABLE_CHRSTCS_TYPE_NO_PAD As Long = &H8 ' Réservé
Public Const PE_SECTIONTABLE_CHRSTCS_CNT_CODE As Long = &H20 ' Contient du code
Public Const PE_SECTIONTABLE_CHRSTCS_CNT_INITIALIZED_DATA As Long = &H40 ' Contient des données initialisées
Public Const PE_SECTIONTABLE_CHRSTCS_CNT_UNINITIALIZED_DATA As Long = &H80 ' Contient des données non initialisées
Public Const PE_SECTIONTABLE_CHRSTCS_LNK_OTHER As Long = &H100 ' Reservé
Public Const PE_SECTIONTABLE_CHRSTCS_LNK_INFO As Long = &H200 ' Contient des commentaires
Public Const PE_SECTIONTABLE_CHRSTCS_LNK_REMOVE As Long = &H800 ' Ne fait pas partie de l'image
Public Const PE_SECTIONTABLE_CHRSTCS_LNK_COMDAT As Long = &H1000 ' Contient du "comdat"
Public Const PE_SECTIONTABLE_CHRSTCS_NO_DEFER_SPEC_EXC As Long = &H4000 ' ? Reset speculative exceptions handling
Public Const PE_SECTIONTABLE_CHRSTCS_GPREL As Long = &H8000 ' ? Section content can be accessed to GP
Public Const PE_SECTIONTABLE_CHRSTCS_MEM_FARDATA As Long = &H8000 ' ?
Public Const PE_SECTIONTABLE_CHRSTCS_MEM_PURGEABLE As Long = &H20000 ' ?
Public Const PE_SECTIONTABLE_CHRSTCS_MEM_16BIT As Long = &H20000 ' ?
Public Const PE_SECTIONTABLE_CHRSTCS_MEM_LOCKED As Long = &H40000 ' ?
Public Const PE_SECTIONTABLE_CHRSTCS_MEM_PRELOAD As Long = &H80000 ' ?
Public Const PE_SECTIONTABLE_CHRSTCS_ALIGN_1BYTES As Long = &H100000 ' Ces constantes contienent des alignements
Public Const PE_SECTIONTABLE_CHRSTCS_ALIGN_2BYTES As Long = &H200000
Public Const PE_SECTIONTABLE_CHRSTCS_ALIGN_4BYTES As Long = &H300000
Public Const PE_SECTIONTABLE_CHRSTCS_ALIGN_8BYTES As Long = &H400000
Public Const PE_SECTIONTABLE_CHRSTCS_ALIGN_16BYTES As Long = &H500000 ' (par défaut si aucun).
Public Const PE_SECTIONTABLE_CHRSTCS_ALIGN_32BYTES As Long = &H600000
Public Const PE_SECTIONTABLE_CHRSTCS_ALIGN_64BYTES As Long = &H700000
Public Const PE_SECTIONTABLE_CHRSTCS_ALIGN_128BYTES As Long = &H800000
Public Const PE_SECTIONTABLE_CHRSTCS_ALIGN_256BYTES As Long = &H900000
Public Const PE_SECTIONTABLE_CHRSTCS_ALIGN_512BYTES As Long = &HA00000
Public Const PE_SECTIONTABLE_CHRSTCS_ALIGN_1024BYTES As Long = &HB00000
Public Const PE_SECTIONTABLE_CHRSTCS_ALIGN_2048BYTES As Long = &HC00000
Public Const PE_SECTIONTABLE_CHRSTCS_ALIGN_4096BYTES As Long = &HD00000
Public Const PE_SECTIONTABLE_CHRSTCS_ALIGN_8192BYTES As Long = &HE00000
Public Const PE_SECTIONTABLE_CHRSTCS_LNK_NRELOC_OVFL As Long = &H1000000 ' Contient des relocations étendues
Public Const PE_SECTIONTABLE_CHRSTCS_MEM_DISCARDABLE As Long = &H2000000 ' Section peut être ignorée
Public Const PE_SECTIONTABLE_CHRSTCS_MEM_NOT_CACHED As Long = &H4000000 ' Section non cachable
Public Const PE_SECTIONTABLE_CHRSTCS_MEM_NOT_PAGED As Long = &H8000000 ' Section non non pageable
Public Const PE_SECTIONTABLE_CHRSTCS_MEM_SHARED As Long = &H10000000 ' Section partageable
Public Const PE_SECTIONTABLE_CHRSTCS_MEM_EXECUTE As Long = &H20000000 ' Section executable
Public Const PE_SECTIONTABLE_CHRSTCS_MEM_READ As Long = &H40000000 ' Section lisible
Public Const PE_SECTIONTABLE_CHRSTCS_MEM_WRITE As Long = &H80000000 ' Section inscriptible

' ======================================================================================== _
TYPES DE DONNEES
' ========================================================================================

'Header du fichier PE
Public Type PE_HEADER
Signature As Long ' = PE_SIGNATURE
Machine As Integer ' le CPU
NumberOfSections As Integer ' Le nombre de sections du fichier
TimeDateStamp As Long ' Nombre de secondes entre le 31 décembre 1969 à 16h00 et la création du fichier
PointerToSymbolTable As Long ' l'offset de la table des symbols COFF (seulement fichiers OBJ et fichiers avec debug)
NumberOfSymbols As Long ' Nombre de symbols dans la table COFF
SizeOfOptionalHeader As Integer ' taille du header optional (juste après ce header)
Characteristics As Integer ' Diverses informations sur le fichier
End Type

'Header optionel (pourtant toujours présent) du fichier PE
Public Type PE_OPTIONALHEADER
Magic As Integer ' toujours égal à 267
MajorLinkerVersion As Byte ' version(M) du "Linker" qui a produit le fichier
MinorLinkerVersion As Byte ' version(m) du "Linker" qui a produit le fichier
SizeOfCode As Long ' Le total de la taille arrondie des sections de code
SizeOfInitData As Long ' Taille totale de toutes les sections composées de données initialisées (?)
SizeOfUninitData As Long ' ?? : The size of the sections that the loader commits space for in the virtual address space, but that don't take up any space in the disk file
AddressOfEntryPoint As Long ' Le point d'entrée de l'exécution du programme
BaseOfCode As Long ' le RVA d'où le code du fichier commence
BaseOfData As Long ' le RVA d'où les données du fichier commencent
ImageBase As Long ' l'endroit de la mémoire ou le programme doit être mappé
SectionAlignment As Long ' quand le fichier est mappé, chaque section est dans une adresse virtuelle qui est un multiple de cette valeur
FileAlignment As Long ' dans le fichier les données Raw dans chaque section sont un multiple de cette valeur
MajorOSVersion As Integer ' la version(M) mininimum de l'OS pour cet exécutable
MinorOSVersion As Integer ' la version(m) mininimum de l'OS pour cet exécutable
MajorImageVersion As Integer ' Version(M) de l'exécutable
MinorImageVersion As Integer ' Version(m) de l'exécutable
MajorSubsystemVersion As Integer ' Version(M) minimum du sous-sytème pour lancer l'exécutable
MinorSubsystemVersion As Integer ' Version(m) minimum du sous-sytème pour lancer l'exécutable
Win32VersionValue As Long ' ?
SizeOfImage As Long ' Taille de toutes les sections combinées
SizeOfHeaders As Long ' Taille du PEHeader et de la table des sections
CheckSum As Long ' CheckSum CRC
SubSystem As Integer ' le type de sous-système que l'exécutable use pour son interface
DllCharacteristics As Integer ' Flag d'informations sur l'initialisation d'une DLL (ignoré, toujours 0)
SizeOfStackReserve As Long ' Mémoire virtuelle à réserver pour le stack du thread initial
SizeOfStackCommit As Long ' mémoire virtuelle initialiement donnée pour le stack du thread initial
SizeOfHeapReserve As Long ' Mémoire virtuelle à réserver pour le heap du processus initial
SizeOfHeapCommit As Long ' mémoire virtuelle initialiement donnée pour le heap du processus initial
LoaderFlags As Long ' en rapport avec le débug
NumberOfDataDirectories As Long ' le nombre d'entrées dans le tableau DataDirectory
End Type

Public Type PE_DATADIRECTORY
DirectoryVA As Long ' Adresse virtuelle du dossier
DirectorySize As Long ' Taille du dossier
End Type

'tableau des sections
Public Type PE_SECTIONTABLE
ANSIName As String * 8 ' Nom de la section (peut être vide)
VirtualSize As Long ' Taille de la section quand elle est mappée dans la mémoire (doit être un multiple de 4096)
VirtualAddress As Long ' le RVA ou il doit être chargée dans la mémoire
SizeOfRawData As Long ' La taille de la section dans l'exécutable (doit être un multiple de 512)
PointerToRawData As Long ' offset dans le fichier qui point vers cette section
PointerToRelocations As Long ' dans l'exécutable cette valeur n'a pas de sens
PointerToLineNumbers As Long ' Offset dans le fichier vers la table des numéros de ligne. utilisé pour le débug
NumberOfRelocations As Integer ' dans l'exécutable cette valeur n'a pas de sens
NumberOfLineNumbers As Integer ' nombre de numéros de ligne. utilisé pour le débug
Characteristics As Long ' le type de données dans cette section (code, data, import, reloc...)
End Type

'dossier de relocation
Public Type PE_DIRECTORY_RELOCATION
VAAndSize As Long 'contient l'adresse virtuelle et la taille (4 | 12)
End Type

'dossier d'export
Public Type PE_DIRECTORY_EXPORT
RVAFunctionNameList As Long ' RVA vers une liste de pointeur. chacun point vers un nom de fonction.
TimeDateStamp As Long ' le TimeStamp qui indique quand le fichier a été créé
MajorVersion As Integer ' Version(M) de la fonction
MinorVersion As Integer ' Version(m) de la fonction
ExportName As Long ' RVA vers le nom du dossier
ExportBase As Long ' ??
NumberOfFunctions As Long ' nombre de fonctions
NumberOfNames As Long ' nombre de noms
AddressOfFunctions As Long ' pointeur vers liste des fonctions
AddressOfNames As Long ' pointeur vers liste des noms
AddressOfNameOrdinals As Long ' pointeur vers liste des noms ordinaux
End Type

'dossier d'import
Public Type PE_DIRECTORY_IMPORT
RVAFunctionNameList As Long ' RVA vers une liste de pointeur. chacun point vers un nom de fonction.
TimeDateStamp As Long ' le TimeStamp qui indique quand le fichier a été créé
ForwarderChain As Long ' indique une référece de la dll vers une autre dll
PointerToName As Long ' RVA vers la chaine terminée par un NULL qui contient le nom de la DLL importée
FirstThunk As Long ' RVA vers une liste de pointeurs qui pointent vers des noms de fonctions
End Type

'dossier de ressource
Public Type PE_DIRECTORY_RESOURCE
Characteristics As Long ' Flag
TimeDateStamp As Long ' le TimeStamp
MajorVersion As Integer ' version(M) de la ressource
MinorVersion As Integer ' version(m) de la ressource
NumberOfNamedEntries As Integer ' nombre d'entrées nommées
NumberOfIdEntries As Integer ' nombre d'identificateurs d'entrées
End Type

'entrée de ressource
Public Type PE_DIRECTORY_RESOURCEENTRY
PointerToName As Long ' pointeur vers le nom
PointerToResData As Long ' pointeur vers une serction RESOURCEDATA
End Type

'données de ressource
Public Type PE_DIRECTORY_RESOURCEDATA
PointerToData As Long ' pointeur vers les données
DataSize As Long ' taille des données
CodePage As Long ' ?
Reserved As Long ' réservé
End Type

'dossier de débug
Public Type PE_DIRECTORY_DEBUG
Characteristics As Long ' Flag
TimeDateStamp As Long ' le TimeStamp
MajorVersion As Integer ' version(M) du debug
MinorVersion As Integer ' version(m) du debug
DebugType As Long ' ?
DataSize As Long ' taille du debug
AddressOfRawData As Long ' ?
PointerToRawData As Long ' ?
End Type
Messages postés
224
Date d'inscription
samedi 25 janvier 2003
Statut
Membre
Dernière intervention
17 juin 2006

c'est un peu codé comme un porcasse..... c dla récup de données vraiment à l'arrache ça ! pourtant je peux vous dire que les infos VB sont placées a un endroit bien précis du fichier EXE... renseignez-vous sur les fichiers PE et commencez par là...
Messages postés
28
Date d'inscription
mercredi 21 novembre 2001
Statut
Membre
Dernière intervention
12 décembre 2007

je vosi ke ça bosse dure eet k'il y a des adeptes, c bin tout ça ça va faire rager les coincer du cul de vbfrance avec leurs sources ki valent de l'or ;)
pour ceux ke ça intéresse je v bientot poster une ocx de decompilation objet, donc en gros le moteur de recherche objet sera tout fait , plus k'a l'insérer dans vois projet et amusez vous les mecs ;)
au fait merci nixou pour le sponsoring de message ;)
HEXMAN
Messages postés
65
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
11 avril 2009

Excellent Mémère, j'adore tes commentaires, surtout quand y sont terriblement adaptés à la question comme ici. ;-)
Messages postés
363
Date d'inscription
jeudi 20 décembre 2001
Statut
Membre
Dernière intervention
25 août 2003

mouarf !!! ok memere !!!! fo arreter la fumette grand !!! ;-p

A++ et bonne prog !
Afficher les 10 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.