necesito para detectar si un determinado .dll o .exe es de 32 bits o 64 bitsCómo detectar que un archivo PE dado (EXE o DLL) es de 64 bits o 32 bits
Por el momento tengo solo una solución: lea el encabezado PE del archivo especificado y tome el campo 'Máquina' desde allí.
(Especificación: Microsoft Portable Executable and Common Object File Format Specification (.docx) en la sección "3.3 COFF archivo de cabecera (Objeto e imagen)")
Este campo puede tomar hasta unos 20 valores. Tres de ellos son:
IMAGE_FILE_MACHINE_I386 (== 32bit)
IMAGE_FILE_MACHINE_IA64 (== 64bit)
IMAGE_FILE_MACHINE_AMD64 (== 64bit)
Mis preguntas:
1) es 'Máquina' a bitness asignación correcta o me he perdido algo? ¿Hay alguna otra advertencia?
2) ¿Hay una manera más fácil de detectar bits de 32/64 (probablemente algún campo específico en formato PE que no noté o alguna función especial del sistema)?
dup: http://stackoverflow.com/questions/971689/win32-api-to-tell-whether-a-given-binary-exe-or-dll-is-x86-x64-or-ia64/971715 # 971715 –
Esa otra pregunta es acerca de la arquitectura, esta pregunta sobre el tamaño de la palabra. – Draemon
La documentación se ha actualizado de v8 a v11 a partir de ahora en 2017: http://www.microsoft.com/whdc/system/platform/firmware/PECOFF.mspx –