REC 2.1 – Reverse Engineering Compiler


Original: http://www.backerstreet.com/rec/old_rec/rec.htm

(disponibile anche in italiano)

REC est un compilateur d’ingénierie inverse portable, ou décompilation.

Il lit un fichier exécutable, et tente de produire une représentation de type C du code et des données utilisées pour construire le fichier exécutable.
Il est portable car il a été conçu pour lire les fichiers produits pour de nombreuses cibles différentes, et il a été compilé sur plusieurs systèmes hôtes.

RecStudio offre une interface utilisateur moderne pour le mode interactif de REC.
Une version en ligne de commande est toujours disponible pour les hôtes Linux et Solaris.

 

Après quatre années iatus dans le domaine des interfaces graphiques, je suis enfin de retour au travail sur REC.
Version 2 introduit RecStudio, une nouvelle interface utilisateur pour la décompilation interactif.
Initialement, la nouvelle interface utilisateur est disponible uniquement sur ​​les systèmes Windows. Utilisez vin ou une autre bibliothèque portage pour exécuter REC 2 sur Linux.
Un natif Linux, Solaris et MacOS X sera initialement limitée à la décompilation du lot grâce à des fichiers de projet.

Voir la page Version 2 pour une visite de cette nouvelle version REC.

Caractéristiques des versions 1.x

Voici quelques-unes des caractéristiques de REC:

  • Muticible: REC peut décompiler 386, 68k, PowerPC et MIPS R3000 programmes.
  • Multiformat: REC reconnaît les formats de fichiers suivants:
    • ELF (System V Rel. 4, par exemple Linux, Solaris, etc)
    • COFF (System V Rel. 3.x, par exemple SCO)
    • PE (Win32 EXE et DLL pour Microsoft Windows 95 et NT)
    • AOUT (dérivés BSD, par exemple SunOS 4.x)
    • Playstation PS-X (MIPS ciblent uniquement)
    • Données binaires brutes (via .cmd)
  • Multi-hôtes: REC est disponible pour Linux 3.0 (i386), Windows 95 et SunOS 4.1.4.
  • Prise en charge de haut niveau des informations symboliques de COFF ELF + STAB, AOUT + STAB.
  • Interaction de l’utilisateur évolutive: de tout mode mode interactif plein écran comme un navigateur lot.
  • Mode serveur HTTP permet d’utiliser un navigateur HTML comme interface utilisateur

Sources REC ne sont pas dans le domaine public.

Bien que REC peut lire Win32 exécutable (aka PE) fichiers produits par Visual C ++ ou Visual Basic 5, il ya des limites à la sortie produite. REC va essayer d’utiliser toutes les informations est présent dans la table des symboles EXE. Si le fichier EXE a été compilé sans informations de débogage, si un fichier de base de données du programme (.PDB) ou Codeview (C7) Format a été utilisé, ou si l’option d’optimisation du compilateur a été activée, la sortie produite ne sera pas très bon. En outre, Basic 5 fichiers exécutables visuels sont un mélange de données de code de sous-programme et formulaire. Il est presque impossible pour REC pour déterminer qui est qui. La seule option est d’utiliser un fichier cmd et spécifier manuellement quelle région est le code et qui est la zone de données.

Dans la pratique, seuls les fichiers exécutables C produisent une sortie décompilé significative.

Finalement, je vais mettre en place un .PDB ou Codeview informations symboliques analyseur et des ressources de decompiler d’une fenêtre. Jusque-là, la seule chance pour obtenir une sortie symbolique de haute qualité est à décompiler les exécutables Linux qui ont été compilées avec l’option -gstabs, ou à fournir des informations supplémentaires symbolique par le symbole ‘:’ et ‘types: «directives d’un fichier de commande REC .

Références

Plusieurs autres decompilers sont disponibles auprès de diverses sources. Regardez ma page d’ingénierie inverse pour une liste.

De façon assez surprenante, l’architecture interne d’un décompileur est très semblable à celle d’un compilateur. Existe littérature de haute qualité pour les deux.
La page de décompilation a des liens et des documents relatifs à decompilers en général.

Certains concepts liés à l’analyse de code sont traités dans les pages de référence du débogueur.

Inverse thèse Techniques de Compilation de doctorat de Cristina Cifuentes décrit en détail la théorie et la mise en œuvre de la decompiler dcc pour 8086 des programmes DOS.

La page de Wotsit contient des liens vers les spécifications de formats de fichiers objets COFF et ELF comme.

