
[आधिकारिक] Android रिवर्स इंजीनियरिंग टूल जो Frida का उपयोग करके डायनामिक इंस्ट्रुमेंटेशन ऑटोमेशन पर केंद्रित है। यह dex को डिसअसेंबल करता है, स्थैतिक रूप से इसका विश्लेषण करता है, हुक उत्पन्न करता है, रिफ्लेक्टेड मेथड्स खोजता है, इंटरसेप्ट किए गए डेटा को संग्रहीत करता है और उससे नई चीज़ें करता है। इसका उद्देश्य एक ऑल-इन-वन Android रिवर्स इंजीनियरिंग प्लेटफ़ॉर्म बनना है।

Dexcalibur एक Android रिवर्स इंजीनियरिंग प्लेटफ़ॉर्म है जो इंस्ट्रुमेंटेशन ऑटोमेशन पर केंद्रित है। इसकी विशेषता यह है कि यह स्टैटिक एनालिसिस ह्यूरिस्टिक्स को बेहतर बनाने के लिए डायनामिक एनालिसिस का उपयोग करता है। इसका उद्देश्य डायनामिक इंस्ट्रुमेंटेशन से संबंधित उबाऊ कार्यों को स्वचालित करना है, जैसे:
क्या आप कुछ साझा करना चाहते हैं या आपको कुछ मदद चाहिए? हमारे आधिकारिक चैट में शामिल हों:
Telegram - प्रतिक्रिया देने का सबसे तेज़ तरीका
आधिकारिक दस्तावेज़ीकरण यहाँ उपलब्ध है (वेबसाइट - कार्य प्रगति पर)।
नवीनतम समाचार यहाँ देखें: http://docs.dexcalibur.org/News.html
Dexcalibur डेमो वीडियो देखें: Demo: Less than 1 minute to hook 61 methods ? Not a problem. (youtube)
योगदान करें!
संकोच न करें! योगदान देने के कई तरीके हैं:
Install doc पर जाएं
वैकल्पिक: Docker का उपयोग करें
adb (और उपयुक्त होने पर एक Android एमुलेटर) इंस्टॉल करेंdocker-compose build android-dexcaliburdocker run --rm -it --net=host -v /tmp/dexcalibur:/shared -p 8000:8000 dexcalibur:2023.01 /bin/bashLinux और MacOS के लिए
NPM Install : यदि Dexcalibur को NPM का उपयोग करके वैश्विक रूप से स्थापित किया गया है (-g विकल्प), तो Dexcalibur को टर्मिनल से $ dexcalibur चलाकर लॉन्च किया जा सकता है, अन्यथा इसे $ node $(node root -g dexcalibur)/dexcalibur/dexcalibur.js द्वारा लॉन्च किया जा सकता है।
Install from source : dexcalibur फ़ोल्डर से, $ dexcalibur या $ node dexcalibur.js चलाएं।
Windows के लिए
NPM Install : भले ही Dexcalibur को NPM का उपयोग करके वैश्विक रूप से स्थापित किया गया हो (-g विकल्प), Dexcalibur को टर्मिनल से निम्न कमांड चलाकर लॉन्च किया जाना चाहिए node <NPM_ROOT>/dexcalibur/dexcalibur.js।
Install from source : dexcalibur फ़ोल्डर से, टर्मिनल में node dexcalibur.js कमांड चलाएं।
क्या आप Dexcalibur के पिछले संस्करण का उपयोग कर रहे हैं?
नई स्थापना के समान चरणों का पालन करें, और जब आपको कार्यक्षेत्र पथ दर्ज करना चाहिए, तो अपना वर्तमान कार्यक्षेत्र स्थान दर्ज करें।
बस यह करके:
$ npm install -g dexcalibur
मौजूदा कॉन्फ़िगरेशन और कार्यक्षेत्र स्वचालित रूप से पहचान लिए जाएंगे।
निम्नलिखित स्क्रीनशॉट रनटाइम पर xrefs के स्वचालित अपडेट को दर्शाते हैं।


वास्तव में, सबसे बड़ी सीमा यह है कि Dexcalibur JNI लाइब्रेरी में नेटिव फ़ंक्शन को लक्षित करने वाले हुक का स्रोत कोड उत्पन्न करने में सक्षम नहीं है। हालाँकि, आप एक हुक को संपादित करके मैन्युअल रूप से Frida के इंटरसेप्टर की घोषणा कर सकते हैं।
यह मानते हुए कि Dexcalibur (फिलहाल) JNI लाइब्रेरी या JNA जैसे नेटिव भाग का विश्लेषण करने के लिए सुविधाएँ प्रदान नहीं करता है, केवल Java भाग से संबंधित सुविधाओं और सीमाओं का विवरण दिया गया है।
विश्लेषण की सटीकता विश्लेषण के प्रारंभिक चरणों के दौरान उपयोग की गई Android API छवि की पूर्णता पर निर्भर करती है। इसका मतलब है कि यदि आप Android SDK से Android.jar फ़ाइल से उत्पन्न DEX फ़ाइल का उपयोग करते हैं, तो Android java API से आंतरिक विधियों, फ़ील्ड या क्लास के कुछ संदर्भ गायब हो सकते हैं। बेहतर परिणाम तब प्राप्त होते हैं जब विश्लेषण वास्तविक डिवाइस से सीधे निकाली गई "boot.oat" फ़ाइल से शुरू होता है जो अपेक्षित Android संस्करण चला रहा है।
TODO : पाठ लिखें
TODO : पाठ लिखें
ट्रैक किए गए व्यवहार
"Run smali (VM)" क्रिया में शामिल स्टैटिक विश्लेषक निम्नलिखित व्यवहारों की खोज और स्वीकार करने में सक्षम है, लेकिन उन्हें ट्रैक करता है:
वास्तव में, ऐसे अमान्य निर्देश के लिए हैंडलर/लिसनर समर्थित नहीं हैं, लेकिन घटनाओं को ट्रैक और प्रस्तुत किया जाता है।
Dexcalibur IR
VM एक कस्टम और सरलीकृत इंटरमीडिएट रिप्रेजेंटेशन (IR) उत्पन्न करता है जिसे केवल विश्लेषक की मदद करने के लिए प्रदर्शित किया जाता है ताकि वह अपना विश्लेषण कर सके।
कॉलस्टैक गहराई और कॉन्फ़िगरेशन के मान के आधार पर, IR में कॉल किए गए फ़ंक्शन में निष्पादित निर्देश शामिल हो सकते हैं या नहीं भी हो सकते हैं। यदि निष्पादन try ब्लॉक में प्रवेश करता है और वापसी जारी रखता है, लेकिन कभी catch निष्पादित नहीं करता है, तो catch ब्लॉक प्रस्तुत नहीं किया जाएगा। वास्तव में, Dexcalibur IR का उद्देश्य केवल "क्या निष्पादित किया गया है" या "VM संदर्भ में कुछ प्रतीकों के मान के आधार पर क्या निष्पादित किया जा सकता है" को प्रस्तुत करना है।
Dexcalibur IR अनावश्यक goto और अपारदर्शी विधेय को हटाकर बाइटकोड का एक साफ संस्करण पढ़ने में मदद करता है। Dexcalibur IR को VM द्वारा 2 सरलीकरण स्तरों के साथ उत्पन्न किया जा सकता है:
पहला स्तर IR, यदि आप दूसरे स्तर IR पर भरोसा नहीं करते हैं तो इसका उपयोग किया जा सकता है:
दूसरा स्तर:
Android API मॉक
TODO
विवरण
Smali VM इन चरणों का पालन करता है: