2016-02-17 7 views
8

प्रक्रिया एक्सप्लोरर कभी-कभी "पैक की गई छवि" के रूप में EXE दिखाती है, लेकिन इसका क्या अर्थ है।विंडोज एक्सई/डीएलएल: "पैक की गई छवि"

जो मैंने पाया है वह है: /ZI विकल्प के साथ एक एक्सई संकलन (विज़ुअल सी ++ 2010 का उपयोग करके) एक पैक की गई छवि में परिणाम, लेकिन /Zi नहीं है। ऐसा अंतर क्यों?

बीटीडब्लू: /ZI के साथ संकलित एक डीएलएल को "पैक की गई छवि" और बैंगनी चिह्नित भी माना जाता है।

enter image description here

+0

विजुअल स्टूडियो दस्तावेज़ पढ़ें: [/ Z7,/Zi,/ZI (डीबग सूचना प्रारूप)] (https://msdn.microsoft.com/en-us/library/958x11bc.aspx), और यह भी देखें [ प्रक्रिया एक्सप्लोरर को समझना] (http://www.howtogeek.com/school/sysinternals-pro/lesson2/)। –

+0

लेकिन एमएसडीएन पृष्ठ "पैक की गई छवि" के बारे में कुछ भी नहीं बताता है; और यह हैटोगेक पेज भी/जेएक्स कंपाइलर विकल्पों के बारे में कुछ भी नहीं कहता है। –

+0

फ़ाइलें जिनके कोड को निष्पादित किए जाने से पहले स्मृति में अनपॅक किया जाना है। मैलवेयर का आम संकेत। http://forum.sysinternals.com/packed-images_topic442.html –

उत्तर

10

ए 'पैक छवि "एक जहाँ निष्पादन योग्य कोड इरादा फ़ाइल छोटा करने के लिए के साथ संकुचित है है। विशिष्ट फ़ाइल आकार में कमी लगभग 50% हो जाती है। यह रनटाइम पर "लोडर" का उपयोग करता है ताकि निष्पादन योग्य कोड पर डेटा को निष्पादित करने से पहले डेटा को डिकंप्रेस कर दिया जा सके। पुराने डिस्क स्टोरेज क्षमता और सीमित नेटवर्क बैंडविड्थ के साथ पुराने दिनों में यह उपयोगी था।

आज टेराबाइट डिस्क और मेगाबिट नेटवर्क के साथ यह एक गंध है, पैकिंग का भी दुर्भावनापूर्ण कोड छिपाने के लिए शोषण किया जा सकता है। निश्चित रूप से कारण प्रक्रिया एक्सप्लोरर इसे अलग-अलग रंग देता है।

सटीक हेरिस्टिक जो पैकिंग का पता लगाने के लिए पीई का उपयोग करता है, दस्तावेज नहीं है। बेशक नहीं, इससे घूमना बहुत आसान हो जाएगा। यह मामूली नहीं है, पैकिंग को लागू करने का कोई मानक तरीका नहीं है। असल में, यह निष्पादन योग्य फ़ाइल में सेक्शन को देखेगा और ब्लू फ्लैग बढ़ाएगा जब इसमें से अधिकतर निष्पादन योग्य कोड की तरह दिखता है।

और हाँ, जब आप/ZI का उपयोग करते हैं तो इसमें बहुत कुछ होगा। जब आप/ZI का उपयोग करते हैं तो लिंकर/INCREMENTAL विकल्प अधिक महत्वपूर्ण होता है। जो आपको डिबगिंग करते समय कोड लिखने की अनुमति देता है, संपादन + जारी रखें विकल्प। और फाइलर को पूरी तरह से पुन: उत्पन्न करने के बिना निष्पादन योग्य फ़ाइल को जल्दी से रिलिक करें। यह केवल तभी काम कर सकता है जब निष्पादन योग्य फ़ाइल में बहुत खाली जगह हो, जो नई मशीन कोड बाइट जोड़ने के लिए उपलब्ध हो। यह एक ब्लू फ्लैग है।

निश्चित रूप से वास्तविक चिंता नहीं है, आपका उपयोगकर्ता केवल आपके प्रोग्राम के रिलीज बिल्ड को ही देखेगा। जो बिना/जेआईआई के और बिना/संगत के बनाया गया है।

+0

आपकी जानकारी के लिए धन्यवाद, यह उचित लगता है। मैं/ZI आउटपुट और/ज़ी आउटपुट के '.text' सेक्शन को चेक करता हूं। द्विआधारी सामग्री काफी अलग दिखती है, .text का आकार 1425 9 8 बनाम 136722 है, और मुझे लगता है कि इनमें से अधिकतर LIBCMT.lib से कोड हैं। कल्पना करना अभी भी मुश्किल है कि ब्लू फ्लैग क्यों बनाता है। –

+0

प्रोसेस एक्सप्लोरर इसे सार्वजनिक नहीं कर सकता है कि पैक की गई छवियों की पहचान कैसे करें, लेकिन प्रोसेस हैकर जैसा कि आप मेरे उत्तर में देख सकते हैं –

1
Process Hacker source code से

:

एक छवि है, तो पैक किया जाता है:

  1. यह संदर्भ देता है की तुलना में कम 3 मॉड्यूल, और
  2. यह 5 कार्यों की तुलना में कम आयात करता है, और
  3. यह करता है मूल उपप्रणाली का उपयोग न करें।

या:

  1. समारोह करने वाली मॉड्यूल अनुपात 3 (पर औसत से कम 3 कार्यों प्रत्येक मॉड्यूल से आयात किया जाता है) की तुलना में कम है, और
  2. यह संदर्भ देता है और अधिक से अधिक 2 मॉड्यूल लेकिन 6 से कम मॉड्यूल।

या:

  1. समारोह करने वाली मॉड्यूल अनुपात 2 (पर औसत से कम 2 कार्यों प्रत्येक मॉड्यूल से आयात किया जाता है) की तुलना में कम है, और
  2. यह संदर्भ देता है और अधिक से अधिक 5 मॉड्यूल लेकिन 31 से कम मॉड्यूल।

या:

  1. यह एक अनुभाग नाम दिया नहीं है ".text"।

एक छवि को पैक नहीं किया जाता है यदि उसके पास "mscoree.dll" नामक एक मॉड्यूल से केवल एक आयात है।

आप सॉस कोड को भी देख सकते हैं कि यह निर्धारित करने के लिए कि कोई छवि शायद पैक की गई हो या यदि यह नहीं है।

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