Question

Etant donné qu'un exécutable compilé à partir de C pour s'exécuter sur Solaris, est-il possible de déterminer quel compilateur a été utilisé pour compiler l'exécutable incomplet associé?

Je ne vois rien lorsque j'utilise les chaînes ou la commande de fichier, et la magie ne semble contenir aucun élément spécifique.

Les compilateurs insèrent-ils généralement une empreinte dans leurs fichiers de sortie exécutables?

acclamations,

Était-ce utile?

La solution

Si l'exécutable n'est pas vidé, essayez / usr / ccs / bin mcs-p Cela montrera généralement le compilateur, l’éditeur de liens et tous les fichiers d’en-tête utilisés

Autres conseils

Oui, IDA est idéal pour cela. Il utilise une technologie appelée FLIRT .

PEID fera l'affaire. Cela fonctionne généralement très bien. De toute évidence, PEID est un outil Windows mais cela ne devrait pas avoir d’importance et devrait vous montrer au compilateur (parfois même des informations de version spécifiques)

Créez des petites applications de test avec chaque compilateur que vous essayez d'identifier. Regardez ensuite les résultats dans un éditeur hexadécimal et essayez de trouver des modèles. Cela peut s'avérer très évident - par exemple, le & Rich; Rich " signatures de l'éditeur de liens de Microsoft.

Non dépouillé:

$ cc -O hello.c

$ fichier a.out

a.out: SPARC32PLUS Version 1 ELF exécutable MSB 32 bits, V8 +, obligatoire, lié de manière dynamique, non mis à nu

$ strings -a a.out | grep cc

/opt/solarisstudio12.3/prod/bin/cc -O hello.c

$ dwarfdump -i a.out | grep compile_o

DW_AT_SUN_compile_options Xa; O; R = Sun C 5.12 Patch SunOS_sparc 148917-07 2013/10/18; backend; raw; cd;

Stripped:

$ strip a.out

$ fichier a.out

a.out: SPARC32PLUS Version 1 ELF exécutable MSB 32 bits, V8 +, liaison dynamique, suppression,

$ strings -a a.out | grep cc

(aucun)

Visual Studio et GCC suivent généralement différentes routines de démarrage (appelant main). C'est peut-être un indice. Je ne sais pas pour les autres cependant. Pour les dlls, je ne peux pas penser à quelque chose de similaire par hasard.

Les compilateurs ajoutent généralement leur propre " signature " en texte clair dans les fichiers compilés. Vous pouvez utiliser un outil tel que des chaînes pour extraire le texte en clair.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top