← नवीनतम पेपर
🤖 machine learning

Pretraining on Call Graphs: When Binary Analysis Tasks Profit From Context

यह शोध पत्र इस बात की जांच करता है कि कॉल ग्राफ संदर्भ (call graph context) को बाइनरी फंक्शन एम्बेडिंग में एकीकृत करने से मजबूती कैसे बढ़ती है और यह नेमस्पेस-संबंधित कार्यों जैसे संदर्भ-निर्भर कार्यों को कैसे लाभ पहुँचाता है, जबकि यह भी प्रकट करता है कि ऐसे संवर्धन डाउनस्ट्रीम कार्यों में सार्वभौमिक रूप से सामान्यीकृत नहीं होते हैं और संभावित रूप से सिमेंटिक (semantic) और सिंटैक्टिक (syntactic) प्रदर्शन के बीच एक समझौता (trade-off) भी पैदा कर सकते हैं।

मूल लेखक: Samuel Valenzuela, Johannes Kinder

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

मूल लेखक: Samuel Valenzuela, Johannes Kinder

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

कल्पना कीजिए कि आप एक जासूस हैं जो एक रहस्य सुलझाने की कोशिश कर रहे हैं, लेकिन आपके पास उपलब्ध एकमात्र सुराग एक गुप्त कोड में लिखे गए हैं जो हर बार लेखक द्वारा लिखे जाने पर बदल जाता है। यह बाइनरी कोड विश्लेषण (binary code analysis) की दुनिया है। जब एक कंप्यूटर प्रोग्राम कंपाइल होता है, तो वह मशीन निर्देशों की एक ऐसी धारा में बदल जाता है जो मूल मानव-पठनीय कोड से बिल्कुल अलग दिखती है। यह बिल्कुल वैसा ही है जैसे एक स्वादिष्ट केक बनाना, उसे बेक करना, और फिर केवल बचे हुए टुकड़ों को चखकर उसकी रेसिपी समझने की कोशिश करना। चुनौती यह है कि दो अलग-अलग बेकर्स समान सामग्री या चरणों का उपयोग करके बिल्कुल एक जैसा केक बना सकते हैं, फिर भी परिणाम स्वाद में एक जैसा ही होता है। डिजिटल दुनिया में, इसका अर्थ है कि कोड के दो हिस्से सतह पर पूरी तरह से अलग दिख सकते हैं लेकिन वे बिल्कुल एक ही काम करते हैं।

इन कोडों को तोड़ने के लिए, वैज्ञानिक "एम्बेडिंग्स" (embeddings) बनाने के लिए मशीन लर्निंग का उपयोग करते हैं। सोचिए कि एम्बेडिंग एक कोड के लिए एक अद्वितीय आईडी कार्ड या फिंगरप्रिंट की तरह है। यदि दो फिंगरप्रिंट मेल खाते हैं, तो संभावना है कि कोड वही काम कर रहा है। आमतौर पर, ये आईडी कार्ड केवल एक फंक्शन (एक प्रोग्राम के भीतर एक छोटा कार्य) को अलग से देखकर बनाए जाते हैं। लेकिन क्या होगा यदि हम जासूस को पूरे पड़ोस का एक नक्शा दे दें? प्रोग्रामिंग में, इस नक्शे को कॉल ग्राफ (call graph) कहा जाता है, जो दिखाता है कि कौन से फंक्शन दूसरे फंक्शन्स को कॉल करते हैं। बड़ा सवाल यह है: क्या पड़ोस को देखना हमें संदिग्ध को बेहतर तरीके से पहचानने में मदद करता है, या यह जासूस को बहुत अधिक शोर (noise) से भ्रमित कर देता है?