Autres livres fondamentaux que j’ai utilisé au cours du développement sont:

  • “Les compilateurs – Principes, pratiques et outils”, Aho, Sethi, Ullman 1986 Addison-Wesley Publishing Co. ISBN 0-201-10088-6.
  • “Advanced Compiler Design et mise en œuvre”, Steven Muchnick, 1997 Morgan Kaufmann Publishers, ISBN 1-55860-320-4.
  • “Comment débogueurs travaillent – Algorithmique, structures de données, et de l’architecture», Jonathan Rosemberg 1996 John Wiley and Sons, ISBN 0-471-14966-7.

Les désassembleurs utilisés dans REC ont été prises à partir de diverses sources. Le Copyrite de fichier dans la distribution a une liste de crédits pour chacun des désassembleurs utilisés dans REC. Le reste du code a été écrit par moi-même au cours des 18 dernières années. Je vais continuer à améliorer REC dans mon temps libre, mais je ne peux pas garantir que je peux corriger des bugs ou ajouter de nouvelles fonctionnalités, des transformateurs, ou des hôtes.

Désistement

Il ya beaucoup de discussion sur la légalité de la décompilation. Outils de Decompiler sont disponibles pour une variété de plates-formes pour une longue période. Decompilers, avec d’autres outils tels que des débogueurs, des éditeurs binaires, désassembleurs etc ne doivent être utilisés lorsque le propriétaire d’un programme a le droit de désosser le programme.

Il a été établi par les tribunaux des États-Unis et dans d’autres pays qu’il est légal d’utiliser decompilers vertu de la clause de l’utilisation équitable du droit d’auteur.

Pour savoir quand il est légal d’utiliser un décompilateur, vous devriez lire le texte des cas suivants:

  • Sega Enterprises LTD c. Accolade, Inc.
  • Atari Games Corporation v. Nintendo of America, Inc.

A lire également une discussion sur la légalité de l’utilisation d’un émulateur pour exécuter un programme binaire sur un hôte différent.

Backer Street Software ne prend pas en charge l’utilisation d’outils d’ingénierie inverse à des fins illégales.


Copyright © 1997 – 2009 Logiciel Backer Street – Tous droits réservés.

Histoire:

2 Juillet 2007 Version 2.2: décompilation fixe des binaires brutes avec .cmd. Partiellement mise en œuvre inscrire propagation constante. De nombreuses erreurs de 68k fixes.
6 mai 2007 Version 2.1: Ajout de dos + option de lot à RecStudio; utiliser NDISASM pour i386; une meilleure isolation des données d’importation pour les fichiers binaires de Windows
20 septembre 2005 Version 2.0d: Plus de corrections de bugs pour 68k
6 septembre 2005 Version 2.0c: Support pour les fichiers Linux de et un support amélioré pour 68k
15 août 2005 Version 2.0b: Version de maintenance. Le support des binaires Watcom-compilés et les chaînes étendues
1 août 2005 Version 2.0a: Version de maintenance. Correction de plantages, amélioration de la qualité avec les exécutables Windows
30 mai 2005 Version 2.0: interface graphique de Windows et la décompilation interactive
19 septembre 2000 Version 1.6: Ajout du support pour SPARC.
16 mars 1999 Version 1.5d: détection ancien interrupteur (). Ajout du support pour big-endian MIPS.
6 mars 1999 Version 1.5: Support pour info import / export des fichiers Win95; remplacés désassembleurs GNU avec la source freeware; de nombreux accidents fixes
22 novembre 1998 Version 1.4a: boucle sans fin fixe quand la décompilation des fichiers Win95; fichiers prototypes de Windows ajoutée
15 novembre 1998 Version 1.4: Ajout de la fonction de navigateur en mode interactif, et la page HTML génération
30 juillet 1998 Version 1.3b: Entretien: fixe les accidents et les divers problèmes de 68k.
15 février 1998 Version 1.3: Ajout de Motorola 68000 et PowerPC objectifs.
7 décembre 1997 Version 1.2: correction de l’interface utilisateur de PC. Maintenant, nous pouvons charger 16 bits DOS exécutables. Plus de corrections de bugs.
26 octobre 1997 Version 1.1: support multi-cible (386 + R3000), le chargement de ELF et les fichiers PE, plusieurs bugs corrigés.
6 octobre 1997 porté sur Windows en mode console (recr4kpc.zip) et de SunOS (recr4ks4.tar.gz)
20 septembre 1997 Création de faire recr4kl.zip disponible.

Comments are closed.