Désassembleur
Le désassembleur PE Explorer est conçu pour être facile à utiliser par rapport à d'autres désassembleurs. Dans cette optique, certaines fonctionnalités présentes dans d'autres produits ont été exclues afin de simplifier, accélérer et rendre l'utilisation aisée du processus.
Le désassembleur (Ctrl + M, Tools | Disassembler) s'ouvre dans sa propre fenêtre et se superpose à l'interface principale, qu'il est possible de réafficher à tout moment.
Le désassembleur PE Explorer suppose que certaines modifications manuelles du code reproduit seront nécessaires. Pour faciliter la saisie manuelle supplémentaire, le désassembleur utilise toutefois un algorithme qualitatif conçu pour reconstruire le code source en langage d'assemblage des fichiers cibles avec le plus haut degré de précision possible. Tout aussi puissant que les désassembleurs spécialisés plus coûteux, PE Explorer met l'accent sur la facilité d'utilisation, la clarté et la navigation. Nous avons simplement créé un bon désassembleur à un prix raisonnable. Il vous fera gagner des heures de temps et il est facile à utiliser !
Le désassembleur ouvre une deuxième fenêtre. Avant le processus de désassemblage, la fenêtre des Options affiche les options suivantes :
Les options du désassembleur (View | Disassembler Options) fournissent une liste d'ensembles d'instructions à désassembler. L'option Auto Rescan cochée et la valeur par défaut Auto Rescan count sont suffisantes, mais pour les binaires complexes, il peut être nécessaire d'effectuer davantage de passages. Le nombre d'opcodes affichés peut être réglé sur une valeur par défaut.
Une fois que vous avez appuyé sur Start Now, le processus de désassemblage commence en identifiant le compilateur utilisé pour créer le fichier cible. La connaissance préalable de la façon dont un compilateur assemble les fichiers améliore les suppositions nécessaires pour déterminer les schémas d'allocation de données dans le fichier cible. De plus, avec cette information, il est possible d'identifier la plupart des objets, procédures, variables, types du fichier avec un très haut degré de précision.
Pour le moment, seuls divers compilateurs Borland sont identifiés. Cependant, le désassembleur décompilera également les fichiers créés avec d'autres compilateurs. À l'heure actuelle, il affichera uniquement les éléments internes spécifiquement identifiés pour les fichiers compilés avec les compilateurs Borland/Embarcadero. Pendant le processus de désassemblage, la fenêtre Processing Info affiche les informations suivantes :
Le désassemblage de fichiers d'une taille supérieure à 1 Mo peut prendre plusieurs minutes en fonction des capacités de votre système. En général, chaque octet d'un fichier cible nécessite 40 octets de mémoire pour le traitement. Par exemple, un fichier de 1 Mo nécessiterait 40 Mo de mémoire de traitement, un fichier de 2 Mo nécessiterait 80 Mo, et ainsi de suite.
La fenêtre du désassembleur apparaît lorsque le processus de désassemblage est terminé. La vue principale du désassemblage se trouve en haut à gauche. Une fonctionnalité intéressante dans cette vue est la possibilité d'ajuster immédiatement l'espace entre chaque ligne d'assemblage (Ins et Del) ainsi que le nombre d'opcodes par ligne (Shift + Ins et Shift + Del).
Après que tout le traitement a été terminé, le désassembleur affiche le code source résultant du fichier cible. Cette sortie peut être modifiée manuellement ou enregistrée sur le disque pour référence ultérieure.
La navigation est vraiment simple. Les adresses de branchement peuvent être parcourues en sélectionnant la ligne correspondante et en appuyant sur 'Enter'. Pour les instructions avec une seconde adresse de destination d'opérande, appuyez sur 'Ctrl + Enter'. Pour revenir à une adresse précédente, appuyez sur 'Esc', et pour visiter une adresse particulière, vous devez appuyer sur 'Ctrl + G' et taper l'adresse au format hexadécimal.
Les sous-routines qui pourraient avoir des références peuvent être répertoriées dans une fenêtre contextuelle en sélectionnant l'adresse de début de la procédure et en appuyant sur 'R' (Search | References). La liste peut ensuite être parcourue en double-cliquant sur chaque adresse répertoriée.
La "Liste des noms" à droite fournit une liste d'adresses étiquetées (y compris les destinations de branchement conditionnel et inconditionnel, les prologues de fonction, les données nommées et les références de chaînes) par le désassembleur, avec le point d'entrée clairement indiqué. Les étiquettes peuvent être renommées en appuyant sur 'N' (Edit | Rename Label).
Les onglets inférieurs à gauche, "View 1", "View 2", "View 3" et "View 4" (F6, F7, F8 et F9), offrent des vues de désassemblage persistantes qui sont indépendantes de la vue principale et peuvent être échangées.
L'onglet "Strings" fournit une liste de chaînes détectées ; vous pouvez manipuler davantage la détection des chaînes en utilisant la barre d'outils, en utilisant les éléments de menu (Edit | Mark as String/Pascal String/Pascal Long String/Unicode), ou en appuyant sur 'S', 'A', 'L' ou 'U' pour les activer chacun.
La recherche à travers les chaînes au sein d'un fichier exécutable peut être une façon d'obtenir des indications sur la fonctionnalité d'un programme. Avec PE Explorer, vous pouvez essayer de repérer les chaînes présentes dans le programme, telles que les messages ou les connexions à des URL, etc. Lorsque vous recherchez des indices sous forme de texte, la sortie des chaînes trouvées dans l'exécutable vous donne une bonne connaissance des fonctions et sous-routines appelées par ce binaire.
Le code peut être marqué manuellement dans la liste d'assemblage en appuyant sur 'C'. Les mots double (dwords) et les offsets peuvent être marqués en appuyant respectivement sur 'D' et 'O'.
Les commentaires peuvent être saisis en appuyant sur le point-virgule (;).
L'onglet "Unprocessed data" affiche des blocs de données qui ne sont pas liés à une procédure.
Bien que la modélisation personnalisée effectuée par le désassembleur PE Explorer augmente le temps de traitement, le résultat est une réduction significative des erreurs de traduction des opcodes. Nous pensons que vous serez d'accord pour dire que le temps supplémentaire nécessaire pour atteindre ce niveau élevé de précision est justement compensé par le temps économisé lors de la correction manuelle de la sortie.
Limitations connues
À l'heure actuelle, les fonctionnalités de l'implémentation du désassemblage ne permettent pas de produire un code source pouvant être recompilé tel quel. Les sections de fichier dont la taille physique est égale à 0 et dont les données se trouvent en dehors des limites de la taille physique de la section ne peuvent pas être traduites avec précision. Le désassembleur marque ces éléments [DB Count DUP (??)] et ne place pas d'étiquettes à l'intérieur de ces zones. Ce type de section se produit lorsque les programmeurs demandent souvent de la mémoire, puis ne la gèrent pas correctement, comptant entièrement sur le système d'exploitation ou le compilateur pour libérer les ressources mémoire. Par exemple (en Pascal) :
Var MyData: Array [WORD] of Byte;
Dans ce cas, l'espace de stockage pour la variable MyData ne sera pas physiquement alloué dans la section de données, mais la taille virtuelle de la section de données la contenant sera augmentée d'une valeur WORD. Il arrive également que les variables déclarées de cette manière entraînent la perte de mégaoctets d'espace virtuel pour la section de données contenant ces variables.
Actuellement, en raison des caractéristiques des structures de données internes de PE Explorer et des raisons mentionnées ci-dessus, les allocations de mémoire mal gérées sont exclues du désassemblage. Sinon, les dépenses de mémoire nécessaires pour traiter les fichiers cibles pourraient croître de manière astronomique. Actuellement, chaque octet de données entrantes nécessite 30 à 40 octets de mémoire pour être traité.
Commencez avec un essai gratuit de 30 jours
Nous proposons une version d’évaluation gratuite: essayez ce logiciel sans aucun risque.
PE Explorer fonctionne sur toutes les versions de Windows de 2000 à XP, Vista, 7, 8, 10 et 11.