यह शोध पत्र, जिसका शीर्षक है "Pretraining on Call Graphs: When Binary Analysis Tasks Profit From Context," ठीक इसी सवाल में गहराई से उतरता है। शोधकर्ताओं, सैमुअल वैलेंज़ुएला और जोहान्स किंडर ने यह देखना चाहा कि क्या "पड़ोस के संदर्भ" (कॉल ग्राफ) को कोड के आईडी कार्ड में जोड़ने से वास्तव में जासूस अधिक स्मार्ट बनता है। उन्होंने दो सबसे स्मार्ट मौजूदा कोड-जासूसों (जिन्हें CLAP और jTrans कहा जाता है) को एक विशेष प्रकार के AI जिसे ग्राफ न्यूरल नेटवर्क (GNN) कहते हैं, का उपयोग करके कॉल ग्राफ को देखना सिखाया। उन्होंने इन नए, संदर्भ-जागरूक जासूसों का परीक्षण तीन अलग-अलग कार्यों पर किया: मिलते हुए कोड को खोजना, किसी फंक्शन के नाम का अनुमान लगाना, और यह पता लगाना कि इसे बनाने के लिए किन कंपाइलर सेटिंग्स का उपयोग किया गया था।

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

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

इससे भी अधिक दिलचस्प बात यह है कि जब कार्य तकनीकी विवरणों जैसे कि किस कंपाइलर ऑप्टिमाइज़ेशन लेवल का उपयोग किया गया था (एक सिंटैक्टिक कार्य) को पहचानना था, तो परिणाम इस बात पर निर्भर करते थे कि विधि क्या है। जटिल ग्राफ न्यूरल नेटवर्क वाले जासूसों ने खराब प्रदर्शन किया, और उनके पास जितना अधिक संदर्भ होता गया, वे उतने ही बदतर होते गए। हालाँकि, सरल औसत (averaging) मॉडल वाले जासूसों ने बड़े कॉल ग्राफ तक पहुँच मिलने पर इन तकनीकी विवरणों को पहचानने में वास्तव में बेहतर प्रदर्शन किया। यह सुझाव देता है कि जबकि जटिल मॉडल जो पड़ोस के बड़े चित्र पर ध्यान केंद्रित करते हैं, वे सूक्ष्म तकनीकी दरारों को मिस कर सकते हैं, वहीं पड़ोस को सरल तरीके से देखने वाला मॉडल उन निम्न-स्तरीय तकनीकी पैटर्न को प्रभावी ढंग से एकत्रित कर सकता है।

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

संक्षेप में, यह पेपर सुझाव देता है कि हालांकि कॉल ग्राफ से संदर्भ जोड़ना मिलते हुए कोड को खोजने के लिए बाइनरी कोड विश्लेषण को अधिक मजबूत बनाता है, लेकिन इसके साथ एक समझौता (trade-off) भी आता है। ऐसा लगता है कि यह अन्य कार्यों के लिए रेखाओं को धुंधला कर देता है, जिससे जटिल AI फंक्शन को नाम देने या तकनीकी विवरणों को पहचानने में कम सटीक हो जाता है, हालांकि सरल औसत विधियाँ इन मोर्चों पर सुधार कर सकती हैं। लेखक निष्कर्ष निकालते हैं कि एक नाजुक संतुलन है: आप आसानी से दोनों दुनियाओं का सर्वश्रेष्ठ नहीं पा सकते। यदि आप अपने मॉडल को यह समझने के लिए प्रशिक्षित करते हैं कि फंक्शन एक-दूसरे से कैसे बात करते हैं, तो हो सकता है कि वह उन छोटे, तकनीकी विवरणों पर ध्यान देना बंद कर दे जो अन्य प्रकार के विश्लेषण के लिए महत्वपूर्ण हैं। यह कोई विफलता नहीं है, बल्कि कोड विश्लेषण के खेल में एक नए नियम की खोज है: कभी-कभी, अपने पड़ोसियों को जानने से आपको एक मैच खोजने में मदद मिलती है, लेकिन यह आपको यह भुला सकता है कि आप वास्तव में कौन हैं, जब तक कि आप पड़ोस को सरलता से देखना न जानते हों।

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

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

Digest आज़माएँ →