Wie zu erkennen, dass eine bestimmte PE-Datei (exe oder dll) ist 64 bit oder 32 bit
Brauche ich, um zu erkennen, ob eine gegebene .dll-oder .exe-Datei ist 32 bit oder 64 bit
Im moment habe ich nur eine Lösung: Lesen Sie den PE-Header aus der angegebenen Datei und nehmen Sie die 'Maschine' Feld von dort aus.
( Spezifikation: Microsoft Portable Executable and Common Object File Format Specification (.docx-Datei) im Abschnitt "3.3. COFF File Header (Objekt und Bild)" )
In diesem Feld kann bis zu 20 Werte. Drei von Ihnen sind:
IMAGE_FILE_MACHINE_I386 ( == 32bit )
IMAGE_FILE_MACHINE_IA64 ( == 64bit )
IMAGE_FILE_MACHINE_AMD64 ( == 64bit )
Meine Fragen:
1) Ist die 'Maschine' zu Bitanzahl Zuordnung korrekt oder habe ich da etwas verpasst? Gibt es irgendwelche anderen Einschränkungen?
2) Ist es einfacher Weg zu erkennen, der 32/64-Bitanzahl (wahrscheinlich irgendein bestimmtes Feld im PE-format habe ich nicht bemerkt oder einige spezielle system-Funktion)?
Dass die andere Frage ist, zu Fragen, über die Architektur, das ist eine Frage über das Wort Größe.
Dokumentation aktualisiert, von v8 auf v11 jetzt im Jahr 2017: microsoft.com/whdc/system/platform/firmware/PECOFF.mspx
InformationsquelleAutor inazaruk | 2009-07-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
GetBinaryType(...) zurück
SCS_32BIT_BINARY
für ein 32-bit-Windows-basierten Anwendungund
SCS_64BIT_BINARY
für ein 64-bit-Windows-basierten Anwendung.In Python: import win32file; print win32file.GetBinaryType("myfile.exe"). Dies gibt 0 zurück für 32-bit-exe-oder 6 für 64-bit-Datei.
InformationsquelleAutor Draemon
Prüfen: http://msdn.microsoft.com/en-us/library/windows/desktop/ms680339%28v=vs.85%29.aspx
Suchen Sie nach "Magic" - Mitglied - können Sie herausfinden, ob der PE-header ist 32 bit(PE32) oder 64 bit(PE32+).
InformationsquelleAutor Samuel