Question:
Comment devrais-je essayer de comprendre le langage de programmation utilisé?
asheeshr
2013-03-25 19:41:09 UTC
view on stackexchange narkive permalink

J'ai un fichier exécutable et j'aimerais savoir dans quel langage de programmation le code source a été écrit. La première étape serait d'utiliser un désassembleur.

Que faut-il faire après cela?

De plus, j'ai lu que déterminer quelles bibliothèques sont utilisées pendant l'exécution serait un bon indicateur du langage de programmation utilisé. Comment devrais-je déterminer quelles bibliothèques sont utilisées?

Peut-être lié: [Quels indices dans le code machine peuvent me diriger vers le compilateur qui a été utilisé pour le générer?] (Http://reverseengineering.stackexchange.com/questions/11/what-hints-in-machine-code-can- pointez-moi vers le compilateur qui a été utilisé pour les genres) et [Qu'est-ce qu'une signature FLIRT?] (http://reverseengineering.stackexchange.com/questions/175/what-is-a- flirt-signature /)
Quelle est la cible OF? Les choses peuvent changer radicalement d'un système d'exploitation à un autre (et des outils aussi).
Ubuntu @Emmanuel
Vous pouvez utiliser d'autres outils d'identification de compilateur: Catégorie: Identificateurs de compilateur - Bibliothèque d'outils Collaborative RCE http://www.woodmann.com/collaborative/tools/index.php/Category:Compiler_Identifiers
Deux réponses:
#1
+9
cb88
2013-03-25 20:03:31 UTC
view on stackexchange narkive permalink

En fait, je vous suggère de visualiser l'exécutable avec un visualiseur / éditeur hexadécimal. De cette façon, vous pouvez voir immédiatement si le compilateur a incorporé des chaînes sous forme d'indices. Vous devez également considérer que certains langages utilisent C comme langage intermédiaire. Un exemple de cela serait f2c un complilateur Fortran 77 vers C. Il semble que f2c lie également une bibliothèque de support afin que vous cherchiez cela.

Pour déterminer quelles bibliothèques sont utilisées sous Linux, vous pouvez utiliser la commande ldd pour les binaires dynamiques et nm pour les statiques pour vider les symboles. Il y a aussi une question relative à SO.

Voici un blog intéressant d'un autre membre RE sur la façon dont le binaire que vous avez pourrait même ne pas provenir d'un compilateur et comment le reconnaître.

Bonne réponse, vous seriez surpris de la fréquence à laquelle cette approche low-tech fonctionne! Cela mis à part, même dans le cas de `f2c`, vous pouvez probablement voir des motifs ponctuels utilisés par le convertisseur pour représenter les concepts Fortran ou convertir des conventions Fortran en C.
#2
+9
Mick
2013-03-25 21:04:27 UTC
view on stackexchange narkive permalink

Il existe plusieurs outils que j'ai utilisés:

  1. PEiD (PE iDentifier) ​​
  2. J'ai également suivi ceci guide et les signatures PEiD converties en signatures YARA et simplement utilisées YARA
  3. TRiD peuvent également fournir un autre moyen d'identifier le compilateur utilisé

Il convient également de mentionner que si vous soumettez un fichier à Virus Total, il exécutera TRiD sur votre binaire.

Ces outils ne sont pas toujours définitif, mais ils peuvent généralement vous donner le bon compilateur (et donc le langage) qui a été utilisé.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...