
एक स्वचालित अस्पष्टीकरण उपकरण जो एंड्रॉइड ऐप्स के लिए है, ब्लैक-बॉक्स शैली में काम करता है, उन्नत अस्पष्टीकरण सुविधाओं का समर्थन करता है और इसमें मॉड्यूलर आर्किटेक्चर है जो नई तकनीकों के साथ आसानी से विस्तार योग्य है।
[!IMPORTANT] यह प्रोजेक्ट संग्रहीत है और अब इसका रखरखाव नहीं किया जाता है।
कुछ सामान्य प्रश्नों के उत्तर FAQ और समस्या निवारण में दिए गए हैं।

Android ऐप्स के लिए एक ब्लैक-बॉक्स अस्पष्टीकरण उपकरण।
Obfuscapk एक मॉड्यूलर पायथन उपकरण है जो Android ऐप्स को बिना उनके स्रोत कोड की आवश्यकता के अस्पष्ट करने के लिए है, क्योंकि मूल apk फ़ाइल को डीकंपाइल करने और नया एप्लिकेशन बनाने के लिए apktool का उपयोग किया जाता है, जो डीकंपाइल की गई smali कोड, संसाधनों और मेनिफेस्ट पर कुछ अस्पष्टीकरण तकनीकों को लागू करने के बाद होता है। अस्पष्ट किया गया ऐप मूल ऐप के समान कार्यक्षमता बनाए रखता है, लेकिन अंदरूनी अंतर कभी-कभी नए एप्लिकेशन को मूल से बहुत अलग बना देते हैं (जैसे, हस्ताक्षर-आधारित एंटीवायरस सॉफ़्टवेयर के लिए)।
Obfuscapk Android App Bundles (aab फ़ाइलें) के लिए समर्थन जोड़ रहा है, BundleDecompiler का उपयोग करके (देखें #121)। इस नई सुविधा का उपयोग करने के लिए, BundleDecompiler का नवीनतम संस्करण यहाँ से डाउनलोड करें, इसे BundleDecompiler.jar के रूप में PATH में शामिल निर्देशिका में सहेजें (जैसे, Ubuntu में, /usr/local/bin या /usr/bin) और सुनिश्चित करें कि इसमें निष्पादन योग्य ध्वज सेट है।
[!IMPORTANT] BundleDecompiler अभी Windows पर काम नहीं करता है, इसलिए Windows प्लेटफ़ॉर्म पर Obfuscapk द्वारा ऐप बंडल अस्पष्टीकरण समर्थित नहीं है। साथ ही, ऐप बंडल समर्थन अभी प्रारंभिक विकास में है, इसलिए यदि आपको कोई समस्या आती है या आप हमें सुधारने में मदद करना चाहते हैं, तो कृपया योगदान देखें।
Obfuscapk के बारे में अधिक विवरण पेपर "Obfuscapk: An open-source black-box obfuscation tool for Android apps" में पाया जा सकता है। आप पेपर को इस प्रकार उद्धृत कर सकते हैं:```BibTeX @article{aonzo2020obfuscapk, title = "Obfuscapk: An open-source black-box obfuscation tool for Android apps", journal = "SoftwareX", volume = "11", pages = "100403", year = "2020", issn = "2352-7110", doi = "https://doi.org/10.1016/j.softx.2020.100403", url = "https://www.sciencedirect.com/science/article/pii/S2352711019302791", author = "Simone Aonzo and Gabriel Claudiu Georgiu and Luca Verderame and Alessio Merlo", keywords = "Android, Obfuscation, Program analysis" }
## ❱ डेमो

## ❱ आर्किटेक्चर

Obfuscapk को मॉड्यूलर और विस्तार में आसान बनाने के लिए डिज़ाइन किया गया है, इसलिए इसे [प्लगइन सिस्टम](https://github.com/tibonihoo/yapsy) का उपयोग करके बनाया गया है। परिणामस्वरूप, प्रत्येक ऑबफस्केटर एक प्लगइन है जो एक अमूर्त [बेस क्लास](https://github.com/ClaudiuGeorgiu/Obfuscapk/blob/master/src/obfuscapk/obfuscator_category.py) से विरासत प्राप्त करता है और `obfuscate` विधि को लागू करने की आवश्यकता होती है। जब टूल एक नई Android एप्लिकेशन फ़ाइल को प्रोसेस करना शुरू करता है, तो यह सभी आवश्यक जानकारी (जैसे, डीकंपाइल की गई `smali` कोड का स्थान) और संचालन की आंतरिक स्थिति (जैसे, पहले से उपयोग किए गए ऑबफस्केटरों की सूची) को संग्रहीत करने के लिए एक [ऑबफस्केशन ऑब्जेक्ट](https://github.com/ClaudiuGeorgiu/Obfuscapk/blob/master/src/obfuscapk/obfuscation.py) बनाता है। फिर ऑबफस्केशन ऑब्जेक्ट को सभी सक्रिय प्लगइन/ऑबफस्केटर को (अनुक्रम में) प्रोसेस और संशोधित करने के लिए `obfuscate` विधि के पैरामीटर के रूप में पास किया जाता है। सक्रिय प्लगइनों की सूची और क्रम [कमांड लाइन विकल्पों](#-usage) के माध्यम से निर्दिष्ट किया जाता है।
टूल को नए ऑबफस्केटर के साथ आसानी से विस्तारित किया जा सकता है: ऑबफस्केशन तकनीक को लागू करने वाला स्रोत कोड और प्लगइन मेटाडेटा (एक `<obfuscator-name>.obfuscator` फ़ाइल) को [`src/obfuscapk/obfuscators`](https://github.com/ClaudiuGeorgiu/Obfuscapk/tree/master/src/obfuscapk/obfuscators) निर्देशिका में जोड़ना पर्याप्त है (एक सरल मौजूदा ऑबफस्केटर जैसे [`Nop`](https://github.com/ClaudiuGeorgiu/Obfuscapk/blob/master/src/obfuscapk/obfuscators/nop/nop.py) को शुरुआती उदाहरण के रूप में लें)। टूल स्वचालित रूप से नए प्लगइन का पता लगाएगा, इसलिए किसी और कॉन्फ़िगरेशन की आवश्यकता नहीं है (नए प्लगइन को टूल के साथ बंडल किए गए अन्य सभी प्लगइनों की तरह ही व्यवहार किया जाएगा)।
## ❱ स्थापना
अपने कंप्यूटर पर Obfuscapk की एक कार्यशील प्रतिलिपि प्राप्त करने के दो तरीके हैं: या तो [Docker का उपयोग करके](#docker-image) या `Python 3` वातावरण में [सीधे स्रोत कोड का उपयोग करके](#from-source)। दोनों ही मामलों में, पहली चीज़ इस रिपॉजिटरी की एक स्थानीय प्रतिलिपि प्राप्त करना है, इसलिए उस निर्देशिका में एक टर्मिनल खोलें जहाँ आप प्रोजेक्ट को सहेजना चाहते हैं और रिपॉजिटरी को क्लोन करें:```Shell
$ git clone https://github.com/ClaudiuGeorgiu/Obfuscapk.git
यह Obfuscapk को स्थापित करने का सुझाया गया तरीका है, क्योंकि एकमात्र आवश्यकता Docker का एक नवीनतम संस्करण स्थापित होना है:```Shell $ docker --version Docker version 20.10.21, build baeda1f
#### आधिकारिक Docker Hub इमेज
[आधिकारिक Obfuscapk Docker इमेज](https://hub.docker.com/r/claudiugeorgiu/obfuscapk)
Docker Hub पर उपलब्ध है (इस रिपॉजिटरी से स्वचालित रूप से निर्मित):```Shell
$ # Download the Docker image.
$ docker pull claudiugeorgiu/obfuscapk
$ # Give it a shorter name.
$ docker tag claudiugeorgiu/obfuscapk obfuscapk
यदि आपने Docker Hub से आधिकारिक इमेज डाउनलोड की है, तो आप टूल का उपयोग करने के लिए तैयार हैं, इसलिए उपयोग निर्देश देखें, अन्यथा पहले बनाए गए Obfuscapk/src/ निर्देशिका (जिसमें Dockerfile युक्त फ़ोल्डर है) में निम्नलिखित कमांड चलाएं Docker इमेज बनाने के लिए:```Shell
$ # Make sure to run the command in Obfuscapk/src/ directory.
$ # It will take some time to download and install all the dependencies.
$ docker build -t obfuscapk .
जब Docker इमेज तैयार हो जाए, तो यह सुनिश्चित करने के लिए एक त्वरित परीक्षण करें कि सब कुछ सही ढंग से स्थापित किया गया था:```Shell
$ docker run --rm -it obfuscapk --help
usage: python3 -m obfuscapk.cli [-h] -o OBFUSCATOR [-w DIR] [-d OUT_APK_OR_AAB]
...
Obfuscapk अब उपयोग के लिए तैयार है, उपयोग निर्देश देखें अधिक जानकारी के लिए।