Decompiler is a specialized type of reverse engineering tool extensively employed in program analysis tasks, particularly in program comprehension and vulnerability detection. However, current Solidity smart contract decompilers face significant limitations in reconstructing the original source code. In particular, the bottleneck of SOTA decompilers lies in inaccurate method identification, incorrect variable type recovery, and missing contract attributes. These deficiencies hinder downstream tasks and understanding of the program logic. To address these challenges, we propose SmartHalo, a new framework that enhances decompiler output by combining static analysis (SA) and large language models (LLM). SmartHalo leverages the complementary strengths of SA's accuracy in control and data flow analysis and LLM's capability in semantic prediction. More specifically, \system{} constructs a new data structure - Dependency Graph (DG), to extract semantic dependencies via static analysis. Then, it takes DG to create prompts for LLM optimization. Finally, the correctness of LLM outputs is validated through symbolic execution and formal verification. Evaluation on a dataset consisting of 465 randomly selected smart contract methods shows that SmartHalo significantly improves the quality of the decompiled code, compared to SOTA decompilers (e.g., Gigahorse). Notably, integrating GPT-4o with SmartHalo further enhances its performance, achieving precision rates of 87.39% for method boundaries, 90.39% for variable types, and 80.65% for contract attributes.
- पेपर ID: 2501.08670
- शीर्षक: स्मार्ट कॉन्ट्रैक्ट डीकंपाइलर आउटपुट को सूक्ष्म-दानेदार निर्भरता विश्लेषण और LLM-सुविधा प्राप्त सिमेंटिक रिकवरी के माध्यम से बढ़ाना
- लेखक: Zeqin Liao, Yuhong Nan, Zixu Gao, Henglong Liang, Sicheng Hao, Peifan Ren, Zibin Zheng
- वर्गीकरण: cs.SE (सॉफ्टवेयर इंजीनियरिंग)
- प्रकाशन समय: जनवरी 2025 (arXiv प्रीप्रिंट)
- पेपर लिंक: https://arxiv.org/abs/2501.08670
स्मार्ट कॉन्ट्रैक्ट डीकंपाइलर प्रोग्राम विश्लेषण में व्यापक रूप से उपयोग किए जाने वाले रिवर्स इंजीनियरिंग उपकरण हैं, विशेष रूप से प्रोग्राम समझ और कमजोरी पहचान में महत्वपूर्ण भूमिका निभाते हैं। हालांकि, वर्तमान Solidity स्मार्ट कॉन्ट्रैक्ट डीकंपाइलर मूल स्रोत कोड के पुनर्निर्माण में महत्वपूर्ण सीमाएं प्रदर्शित करते हैं, मुख्य रूप से तीन पहलुओं में: अनुचित फ़ंक्शन पहचान, चर प्रकार पुनरुद्धार त्रुटियां, और अनुबंध विशेषताओं की कमी। इन चुनौतियों को हल करने के लिए, यह पेपर SmartHalo फ्रेमवर्क प्रस्तावित करता है, जो स्थिर विश्लेषण (SA) और बड़े भाषा मॉडल (LLM) को संयोजित करके डीकंपाइलर आउटपुट को बढ़ाता है। SmartHalo नियंत्रण प्रवाह और डेटा प्रवाह विश्लेषण में SA की सटीकता और सिमेंटिक भविष्यवाणी में LLM की क्षमता का लाभ उठाता है। विशेष रूप से, यह फ्रेमवर्क सिमेंटिक निर्भरताओं को निकालने के लिए निर्भरता ग्राफ (DG) डेटा संरचना का निर्माण करता है, फिर DG के आधार पर LLM अनुकूलन प्रॉम्प्ट बनाता है, और अंत में प्रतीकात्मक निष्पादन और औपचारिक सत्यापन के माध्यम से LLM आउटपुट की सटीकता को सत्यापित करता है।
स्मार्ट कॉन्ट्रैक्ट डीकंपाइलिंग तीन मुख्य समस्याओं का सामना करती है:
- फ़ंक्शन सीमा पहचान की अशुद्धि: मौजूदा डीकंपाइलर फ़ंक्शन सीमाओं को सटीक रूप से निर्धारित नहीं कर सकते, अक्सर कई फ़ंक्शन को गलती से एक एकल फ़ंक्शन के रूप में पुनरुद्धार करते हैं, या महत्वपूर्ण फ़ंक्शन को छोड़ देते हैं
- चर प्रकार पुनरुद्धार त्रुटियां: डीकंपाइलर द्वारा उत्पादित प्रकार त्रुटियां स्थिर डोमेन नियमों के साथ असंगत हैं, जैसे keccak256 फ़ंक्शन के bytes32 रिटर्न मान को गलती से uint256 प्रकार के रूप में पुनरुद्धार करना
- अनुबंध विशेषताओं की कमी: स्मार्ट कॉन्ट्रैक्ट में स्थिति चर महत्वपूर्ण अनुबंध विशेषताओं (जैसे संपत्ति, पहचान, राउटर) को रिकॉर्ड करते हैं, लेकिन डीकंपाइल किए गए कोड में पूरी तरह से अनुपस्थित हैं
ये खामियां डाउनस्ट्रीम कार्यों को गंभीरता से बाधित करती हैं:
- कमजोरी पहचान की सटीकता को प्रभावित करता है, झूठी सकारात्मक और झूठी नकारात्मक उत्पन्न करता है
- प्रोग्राम समझ की दक्षता को कम करता है
- क्रॉस-अनुबंध कॉल प्रवाह विश्लेषण जैसे उन्नत विश्लेषण कार्यों को सीमित करता है
- SmartDagger: केवल अनुबंध विशेषताओं के आंशिक पुनरुद्धार में सक्षम, गहन शिक्षण मॉडल पर आधारित, नए अनुबंधों पर प्रदर्शन में गिरावट
- Neural-FEBI: संशोधक फ़ंक्शन या विरासत फ़ंक्शन की सीमा पुनरुद्धार का समर्थन नहीं करता
- SigRec/VarLifter/DeepInfer: केवल ज्ञात फ़ंक्शन हस्ताक्षर के पैरामीटर प्रकार के आंशिक पुनरुद्धार में सक्षम, पूर्वनिर्धारित启发式नियमों पर निर्भर, कम कवरेज
दो मुख्य अंतर्दृष्टि पर आधारित:
- सॉफ्टवेयर प्राकृतिक पैटर्न: प्रोग्रामर समान संदर्भ में समान कोड संरचना, अनुबंध विशेषताएं, चर प्रकार और फ़ंक्शन सीमाएं उपयोग करते हैं
- SA और LLM सहयोगी वृद्धि: SA जटिल स्थिर बाधाओं को संभालने में उच्च सटीकता है, LLM स्थिर बाधाओं की कमी वाले लक्ष्यों की भविष्यवाणी में लचीलापन है
- वर्तमान स्मार्ट कॉन्ट्रैक्ट डीकंपाइलर आउटपुट की मुख्य सीमाओं की पहचान और व्यवस्थित विश्लेषण
- SmartHalo फ्रेमवर्क प्रस्तावित करना, जो डीकंपाइलर आउटपुट को अनुकूलित करने के लिए स्थिर विश्लेषण और बड़े भाषा मॉडल को नवीन तरीके से संयोजित करता है
- निर्भरता ग्राफ (DG) डेटा संरचना डिजाइन करना, तीन प्रकार की सिमेंटिक निर्भरताओं को निकालना (स्थिति निर्भरता, नियंत्रण प्रवाह निर्भरता, प्रकार निर्भरता)
- कठोर सटीकता सत्यापन तंत्र स्थापित करना, प्रतीकात्मक निष्पादन और औपचारिक सत्यापन के माध्यम से LLM भ्रम समस्या को संभालना
- व्यापक मूल्यांकन सत्यापन फ़ंक्शन सीमा, चर प्रकार और अनुबंध विशेषता पुनरुद्धार में SmartHalo की प्रभावशीलता
इनपुट: डीकंपाइलर द्वारा उत्पादित छद्मकोड
आउटपुट: अनुकूलित डीकंपाइल किया गया कोड, सटीक फ़ंक्शन सीमा, चर प्रकार और अनुबंध विशेषताओं के साथ
बाधाएं: प्रोग्राम व्यवहार समतुल्यता बनाए रखना, Solidity स्थिर प्रकार नियमों का पालन करना
SmartHalo तीन-चरणीय आर्किटेक्चर अपनाता है:
- नियंत्रण प्रवाह विश्लेषण: Tree-sitter का उपयोग करके सिंटैक्स ट्री का निर्माण, तीन-पता मध्यवर्ती प्रतिनिधित्व में रूपांतरण, नियंत्रण प्रवाह और डेटा प्रवाह ग्राफ उत्पन्न करना
- निर्भरता संबंध पहचान:
- प्रकार निर्भरता: चर प्रकार और अन्य चर या अभिव्यक्तियों के बीच संबंध
- स्थिति निर्भरता: स्थिति चर के बीच पढ़ने-लिखने की निर्भरता
- नियंत्रण प्रवाह निर्भरता: प्रोग्राम निष्पादन पथ की निर्भरता
- निर्भरता ग्राफ निर्माण: DG = (Nc, Ec, Xe), जहां Nc नोड सेट है (चर और अभिव्यक्तियां), Ec किनारे सेट है (तीन प्रकार की निर्भरताएं), Xe लेबल फ़ंक्शन है
- कोड संदर्भ पीढ़ी:
- चर: DG के आधार पर कोड स्लाइसिंग, लक्ष्य चर से संबंधित कोड खंड निकालना
- फ़ंक्शन: लक्ष्य फ़ंक्शन के कॉल चेन को खोजना
- अनुमान उम्मीदवार पीढ़ी:
- चर प्रकार उम्मीदवार: Solidity दस्तावेज़ से अंतर्निहित प्रकार एकत्र करना
- अनुबंध विशेषता उम्मीदवार: Limit, Fee, Flag, Address, Asset, Router, Others
- विचार श्रृंखला (COT) प्रॉम्प्ट: DG में निर्भरता संबंधों को अनुमान चरण विवरण में परिवर्तित करना
- प्रोग्राम व्यवहार समतुल्यता जांच:
- मूल और अनुकूलित फ़ंक्शन पर प्रतीकात्मक निष्पादन
- Z3 सॉल्वर का उपयोग करके औपचारिक सत्यापन
- समतुल्यता अभिकथन: Φ = ¬(s ⇔ s′)
- स्थिर नियम उल्लंघन जांच: Solidity प्रकार नियमों के आधार पर प्रकार अनुमान त्रुटियों का पता लगाना
- सूक्ष्म-दानेदार निर्भरता विश्लेषण: पहली बार तीन प्रकार की सिमेंटिक निर्भरताओं को व्यवस्थित रूप से निकालना और उपयोग करना
- SA-LLM सहयोग फ्रेमवर्क: स्थिर विश्लेषण की सटीकता और LLM की सिमेंटिक समझ क्षमता को नवीन तरीके से संयोजित करना
- कठोर सटीकता गारंटी: प्रतीकात्मक निष्पादन और औपचारिक सत्यापन के माध्यम से अनुकूलन परिणामों की सटीकता सुनिश्चित करना
- सामान्य डिजाइन: विभिन्न LLM और डीकंपाइलर के एकीकरण का समर्थन करना
- मूल्यांकन डेटासेट: सबसे बड़े ओपन-सोर्स स्मार्ट कॉन्ट्रैक्ट डेटासेट से 500 फ़ंक्शन को यादृच्छिक रूप से चुना गया, अंततः 456 स्रोत कोड और डीकंपाइल आउटपुट जोड़े प्राप्त किए गए
- जटिल अनुबंध डेटासेट: 682 वास्तविक DApp से 50 स्मार्ट कॉन्ट्रैक्ट को यादृच्छिक रूप से चुना गया (लगभग 900 फ़ंक्शन)
- कमजोरी पहचान डेटासेट: 81 पुनः-प्रवेश कमजोरी लेबल, 18 हमले अनुबंध जोड़े, 50 पूर्णांक अतिप्रवाह कमजोरी अनुबंध
- फ़ंक्शन सीमा मिलान: शुरुआत और अंत बिंदु पूरी तरह से स्रोत कोड-स्तरीय फ़ंक्शन से मेल खाते हैं
- प्रकार मिलान: भविष्यवाणी किया गया प्रकार वास्तविक प्रकार से पूरी तरह मेल खाता है (डेटा लेआउट और फील्ड जानकारी सहित)
- अनुबंध विशेषता मिलान: भविष्यवाणी की गई विशेषता वास्तविक विशेषता से पूरी तरह मेल खाती है
- पुनः संकलन विफलता दर: अनुकूलित कोड की संकलन त्रुटि दर
- SmartDagger: अनुबंध विशेषता पुनरुद्धार तुलना के लिए
- VarLifter: चर प्रकार अनुमान तुलना के लिए
- मूल डीकंपाइलर: Gigahorse/Dedaub आधारभूत के रूप में
- विकास वातावरण: Python 3.8.10, 1799 लाइनें कोड
- LLM चयन: मुख्य रूप से GPT-3.5 का उपयोग, GPT-4o mini, Llama-3, Deepseek-v3, Qwen-2.5-coder का समर्थन
- हार्डवेयर कॉन्फ़िगरेशन: Intel i9-10980XE CPU, RTX 3090 GPU, 250GB RAM
| मेट्रिक | सटीकता वृद्धि | रिकॉल वृद्धि |
|---|
| फ़ंक्शन सीमा पहचान | +20.30% | +30.03% |
| चर प्रकार अनुमान | +30.02% | +42.04% |
| अनुबंध विशेषता पुनरुद्धार | 68.06% | 90.93% |
- vs SmartDagger (अनुबंध विशेषता): सटीकता में +44.69% वृद्धि, रिकॉल में +80.86% वृद्धि
- vs VarLifter (चर प्रकार): सटीकता में +13.51% वृद्धि, रिकॉल में +77.08% वृद्धि
| LLM | फ़ंक्शन सीमा(P/R) | चर प्रकार(P/R) | अनुबंध विशेषता(P/R) |
|---|
| GPT-3.5 | 88.26%/80.51% | 92.27%/84.26% | 68.06%/90.93% |
| GPT-4o mini | 91.32%/87.38% | 90.40%/88.82% | 80.66%/91.78% |
| Llama-3 | 66.09%/55.11% | 62.41%/48.53% | 61.68%/60.34% |
SA, LLM अलग से उपयोग और SmartHalo पूर्ण फ्रेमवर्क की तुलना:
- SA का योगदान: सटीक निर्भरता संबंध निष्कर्षण और बाधा सत्यापन प्रदान करना
- LLM का योगदान: सिमेंटिक समझ और दुर्लभ पैटर्न पहचान क्षमता प्रदान करना
- सहयोग प्रभाव: SmartHalo केवल LLM का उपयोग करने की तुलना में फ़ंक्शन सीमा पर +19.23%/29.23% में सुधार
- क्रॉस-डीकंपाइलर: Heimdall, Panoramix पर महत्वपूर्ण सुधार
- जटिल अनुबंध: वास्तविक जटिल DApp पर अच्छा प्रदर्शन बनाए रखना
- दक्षता विश्लेषण: औसत प्रसंस्करण समय 23.99 सेकंड, लागत $0.00136/फ़ंक्शन
- पुनः-प्रवेश कमजोरी पहचान: सटीकता 72.16% से 80.41% तक बढ़ी
- हमले की पहचान: रिकॉल 83.33% से 100.00% तक बढ़ा
- पूर्णांक अतिप्रवाह पहचान: सटीकता में +21.96% वृद्धि, रिकॉल में +38.00% वृद्धि
- Gigahorse/Elipmoc: EVM बाइटकोड को तीन-पता कोड प्रतिनिधित्व में परिवर्तित करना
- Erays/EtherSolve: EVM बाइटकोड से नियंत्रण प्रवाह ग्राफ पुनरुद्धार करना
- SigRec/DeepInfer: सार्वजनिक फ़ंक्शन हस्ताक्षर पुनरुद्धार करना
- सिमेंटिक जानकारी पुनरुद्धार: DEBIN, OSPREY, BDA आदि स्थिर विश्लेषण के माध्यम से प्रोग्राम निर्भरता पुनरुद्धार करते हैं
- चर नाम और प्रकार अनुकूलन: DIRE, DIRTY, DeGPT आदि डीकंपाइल आउटपुट को अनुकूलित करने के लिए गहन शिक्षा का उपयोग करते हैं
मौजूदा कार्यों की तुलना में, SmartHalo के पास है:
- अधिक व्यापक अनुकूलन लक्ष्य: फ़ंक्शन सीमा, चर प्रकार और अनुबंध विशेषताओं को एक साथ संभालना
- मजबूत सामान्यीकरण क्षमता: विशिष्ट प्रशिक्षण डेटा पर निर्भर नहीं, नए अनुबंधों के अनुकूल
- कठोर सटीकता गारंटी: औपचारिक सत्यापन के माध्यम से अनुकूलन परिणामों की सटीकता सुनिश्चित करना
- SmartHalo ने स्मार्ट कॉन्ट्रैक्ट डीकंपाइलिंग गुणवत्ता में महत्वपूर्ण सुधार किया, तीन मुख्य मेट्रिक्स पर substantial improvement प्राप्त किए
- SA-LLM सहयोग फ्रेमवर्क प्रभावी साबित हुआ, दोनों के पूरक लाभों का पूरी तरह उपयोग किया
- कठोर सटीकता सत्यापन तंत्र ने LLM भ्रम समस्या को सफलतापूर्वक नियंत्रित किया
- फ्रेमवर्क में अच्छी सामान्यीकरण क्षमता है, कई LLM और डीकंपाइलर का समर्थन करता है
- विरासत संरचना पुनरुद्धार: अनुबंध में विरासत संबंधों को पुनरुद्धार नहीं कर सकता, क्योंकि बाइटकोड स्तर पर वर्ग जानकारी अनुपस्थित है
- डेटासेट आकार: मूल्यांकन डेटासेट अपेक्षाकृत छोटा है (456 फ़ंक्शन), लेकिन SOTA अनुसंधान आकार के अनुरूप है
- LLM API विकास: परिणामों की पुनरुत्पादनीयता को प्रभावित कर सकता है
- जटिल परिस्थितियों का प्रबंधन: निम्न-स्तरीय कॉल, इनलाइन असेंबली, ऑफ-चेन निर्भरताओं आदि परिस्थितियों में सीमित प्रदर्शन
- विरासत संरचना पुनरुद्धार: पैटर्न मिलान के आधार पर विरासत संबंध अनुमान का अन्वेषण करना
- बड़े पैमाने पर मूल्यांकन: बड़े डेटासेट पर विधि की मजबूती को सत्यापित करना
- विशेष मॉडल प्रशिक्षण: स्मार्ट कॉन्ट्रैक्ट समझ के लिए विशेष मॉडल प्रशिक्षित करना
- वास्तविक समय अनुकूलन: ऑनलाइन डीकंपाइलिंग अनुकूलन का समर्थन करना
- समस्या परिभाषा स्पष्ट: स्मार्ट कॉन्ट्रैक्ट डीकंपाइलिंग की मुख्य समस्याओं की व्यवस्थित पहचान और विश्लेषण
- विधि नवाचार मजबूत: पहली बार SA-LLM सहयोग फ्रेमवर्क प्रस्तावित, सूक्ष्म निर्भरता ग्राफ डेटा संरचना डिजाइन
- तकनीकी समाधान पूर्ण: सिमेंटिक निष्कर्षण, अनुकूलन वृद्धि से सटीकता सत्यापन तक पूर्ण लूप बनाता है
- प्रयोगात्मक मूल्यांकन व्यापक: बहु-आयामी तुलना प्रयोग, विलोपन अनुसंधान और डाउनस्ट्रीम कार्य सत्यापन सहित
- व्यावहारिक मूल्य उच्च: 60.22% अनुकूलित कोड सीधे पुनः संकलित किया जा सकता है, व्यावहारिकता में महत्वपूर्ण सुधार
- सैद्धांतिक विश्लेषण अपर्याप्त: विधि के सैद्धांतिक गारंटियों का गहन विश्लेषण अनुपस्थित
- त्रुटि विश्लेषण सीमित: अनुकूलन विफलता मामलों के मूल कारण विश्लेषण को अधिक गहराई से किया जा सकता है
- कम्प्यूटेशनल ओवरहेड: प्रतीकात्मक निष्पादन और औपचारिक सत्यापन उच्च कम्प्यूटेशनल लागत ला सकते हैं
- बाहरी उपकरणों पर निर्भरता: मौजूदा डीकंपाइलर और LLM API की गुणवत्ता पर निर्भर
- शैक्षणिक योगदान: स्मार्ट कॉन्ट्रैक्ट विश्लेषण क्षेत्र के लिए नया अनुसंधान प्रतिमान प्रदान करता है
- व्यावहारिक मूल्य: स्मार्ट कॉन्ट्रैक्ट सुरक्षा विश्लेषण और प्रोग्राम समझ में सीधे लागू किया जा सकता है
- विस्तारशीलता: फ्रेमवर्क डिजाइन विभिन्न विश्लेषण उपकरणों और मॉडलों के एकीकरण का समर्थन करता है
- ओपन-सोर्स योगदान: लेखक कोड और डेटासेट को ओपन-सोर्स करने का वचन देते हैं, अनुसंधान पुनरुत्पादन में सहायता करता है
- स्मार्ट कॉन्ट्रैक्ट सुरक्षा ऑडिट: डीकंपाइल किए गए कोड की पठनीयता और सटीकता में सुधार
- कमजोरी पहचान उपकरण: प्रीप्रोसेसिंग चरण के रूप में पहचान सटीकता में सुधार
- प्रोग्राम समझ उपकरण: डेवलपर्स को तीसरे पक्ष के अनुबंध तर्क को समझने में सहायता करना
- शैक्षणिक अनुसंधान: स्मार्ट कॉन्ट्रैक्ट विश्लेषण अनुसंधान के लिए उच्च-गुणवत्ता डेटा प्रदान करना
पेपर में 96 संबंधित संदर्भ उद्धृत किए गए हैं, मुख्य रूप से शामिल हैं:
- स्मार्ट कॉन्ट्रैक्ट विश्लेषण: Gigahorse, SmartDagger, VarLifter आदि शास्त्रीय कार्य
- प्रोग्राम विश्लेषण सिद्धांत: प्रतीकात्मक निष्पादन, औपचारिक सत्यापन संबंधित साहित्य
- मशीन लर्निंग अनुप्रयोग: प्रोग्राम विश्लेषण में गहन शिक्षा का अनुप्रयोग
- डीकंपाइलिंग तकनीक: पारंपरिक डीकंपाइलिंग अनुकूलन विधियां और उपकरण
समग्र मूल्यांकन: यह स्मार्ट कॉन्ट्रैक्ट डीकंपाइलिंग के महत्वपूर्ण समस्या पर एक उच्च-गुणवत्ता सॉफ्टवेयर इंजीनियरिंग अनुसंधान पेपर है जो नवीन समाधान प्रस्तावित करता है। विधि डिजाइन तर्कसंगत है, प्रयोगात्मक मूल्यांकन पर्याप्त है, व्यावहारिक मूल्य उत्कृष्ट है। हालांकि कुछ सीमाएं हैं, लेकिन समग्र योगदान महत्वपूर्ण है और स्मार्ट कॉन्ट्रैक्ट सुरक्षा विश्लेषण क्षेत्र के विकास को महत्वपूर्ण रूप से आगे बढ़ाता है।