Vous pouvez déterminer la nature d'un exécutable sous Unix à l'aide de la file
commande et de la type
commande.
type
Vous utilisez type
pour déterminer l'emplacement d'un exécutable sur le disque comme suit:
$ type -a ls
ls is /usr/bin/ls
ls is /bin/ls
Je sais donc maintenant qu'il ls
se trouve ici sur mon système à 2 endroits: /usr/bin/ls
& /bin/ls
. En regardant ces exécutables, je peux voir qu'ils sont identiques:
$ ls -l /usr/bin/ls /bin/ls
-rwxr-xr-x. 1 root root 120232 Jan 20 05:11 /bin/ls
-rwxr-xr-x. 1 root root 120232 Jan 20 05:11 /usr/bin/ls
REMARQUE: vous pouvez confirmer qu'ils sont identiques au-delà de leurs tailles en utilisant cmp
ou diff
.
avec diff
$ diff -s /usr/bin/ls /bin/ls
Files /usr/bin/ls and /bin/ls are identical
avec cmp
$ cmp /usr/bin/ls /bin/ls
$
Utilisation d'un fichier
Si je les interroge à l'aide de la file
commande:
$ file /usr/bin/ls /bin/ls
/usr/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0x303f40e1c9349c4ec83e1f99c511640d48e3670f, stripped
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=0x303f40e1c9349c4ec83e1f99c511640d48e3670f, stripped
Il s'agit donc de programmes physiques réels qui ont été compilés à partir de C / C ++. S'il s'agissait de scripts shell, ils se présenteraient généralement comme suit pour file
:
$ file somescript.bash
somescript.bash: POSIX shell script, ASCII text executable
Qu'est-ce que ELF?
ELF est un format de fichier , c'est la sortie d'un compilateur tel que gcc
, qui est utilisé pour compiler des programmes C / C ++ tels que ls
.
En informatique, le format exécutable et linkable (ELF, anciennement appelé Extensible Linking Format) est un format de fichier standard commun pour les exécutables, le code objet, les bibliothèques partagées et les vidages de mémoire.
Il aura généralement l'une des extensions suivantes dans le nom de fichier: aucune, .o, .so, .elf, .prx, .puff, .bin