← नवीनतम पेपर
💻 computer science

Control Flow Graph Recovery for Dynamically Loaded Code via Symbolic Library Resolution

यह शोध पत्र एक सुरक्षित, प्रतीकात्मक निष्पादन-आधारित (symbolic execution-based) विश्लेषण तकनीक प्रस्तावित करता है जो गतिशील रूप से लोड किए गए कोड से कंट्रोल फ्लो ग्राफ (Control Flow Graphs) को पुनः प्राप्त करने के लिए कस्टम हुक्स के साथ स्पेक्युलेटिव लाइब्रेरी प्रीलोडिंग को जोड़ता है, जिससे लाइब्रेरी डिटेक्शन में 100% शुद्धता और रिकॉल बनाए रखते हुए स्टैटिक एनालिसिस की तुलना में नोड और एज रिकवरी में महत्वपूर्ण सुधार प्राप्त होता है।

मूल लेखक: Oleksandr Mostovyi

प्रकाशित 2026-05-29
📖 6 मिनट में पढ़ें🧠 गहराई से पढ़ें

मूल लेखक: Oleksandr Mostovyi

मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें

कल्पना कीजिए कि आप एक जटिल मशीन के ब्लूप्रिंट (नक्शे) देखकर यह समझने की कोशिश कर रहे हैं कि वह कैसे काम करती है। कंप्यूटर सॉफ़्टवेयर की दुनिया में, इन ब्लूप्रिंट्स को कंट्रोल फ्लो ग्राफ्स (CFGs) कहा जाता है। ये इस बात का मानचित्र बनाते हैं कि प्रोग्राम द्वारा लिए जा सकने वाले हर संभावित पथ (path) का क्या होगा, और यह दिखाते हैं कि कोड आगे कहाँ जाता है।

हालाँकि, आधुनिक सॉफ़्टवेयर (और मालवेयर जैसे दुर्भावनापूर्ण प्रोग्राम) ने अपने ब्लूप्रिंट को छिपाने के लिए एक चाल सीखी है। वे डायनेमिक लोडिंग (dynamic loading) नामक तकनीक का उपयोग करते हैं। मुख्य मशीन में सभी हिस्सों को शुरू से ही निर्मित करने के बजाय, वे कुछ हिस्सों को एक बंद डिब्बे में रखते हैं और मशीन के चलते समय ही उस डिब्बे को खोलते हैं और हिस्सों को असेंबल करते हैं।

समस्या: अदृश्य हिस्से

पारंपरिक सॉफ़्टवेयर विश्लेषण उपकरण स्थिर वास्तुकारों (static architects) की तरह होते हैं। वे मेज पर रखे ब्लूप्रिंट को देखते हैं और कहते हैं, "यहाँ एक रास्ता है।" लेकिन यदि मशीन चलते समय एक डिब्बे से एक छिपा हुआ हिस्सा बाहर निकाल लेती है, तो स्थिर वास्तुकार को कुछ दिखाई नहीं देता। उन्हें वहाँ एक खाली स्थान दिखता है जहाँ एक दरवाज़ा होना चाहिए था, इसलिए वे उस रास्ते के माध्यम से मार्ग नहीं बना पाते।

यह सुरक्षा के लिए एक बड़ी समस्या है। यदि आप छिपे हुए रास्तों को नहीं देख सकते, तो आप यह नहीं बता सकते कि मशीन सुरक्षित है या यह एक जाल है।

समाधान: "स्पेक्टेटिव" (अनुमानित) जासूस

इस शोध पत्र के लेखक, ओ. एस. मोस्तोवी (O. S. Mostovyi) ने एक नए प्रकार के जासूसी उपकरण का निर्माण किया है। केवल ब्लूप्रिंट देखने के बजाय, यह उपकरण एक समय-यात्रा करने वाले सिम्युलेटर (time-traveling simulator) की तरह कार्य करता है।

यह कैसे काम करता है, इसके लिए एक सरल उपमा यहाँ दी गई है:

  1. सिमुलेशन (सिंबोलिक एक्जीक्यूशन): कल्पना कीजिए कि आपके पास एक रोबोट है जो वास्तविक रूप में सॉफ़्टवेयर को चालू किए बिना उसे चला सकता है। यह कोड को एक "क्या होगा अगर" (what-if) वाली दुनिया में चलाता है। यह खतरनाक हिस्सों को वास्तव में निष्पादित नहीं करता है; यह बस उनके बारे में सोचता है।
  2. दो-स्तरीय वास्तुकला (Two-Level Architecture): इस उपकरण के पास दो विशेष इंद्रियाँ हैं जो मिलकर काम करती हैं:
    • स्तर 1 (लाइब्रेरियन): यह भाग सॉफ़्टवेयर द्वारा नए हिस्सों की मांग करने की निगरानी करता है। जब सॉफ़्टवेयर कहता है, "मुझे नेटवर्क से एक लाइब्रेरी चाहिए" या "मुझे एक छिपी हुई मेमोरी जगह से एक फ़ाइल चाहिए," तो लाइब्रेरियन उस अनुरोध को बीच में ही रोक लेता है। भले ही सॉफ़्टवेयर फ़ाइल का नाम एन्क्रिप्टेड या स्क्रैम्बल किया हुआ हो, यह टूल गणित का उपयोग करके यह पता लगाता है कि वह फ़ाइल वास्तव में क्या है। फिर यह उस फ़ाइल को सिमुलेशन में "स्पेक्टेटिवली" लोड करता है ताकि रोबोट उसे देख सके।
    • स्तर 2 (ट्रैफिक पुलिस): यह भाग उन सड़कों की निगरानी करता है जिन पर रोबोट यात्रा करता है। जब रोबोट एक ऐसे मोड़ पर पहुँचता है जहाँ दिशा एक छिपे हुए वेरिएबल (जैसे कि एक गुप्त पता) पर निर्भर करती है, तो ट्रैफिक पुलिस यह जाँच करती है कि वह सड़क वास्तव में कहाँ जाती है।

यह पेचीदा चालों को कैसे संभालता है

शोध पत्र बताता है कि बुरे तत्व अपनी लोडिंग प्रक्रिया को छिपाने के लिए कई तरीकों का उपयोग करते हैं। यह टूल उन सभी को पकड़ने के लिए डिज़ाइन किया गया है:

  • फाइललेस एक्जीक्यूशन (Fileless Execution): कुछ प्रोग्राम ऐसी फाइलें बनाते हैं जो हार्ड ड्राइव पर मौजूद नहीं होतीं, बल्कि केवल RAM में रहती हैं। यह टूल इन अदृश्य फाइलों को देख लेता है।
  • नेटवर्क लोडिंग (Network Loading): कुछ प्रोग्राम चलते समय इंटरनेट से अपना कोड डाउनलोड करते हैं। यह टूल उस डाउनलोड को सिम्युलेट करता है ताकि देखा जा सके कि क्या प्राप्त हुआ है।
  • एन्क्रिप्टेड नाम (Encrypted Names): यदि प्रोग्राम कहता है "लोड फ़ाइल [एन्क्रिप्टेड कोड]", तो यह टूल वास्तविक फ़ाइल नाम खोजने के लिए एक गणितीय सॉल्वर का उपयोग करता है।

परिणाम: लापता मानचित्र को भरना

इसका परीक्षण करने के लिए, लेखक ने 16 अलग-अलग "जाल" (बेंचमार्क) बनाए जो सरल चालों से लेकर जटिल, बहु-चरणीय एन्क्रिप्शन तक विभिन्न छिपाने वाली तकनीकों का उपयोग करते थे।

परिणाम बहुत स्पष्ट थे:

  • पूर्णता (Completeness): इस टूल ने पारंपरिक स्थिर उपकरणों की तुलना में 29.8% अधिक पथ (नोड्स) और 26.5% अधिक कनेक्शन (एजेस) खोजे। इसने मानचित्र के खाली स्थानों को भर दिया।
  • सटीकता (Accuracy): यह 100% सटीक था। हर बार जब इसने कहा कि इसने एक छिपी हुई लाइब्रेरी खोजी है, तो यह सही था। इसने कोई गलत अलार्म (false alarms) नहीं दिया।
  • सुरक्षा (Safety): क्योंकि इसने खतरनाक कोड को वास्तव में चलाने के बजाय सिमुलेशन (सिंबोलिक एक्जीक्यूशन) का उपयोग किया, इसलिए यह मालवेयर के बाहर निकलने या नुकसान पहुँचाने के जोखिम के बिना इन पेचीदा प्रोग्रामों का सुरक्षित रूप से विश्लेषण कर सका।

सीमाएँ

लेखक ईमानदार हैं कि यह टूल अभी क्या नहीं कर सकता है:

  • यह एक जासूस है, जादूगर नहीं: यह छिपे हुए दरवाजों को खोज सकता है और रास्तों को खींच सकता है, लेकिन यह कोड को पढ़ने में आसान बनाने के लिए जटिल ओब्फस्केशन (स्क्रैम्बलिंग) को स्वचालित रूप से "पूर्ववत" (undo) नहीं कर सकता है। वह अभी भी एक कठिन समस्या है।
  • प्लेटफ़ॉर्म सीमाएँ: यह वर्तमान में विशिष्ट कंप्यूटर चिप्स पर लिनक्स सिस्टम (विशेष रूप से ELF फ़ाइलों) के लिए अच्छी तरह से काम करता है, लेकिन अभी तक विंडोज या अन्य ऑपरेटिंग सिस्टम के लिए नहीं।
  • छिपे हुए प्रवाह (Hidden Flows): यह उस डेटा को ट्रैक करता है जो स्पष्ट रूप से चलता है, लेकिन यह कभी-कभी उस डेटा को मिस कर देता है जो सूक्ष्म, अप्रत्यक्ष तरीकों से चलता है (जैसे जटिल गणितीय कार्यों के माध्यम से)।

सारांश

संक्षेप में, यह शोध पत्र एक ऐसे सॉफ़्टवेयर को मैप करने की एक नई विधि प्रस्तुत करता है जो अपने हिस्सों को चलने तक छिपा कर रखता है। एक "क्या होगा अगर" सिम्युलेटर और छिपे हुए फ़ाइल अनुरोधों को हल करने वाले एक स्मार्ट सिस्टम को जोड़कर, यह टूल प्रोग्राम के व्यवहार का एक पूर्ण मानचित्र बना सकता है, जिससे वे पथ प्रकट होते हैं जो पहले अदृश्य थे। इसने 16 विभिन्न परिदृश्यों पर सफलतापूर्वक परीक्षण किया, यह साबित करते हुए कि यह छिपी हुई लाइब्रेरी को पूर्ण सटीकता के साथ खोज सकता है।

अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?

आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।

Digest आज़माएँ →