
बाइनरी प्रोग्राम के लिए स्वचालित स्थैतिक विश्लेषण उपकरण
फारोस स्थैतिक बाइनरी विश्लेषण ढांचा कार्नेगी मेलन विश्वविद्यालय में सॉफ्टवेयर इंजीनियरिंग संस्थान की एक परियोजना है। यह ढांचा बाइनरी प्रोग्रामों के स्वचालित विश्लेषण को सुविधाजनक बनाने के लिए डिज़ाइन किया गया है। यह डिसअसेंबली, नियंत्रण प्रवाह विश्लेषण, निर्देश शब्दार्थ और अधिक के लिए लॉरेंस लिवरमोर नेशनल लेबोरेटरी द्वारा विकसित ROSE कंपाइलर बुनियादी ढांचे का उपयोग करता है। यह सॉफ्टवेयर BSD लाइसेंस के तहत जारी किया गया है।
वर्तमान वितरण पिछले संस्करण का एक महत्वपूर्ण अद्यतन है, और इसमें OOAnalyzer टूल में सुधार, प्रयोगात्मक पथ विश्लेषण कोड, विभाजक सुधार, मल्टी-थ्रेडिंग, और कई अन्य छोटी सुविधाओं सहित विभिन्न सुविधाएँ जोड़ी गई हैं।
फारोस ढांचा एक अनुसंधान परियोजना है, और कोड सक्रिय विकास के दौर से गुजर रहा है। किसी भी उद्देश्य के लिए उपयुक्तता की कोई वारंटी प्रदान नहीं की जाती है। जबकि यह रिलीज़ बिल्ड निर्देश, यूनिट परीक्षण और कुछ दस्तावेज़ प्रदान करती है, अभी भी बहुत काम किया जाना बाकी है। हमने कुछ चुनिंदा बिल्ड कॉन्फ़िगरेशन का परीक्षण किया है, लेकिन हमने स्रोत कोड की पोर्टेबिलिटी का सक्रिय रूप से परीक्षण नहीं किया है। अधिक जानकारी के लिए स्थापना निर्देश देखें।
चूंकि इस कोड को जारी करने का प्राथमिक उद्देश्य हमारे शोध में पारदर्शिता प्रदान करना और अन्य बाइनरी स्थैतिक विश्लेषण शोधकर्ताओं के साथ बातचीत को प्रोत्साहित करना है, कृपया इस कार्य के बारे में आपके किसी भी प्रश्न के लिए Cory Cohen [email protected] से संपर्क करने में संकोच न करें। हो सकता है कि मैं समय पर उत्तर देने में असमर्थ रहूं, लेकिन मैं अपनी पूरी कोशिश करूंगा।
ApiAnalyzer एक उपकरण है जो निर्दिष्ट डेटा और नियंत्रण संबंधों के साथ API कॉल के अनुक्रम खोजने के लिए है। इस क्षमता का उपयोग सामान्य ऑपरेटिंग सिस्टम इंटरैक्शन प्रतिमानों जैसे कि फ़ाइल खोलना, उसमें लिखना और उसे बंद करना का पता लगाने के लिए किया जाता है।
OOAnalyzer ऑब्जेक्ट-ओरिएंटेड निर्माणों के विश्लेषण और पुनर्प्राप्ति के लिए एक उपकरण है। यह उपकरण "Using Logic Programming to Recover C++ Classes and Methods from Compiled Executables" शीर्षक वाले एक पेपर का विषय था, जो 2018 में ACM सम्मेलन कंप्यूटर और संचार सुरक्षा में प्रकाशित हुआ था। यह उपकरण प्रोग्राम में फ़ंक्शंस के बीच ऑब्जेक्ट पॉइंटर्स को ट्रैक करके ऑब्जेक्ट सदस्यों और विधियों की पहचान करता है। इस उपकरण का पिछला कार्यान्वयन "Objdigger" नाम से था, लेकिन ऑब्जेक्ट विशेषताओं को पुनर्प्राप्त करने के लिए Prolog नियमों का उपयोग करके एक महत्वपूर्ण पुन: डिज़ाइन को दर्शाने के लिए इसका नाम बदल दिया गया। उपकरण का वर्तमान संस्करण केवल Microsoft Visual C++ द्वारा संकलित 32-बिट x86 निष्पादन योग्य का विश्लेषण का समर्थन करता है। बहुत बड़े निष्पादन योग्य पर OOAnalyzer चलाने के तरीके के बारे में अधिक विस्तृत निर्देशों के लिए, ये नोट्स देखें।
फारोस वितरण में पहले एक प्लगइन शामिल था जो OOAnalayzer द्वारा निर्यात की गई OO जानकारी को Ghidra रिवर्स इंजीनियरिंग टूल सेट में आयात करता था। अब और भविष्य में उस कार्यक्षमता को प्राप्त करने के लिए, Kaiju Ghidra प्लगइन स्थापित करें, जिसमें OOAnalayzer प्लगइन द्वारा प्रदान की गई कार्यक्षमता शामिल है।
CallAnalyzer एक उपकरण है जो बाइनरी प्रोग्राम में API कॉल के स्थैतिक पैरामीटर रिपोर्ट करने के लिए है। यह काफी हद तक हमारी वर्तमान कॉलिंग कन्वेंशन, पैरामीटर विश्लेषण और प्रकार पहचान क्षमताओं का प्रदर्शन है, हालांकि यह प्रोग्राम में कोड का उपयोगी विश्लेषण भी प्रदान करता है।
FN2Yara एक उपकरण है जो एक निष्पादन योग्य प्रोग्राम में फ़ंक्शंस से मिलान करने के लिए YARA हस्ताक्षर उत्पन्न करता है। जो प्रोग्राम महत्वपूर्ण संख्या में फ़ंक्शंस साझा करते हैं, उनमें सामान्य व्यवहार होने की संभावना होती है।
FN2Hash एक उपकरण है जो एक निष्पादन योग्य प्रोग्राम में फ़ंक्शंस के लिए विभिन्न हैश और अन्य वर्णनात्मक गुण उत्पन्न करने के लिए है। FN2Yara की तरह इसका उपयोग बाइनरी समानता विश्लेषण का समर्थन करने के लिए, या मशीन लर्निंग एल्गोरिदम के लिए सुविधाएँ प्रदान करने के लिए किया जा सकता है।
DumpMASM एक उपकरण है जो अन्य उपकरणों के समान शैली में Pharos ढांचे का उपयोग करके एक निष्पादन योग्य से डिसअसेंबली सूचियाँ डंप करने के लिए है। इसे सक्रिय रूप से बनाए नहीं रखा गया है, और आपको इसके बजाय ROSE के मानक recursiveDisassemble का उपयोग करने पर विचार करना चाहिए http://rosecompiler.org/ROSE_HTML_Reference/rosetools.html।