2009-07-20 10 views
6

मैं पता लगाने के लिए एक दिया .dll या exe फ़ाइल है कि क्या जरूरत है 32 बिट या 64 बिटपता लगाने के लिए कैसे है कि किसी भी पीई फ़ाइल (exe या dll) 64 बिट या 32 बिट

पल मेरे पास है पर केवल एक समाधान: निर्दिष्ट फ़ाइल से पीई हेडर पढ़ें और वहां से 'मशीन' फ़ील्ड लें।

(विशिष्टता: Microsoft Portable Executable and Common Object File Format Specification (.docx फ़ाइल) अनुभाग में "। 3.3 Coff फ़ाइल शीर्षक (वस्तु और छवि)")

इस क्षेत्र के बारे में 20 मूल्यों तक का समय लग सकता है। इनमें से तीन हैं:

IMAGE_FILE_MACHINE_I386 (== 32bit) 

IMAGE_FILE_MACHINE_IA64 (== 64bit) 

IMAGE_FILE_MACHINE_AMD64 (== 64bit) 

मेरे सवालों का:

1) 'मशीन' मानचित्रण bitness करने के लिए सही है या मैं कुछ याद किया? क्या कोई अन्य चेतावनी है?

2) क्या 32/64 सीढ़ी का पता लगाने का कोई आसान तरीका है (शायद पीई प्रारूप में कुछ विशिष्ट फ़ील्ड मैंने नोटिस नहीं किया था या कुछ विशेष सिस्टम फ़ंक्शन)?

+0

डुप्ली: http://stackoverflow.com/questions/971689/win32-api-to-tell-whether-a-given-binary-exe-or-dll-is-x86-x64-or-ia64/971715 # 971715 –

+0

वह अन्य प्रश्न आर्किटेक्चर के बारे में पूछ रहा है, यह शब्द के आकार के बारे में पूछ रहा है। – Draemon

+0

दस्तावेज़ीकरण 2017 में अब तक v8 से v11 तक अपडेट किया गया है: http://www.microsoft.com/whdc/system/platform/firmware/PECOFF.mspx –

उत्तर

15

GetBinaryType(...) रिटर्न एक 32-बिट विंडोज आधारित अनुप्रयोग और SCS_64BIT_BINARY एक 64-बिट Windows आधारित अनुप्रयोग के लिए के लिए SCS_32BIT_BINARY

+0

यह दुर्भाग्यवश डीएलएल का विश्लेषण करते समय 0 लौटाता है। – Benoit

+0

इसे पायथन में बनाया गया: आयात win32file; प्रिंट win32file.GetBinaryType ("myfile.exe")। यह 32 बिट्स exe या 64 बिट्स फ़ाइल के लिए 6 के लिए 0 देता है। –

संबंधित मुद्दे