
[आधिकारिक] 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 इन चरणों का पालन करता है:
VM invoke-* निर्देश को कैसे संभालता है?
मेनिफेस्ट विश्लेषण (सीमित)
पहली रन से पहले, एप्लिकेशन का Android मेनिफेस्ट पार्स किया जाता है। वास्तव में, मेनिफेस्ट में विसंगतियाँ जैसे असुरक्षित कॉन्फ़िगरेशन वास्तव में इस स्तर पर पता लगाई जाती हैं।
Android मेनिफेस्ट पार्सिंग का एकमात्र उद्देश्य अन्य प्रकार के विश्लेषकों को पॉप्युलेट करना है।
अनुमति विश्लेषण
मेनिफेस्ट से निकाली गई प्रत्येक अनुमति सूचीबद्ध और पहचानी जाती है और लक्ष्य Android API संस्करण के Android विनिर्देश से तुलना की जाती है।
Dexcalibur केवल कुछ मामलों में अनुमति के उद्देश्य, न्यूनतम Android API संस्करण आदि का विवरण प्रदान करता है।
गतिविधियाँ विश्लेषण
प्रदाता विश्लेषण
सेवाएँ विश्लेषण
रिसीवर विश्लेषण
नेटवर्क मॉनिटरिंग
इंटेंट मॉनिटरिंग
फ़ाइल एक्सेस मॉनिटरिंग
आपको मल्टी-यूज़र मेनू नहीं मिल रहा है? कोई समस्या नहीं, कोई मेनू नहीं है लेकिन न्यूनतम सहयोगात्मक कार्य प्राप्त किया जा सकता है।
Dexcalibur एक वेब सर्वर चलाता है। इसलिए, यदि कई लोग इस वेब सर्वर के समान नेटवर्क पर हैं और यदि होस्ट फ़ायरवॉल अच्छी तरह से कॉन्फ़िगर किया गया है, तो आप एक ही Dexcalibur इंस्टेंस पर काम करने वाले कई लोग हो सकते हैं।
वास्तविक सीमाएँ हैं:
योगदानकर्ताओं के लिए विशेष धन्यवाद:
गहराई में जाने से पहले:
dexcalibur --reinstall कमांड के साथ पुनर्स्थापित करने का प्रयास किया है? यदि नहीं, तो प्रयास करें।सबसे पहले, जाँचें कि क्या वैश्विक सेटिंग्स <user_directory>/.dexcalibur/ में सहेजी गई हैं
$ ls -la ~/.dexcalibur
total 8
drwxr-xr-x 3 test_user staff 96 29 avr 11:41 .
drwxr-xr-x+ 87 test_user staff 2784 29 avr 11:47 ..
-rw-r--r-- 1 test_user staff 204 29 avr 11:41 config.json
$ cat ~/.dexcalibur/config.json
{
"workspace":"/Users/test_user/dexcaliburWS3",
"registry":"https://github.com/FrenchYeti/dexcalibur-registry/raw/master/",
"registryAPI":"https://api.github.com/repos/FrenchYeti/dexcalibur-registry/contents/"
}
इसके बाद, जाँचें कि Dexcalibur कार्यक्षेत्र की संरचना निम्नानुसार है (/api फ़ोल्डर की सामग्री भिन्न हो सकती है)।
$ ls -la ~/dexcaliburWS/.dxc/*
/Users/test_user/dexcaliburWS/.dxc/api:
total 0
drwxr-xr-x 3 test_user staff 96 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
drwxr-xr-x 8 test_user staff 256 29 avr 11:41 sdk_androidapi_29_google
/Users/test_user/dexcaliburWS/.dxc/bin:
total 34824
drwxr-xr-x 4 test_user staff 128 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
-rwxr-xr-x 1 test_user staff 17661172 29 avr 11:41 apktool.jar
drwxr-xr-x 18 test_user staff 576 29 avr 11:41 platform-tools
/Users/test_user/dexcaliburWS/.dxc/cfg:
total 8
drwxr-xr-x 3 test_user staff 96 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
-rw-r--r-- 1 test_user staff 314 29 avr 11:41 config.json
/Users/test_user/dexcaliburWS/.dxc/dev:
total 0
drwxr-xr-x 2 test_user staff 64 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
/Users/test_user/dexcaliburWS/.dxc/tmp:
total 0
drwxr-xr-x 2 test_user staff 64 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
यदि आप USB पर जुड़े भौतिक डिवाइस का उपयोग करते हैं, तो सुनिश्चित करें कि डेवलपर मोड और USB डिबगिंग सक्षम हैं।
यदि आप वर्चुअल डिवाइस का उपयोग करते हैं, तो /splash.html पर जाएं, Device Manager चुनें, Connect over TCP ... पर क्लिक करें और निर्देशों का पालन करें। यदि आप अपने डिवाइस का IP पता नहीं जानते हैं, तो automatic configuration चेकबॉक्स को चेक करके Dexcalibur को इसका पता लगाने दें।
इसका उपयोग करने में सक्षम होने से पहले आपको लक्ष्य डिवाइस को नामांकित करना होगा। नामांकन के दौरान Dexcalibur डिवाइस मेटाडेटा एकत्र करता है और Frida सर्वर का एक संगत संस्करण धकेलता है।
इस तरह के मेटाडेटा का उपयोग सही frida-server और frida-gadget लक्ष्य चुनने के लिए किया जाता है।
यदि डिवाइस सूची में एक पंक्ति पर लाल विस्मयादिबोधक चिह्न ! दिखाई देता है, तो आपके डेस्कटॉप को डिवाइस द्वारा अनुमति नहीं दी गई है। आपको शायद पुष्टि करने की आवश्यकता है
यदि आपका डिवाइस DeviceManager में सूचीबद्ध है और कॉलम online चेक किया गया है, तो enroll पर क्लिक करें
यदि आपका डिवाइस DeviceManager में सूचीबद्ध है और कॉलम online चेक किया गया है, तो enroll पर क्लिक करें
Dexcalibur संस्करण < v0.7 अपूर्ण ADB आउटपुट पार्सिंग के कारण एमुलेटेड डिवाइस का स्वचालित रूप से पता लगाने और इसका उपयोग करने में सक्षम नहीं था।
संस्करण >= v0.7 के बाद से, एक बार आपका वर्चुअल डिवाइस चल रहा है, /splash.html पर जाएं या नेविगेशन बार में DEXCALIBUR पर क्लिक करें।
बाएं मेनू में Device Manager बटन पर क्लिक करें, और सरणी के शीर्ष पर Refresh बटन पर क्लिक करें।
आपके पास आपके वर्चुअल डिवाइस के ADB ID से शुरू होने वाली एक पंक्ति होनी चाहिए।
सबसे पहले, किसी भी लक्ष्य डिवाइस की तरह, आपको इसे नामांकित करना चाहिए।
TCP पर नया डिवाइस जोड़ने या TCP पर नामांकित डिवाइस को कनेक्ट करने के लिए Connect over TCP ... पर क्लिक करें।
यदि डिवाइस कभी नामांकित नहीं किया गया है, तो नामांकन TCP के माध्यम से किया जाएगा। कुछ मामलों में, TCP पर कनेक्शन USB की तुलना में धीमा होता है। इसलिए नामांकन में अतिरिक्त समय लग सकता है।
यदि डिवाइस USB पर नामांकित किया गया है, तो इस डिवाइस के लिए नया पसंदीदा परिवहन प्रकार TCP बन जाता है।
इस रिपॉजिटरी पर पुल रिक्वेस्ट बनाएं या इश्यू बनाएं।
dexcalibur-doc रिपॉजिटरी पर पुल रिक्वेस्ट बनाएं।
दस्तावेज़ीकरण यहाँ (doc website) और यहाँ (wiki) उपलब्ध है
![]() |
|---|
| उन्होंने सभी उत्पादों के लिए लाइसेंस प्रदान किया <3 |
वास्तव में Dexcalibur के बारे में कुछ दस्तावेज़ीकरण और प्रशिक्षण संसाधन हैं। यदि आपने CTF चुनौती जीतने या भेद्यता खोजने के लिए Dexcalibur का सफलतापूर्वक उपयोग किया है, तो मैं आपको अपना अनुभव साझा करने के लिए प्रोत्साहित करता हूं।