
IDA Python प्लगइन जो बाइनरीज में ओपन-सोर्स लाइब्रेरी प्रतीकों के तेज, स्थान-आधारित मिलान के लिए है, जो बड़े फर्मवेयर और मैलवेयर के कुशल रिवर्स इंजीनियरिंग और भेद्यता विश्लेषण को सक्षम करता है।
/$$ /$$ /$$
| $$ /$$/ | $$
| $$ /$$/ /$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$
| $$$$$/ |____ $$ /$$__ $$|_ $$_/ |____ $$
| $$ $$ /$$$$$$$| $$ \__/ | $$ /$$$$$$$
| $$\ $$ /$$__ $$| $$ | $$ /$$ /$$__ $$
| $$ \ $$| $$$$$$$| $$ | $$$$/| $$$$$$$
|__/ \__/ \_______/|__/ \___/ \_______/
"Karta" (रूसी में "नक्शा") एक IDA Python प्लगइन है जो किसी दिए गए बाइनरी में ओपन-सोर्स लाइब्रेरीज की पहचान और मिलान करता है। यह प्लगइन एक अनोखी तकनीक का उपयोग करता है जो बड़े बाइनरी (>200,000 फंक्शन) को समर्थन करने में सक्षम बनाता है, जिसमें समग्र प्रदर्शन पर लगभग कोई प्रभाव नहीं पड़ता।
मिलान एल्गोरिदम स्थान-आधारित है। इसका मतलब है कि इसका मुख्य ध्यान अलग-अलग संकलित फाइलों का पता लगाना और फाइल के भीतर उनके मूल क्रम के आधार पर प्रत्येक फाइल के फंक्शनों का मिलान करना है। इस प्रकार, मिलान K (ओपन सोर्स में फंक्शनों की संख्या) पर निर्भर करता है, न कि N (बाइनरी के आकार) पर, जिससे सामान्यतः N >> K होने पर प्रदर्शन में महत्वपूर्ण लाभ मिलता है।
हमारा मानना है कि इस IDA प्लगइन के तीन मुख्य उपयोग मामले हैं:
नवीनतम संस्करणों के लिए, Python 3 का उपयोग करते हुए, बस रिपॉजिटरी को git clone करें और setup.py install स्क्रिप्ट चलाएँ।
Python 3 को संस्करण v2.0.0 और उससे ऊपर से समर्थित किया गया है।
IDA 7.4 के रिलीज़ के अनुसार, Karta को केवल IDA 7.4 या नए, और Python 3 के लिए सक्रिय रूप से विकसित किया जा रहा है। Python 2 और पुराने IDA संस्करणों को अभी भी रिलीज़ संस्करण v1.2.0 का उपयोग करके समर्थित किया जाता है, जो Python 2.X के जीवन-अंत के कारण संभवतः अंतिम समर्थित संस्करण होगा।
Karta का पहचानकर्ता एक छोटा प्लगइन है जो बाइनरी में मौजूद (समर्थित) ओपन-सोर्स लाइब्रेरीज के अस्तित्व की पहचान करता है और उनके संस्करणों के फिंगरप्रिंट बनाता है। अब एक ही ओपन-सोर्स लाइब्रेरी को बार-बार रिवर्स इंजीनियर करने की आवश्यकता नहीं है; बस पहचानकर्ता प्लगइन चलाएँ और उपयोग किए गए ओपन सोर्स की विस्तृत सूची प्राप्त करें। Karta वर्तमान में 10 से अधिक ओपन-सोर्स लाइब्रेरीज का समर्थन करता है, जिनमें शामिल हैं:
उपयोग किए गए ओपन सोर्स की पहचान करने के बाद, कोई विशिष्ट लाइब्रेरी (उदाहरण के लिए libpng संस्करण 1.2.29) के लिए एक .JSON कॉन्फ़िगरेशन फ़ाइल संकलित कर सकता है। एक बार संकलित होने के बाद, Karta स्वचालित रूप से लोड की गई बाइनरी में ओपन सोर्स के फंक्शन (प्रतीकों) का मिलान करने का प्रयास करेगा। इसके अलावा, यदि आपके ओपन सोर्स ने बाहरी फंक्शन (memcpy, fread, या zlib_inflate) का उपयोग किया है, तो Karta उन बाहरी फंक्शनों का भी मिलान करने का प्रयास करेगा।
यह प्रोजेक्ट मेरे द्वारा (नीचे संपर्क विवरण देखें) चेक पॉइंट रिसर्च में मेरे शोध समूह (Check Point Research) की सहायता और समर्थन से विकसित किया गया था।
यह रिपॉजिटरी मेरे द्वारा, Eyal Itkin, चेक पॉइंट रिसर्च में मेरे वर्षों के दौरान विकसित और अनुरक्षित की गई थी। दुख की बात है कि शोध समूह से मेरे जाने के साथ, मैं अब इस रिपॉजिटरी को बनाए नहीं रख पाऊंगा। यह मुख्य रूप से सभी रिग्रेशन टेस्ट चलाने के लिए आवश्यकताओं की लंबी सूची और इस प्रक्रिया में शामिल IDA Pro संस्करणों के कारण है।
कृपया मेरी हार्दिक क्षमा स्वीकार करें।