Compte tenu de certains Random.exe
sous Windows, comment puis-je déterminer
Y a-t-il une propriété dans l'Explorateur de fichiers, un autre outil ou une méthode de programmation que je peux utiliser?
4 Réponses :
L'architecture de l'exécutable est écrite dans le champ Machine de l'en-tête COFF. Vous pouvez le récupérer par programme ou manuellement avec un éditeur hexadécimal:
Vous pouvez voir la structure PE ici a >. Les valeurs de champ Machine valides sont répertoriées ici a>.
EDIT: Voici un code C qui fait cela, non testé:
int main(int argc, char *argv[]) { FILE *f = fopen(argv[1], "rb"); uint32_t offset = 0; fseek(f, 0x3c, SEEK_SET); fread(&offset, sizeof(offset), 1, f); fseek(f, offset + 4, SEEK_SET); uint16_t machine = 0; fread(&machine, sizeof(machine), 1, f); printf("Machine: 0x%.4x\n", machine); }
Merci, question modifiée pour inclure des méthodes programmatiques.
Cygwin file foo.exe
sera identifier le contenu des fichiers en fonction de leurs nombres magiques / métadonnées de format de fichier. (Pas leurs noms de fichiers). Vraisemblablement également disponible ou installable à partir des sources dans MinGW , et est probablement fourni avec l'une des distributions pour Sous-système Windows de MS pour Linux , WSL.
C'est le même open -source implémentation de la commande POSIX file
a > que la plupart des BSD et toutes les distributions Linux utilisent. La source en amont est https://www.darwinsys.com/file/
montre un exemple de sortie. Et j'ai quelques exécutables Windows sur mon bureau Linux:
peter@volta:~/.wine/drive_c$ file Program\ Files/Internet\ Explorer/iexplore.exe ..../iexplore.exe: PE32+ executable (GUI) x86-64, for MS Windows peter@volta:~/.wine/drive_c$ file Program\ Files\ \(x86\)/The\ Master\ Genealogist\ v9/tmg9.exe ..../tmg9.exe: PE32 executable (GUI) Intel 80386, for MS Windows
IDK si c'est la meilleure réponse, si vous n'utilisez pas régulièrement un shell en ligne de commande (comme je le fais sur mon bureau Linux).
file
fonctionne pour à peu près n'importe quel type de fichier, par exemple ZIP, JPG, mp4, mkv et pour les formats de fichiers largement utilisés, il récupérera même des métadonnées supplémentaires comme la résolution d'image JPG. (Il n'est pas basé sur le nom du fichier, il ouvre le fichier pour consulter les métadonnées. Habituellement, les 4 premiers octets environ sont un "nombre magique" qui indique le type de fichier.)
Pour les formats de texte brut, il peut parfois utiliser des heuristiques pour distinguer HTML du texte brut, et reconnaître UTF-8 contre UTF-16 contre ISO-8851 contre ASCII ordinaire, et DOS contre les fins de ligne Unix, etc. pas seulement pour les exécutables.
Microsoft (R) COFF/PE Dumper Version 14.11.25547.0 Copyright (C) Microsoft Corporation. All rights reserved. Dump of file C:\Users\justins\projects\random.exe PE signature found File Type: EXECUTABLE IMAGE FILE HEADER VALUES 8664 machine (x64) 4 number of sections 5C0BB424 time date stamp Sat Dec 8 04:08:04 2018 0 file pointer to symbol table 0 number of symbols F0 size of optional header 22 characteristics Executable Application can handle large (>2GB) addresses
Un moyen très simple de le faire avec JavaScript: https://github.com/doctolib / architecture-binaire-windows
getTargetArch(yourFilePath, (err, archName, archCode) => { // you can check arch name here }