Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
Obfuscapk — एक स्वचालित अस्पष्टीकरण उपकरण जो एंड्रॉइड ऐप्स के लिए है, ब्लैक-बॉक्स शैली में काम करता है, उन्नत अस्पष्टीकरण सुविधाओं का समर्थन करता है और इसमें मॉड्यूलर आर्किटेक्चर है जो नई तकनीकों के साथ आसानी से विस्तार योग्य है। | Kitploit
उपकरण/GitHubGitHub/claudiugeorgiu/obfuscapk
एंड्रॉइड सुरक्षास्थैतिक विश्लेषणगतिशील विश्लेषण (सैंडबॉक्सिंग)रिवर्स इंजीनियरिंगमोबाइल सुरक्षापेपर और शोधलर्निंग और शिक्षाArchived
GitHubclaudiugeorgiu/obfuscapk

Obfuscapk

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

रिपॉजिटरी देखें
1.3k3232 साल पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

[!IMPORTANT] यह प्रोजेक्ट संग्रहीत है और अब इसका रखरखाव नहीं किया जाता है।

कुछ सामान्य प्रश्नों के उत्तर FAQ और समस्या निवारण में दिए गए हैं।

Logo

Android ऐप्स के लिए एक ब्लैक-बॉक्स अस्पष्टीकरण उपकरण।

Codacy Code Coverage Python Version License

Obfuscapk एक मॉड्यूलर पायथन उपकरण है जो Android ऐप्स को बिना उनके स्रोत कोड की आवश्यकता के अस्पष्ट करने के लिए है, क्योंकि मूल apk फ़ाइल को डीकंपाइल करने और नया एप्लिकेशन बनाने के लिए apktool का उपयोग किया जाता है, जो डीकंपाइल की गई smali कोड, संसाधनों और मेनिफेस्ट पर कुछ अस्पष्टीकरण तकनीकों को लागू करने के बाद होता है। अस्पष्ट किया गया ऐप मूल ऐप के समान कार्यक्षमता बनाए रखता है, लेकिन अंदरूनी अंतर कभी-कभी नए एप्लिकेशन को मूल से बहुत अलग बना देते हैं (जैसे, हस्ताक्षर-आधारित एंटीवायरस सॉफ़्टवेयर के लिए)।

🆕 Android App Bundle समर्थन 🆕

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" }

root@kitploit:~
## ❱ डेमो

![डेमो](https://assets.kitploit.com/production/public/readmes/3132/632e285a29e53c28a5549c70012673a2761ca3ca4fd7eac3ad89be3d6a9a2a21.gif)

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

![आर्किटेक्चर](https://assets.kitploit.com/production/public/readmes/3132/da41bec35f1c09df38ad201aa1e74f0b1426dba0201162a70b4d5376b3da654e.png)

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

Docker image


Prerequisites

यह Obfuscapk को स्थापित करने का सुझाया गया तरीका है, क्योंकि एकमात्र आवश्यकता Docker का एक नवीनतम संस्करण स्थापित होना है:```Shell $ docker --version Docker version 20.10.21, build baeda1f

root@kitploit:~
#### आधिकारिक 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

Install

यदि आपने 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 .

root@kitploit:~
जब Docker इमेज तैयार हो जाए, तो यह सुनिश्चित करने के लिए एक त्वरित परीक्षण करें कि सब कुछ सही ढंग से स्थापित किया गया था:```Shell
$ docker run --rm -it obfuscapk --help
usage: python3 -m obfuscapk.cli [-h] -o OBFUSCATOR [-w DIR] [-d OUT_APK_OR_AAB]
...

Obfuscapk अब उपयोग के लिए तैयार है, उपयोग निर्देश देखें अधिक जानकारी के लिए।

स्रोत से


पूर्वापेक्षाएँ

सुनिश्चित करें कि आपके पास नवीनतम संस्करण हो apktool, apksigner और zipalign स्थापित और कमांड लाइन से उपलब्ध हो:```Shell $ apktool Apktool v2.9.0 - a tool for reengineering Android apk files ...

root@kitploit:~
```Shell
$ apksigner
Usage:  apksigner <command> [options]
        apksigner --version
        apksigner --help
...
root@kitploit:~
$ zipalign
Zip alignment utility
Copyright (C) 2009 The Android Open Source Project
...

ऐप बंडल अस्पष्टता (obfuscation) का समर्थन करने के लिए आपको BundleDecompiler की भी आवश्यकता है, इसलिए नवीनतम उपलब्ध संस्करण यहाँ से डाउनलोड करें, इसे BundleDecompiler.jar के रूप में PATH में शामिल एक निर्देशिका में सहेजें (उदाहरण के लिए, Ubuntu में, /usr/local/bin या /usr/bin) और सुनिश्चित करें कि इसका निष्पादन योग्य ध्वज (executable flag) सेट है।

BundleDecompiler और apktool का उपयोग करने के लिए आपको Java के एक हालिया संस्करण की भी आवश्यकता है। zipalign और apksigner Android SDK में शामिल हैं। निष्पादन योग्य फ़ाइलों के स्थान को निम्नलिखित पर्यावरण चर (environment variables) के माध्यम से भी निर्दिष्ट किया जा सकता है: APKTOOL_PATH, BUNDLE_DECOMPILER_PATH, APKSIGNER_PATH और ZIPALIGN_PATH (उदाहरण के लिए, Ubuntu में, एक ही टर्मिनल में Obfuscapk चलाने से पहले export APKTOOL_PATH=/custom/location/apktool चलाएं)।

उपरोक्त उपकरणों के अलावा, इस परियोजना की एकमात्र आवश्यकता एक कार्यशील Python 3 (कम से कम 3.7) स्थापना (इसके पैकेज मैनेजर pip के साथ) है।

इंस्टॉल करें

परियोजना के मुख्य निर्देशिका (Obfuscapk/) में आवश्यक निर्भरताओं (dependencies) को स्थापित करने के लिए निम्नलिखित कमांड चलाएं:```Shell $ # Make sure to run the commands in Obfuscapk/ directory.

$ # The usage of a virtual environment is highly recommended. $ python3 -m venv venv $ source venv/bin/activate

$ # Install Obfuscapk's requirements. $ python3 -m pip install -r src/requirements.txt

root@kitploit:~
आवश्यकताएँ स्थापित होने के बाद, यह जांचने के लिए एक त्वरित परीक्षण करें कि सब कुछ सही ढंग से काम करता है:```Shell
$ cd src/
$ # The following command has to be executed always from Obfuscapk/src/ directory
$ # or by adding Obfuscapk/src/ directory to PYTHONPATH environment variable.
$ python3 -m obfuscapk.cli --help
usage: python3 -m obfuscapk.cli [-h] -o OBFUSCATOR [-w DIR] [-d OUT_APK_OR_AAB]
...

Obfuscapk अब उपयोग के लिए तैयार है, उपयोग निर्देश देखें अधिक जानकारी के लिए।

❱ उपयोग

अब से, Obfuscapk को obfuscapk के रूप में उपलब्ध एक निष्पादन योग्य माना जाएगा, इसलिए आपको उपकरण को स्थापित करने के तरीके के अनुसार कमांड को अनुकूलित करने की आवश्यकता है:

  • Docker छवि: अस्पष्ट करने के लिए एप्लिकेशन वाली एक स्थानीय निर्देशिका को कंटेनर में /workdir पर माउंट किया जाना चाहिए (उदाहरण के लिए, वर्तमान निर्देशिका "${PWD}"), इसलिए कमांड:

    root@kitploit:~
    $ obfuscapk [params...]
    

    बन जाता है:

    root@kitploit:~
    $ docker run --rm -it -u $(id -u):$(id -g) -v "${PWD}":"/workdir" obfuscapk [params...]
    
  • स्रोत से: प्रत्येक निर्देश को Obfuscapk/src/ निर्देशिका से निष्पादित किया जाना चाहिए (या Obfuscapk/src/ निर्देशिका को PYTHONPATH पर्यावरण चर में जोड़कर) और कमांड:

    root@kitploit:~
    $ obfuscapk [params...]
    

    बन जाता है:

    root@kitploit:~
    $ python3 -m obfuscapk.cli [params...]
    

आइए सहायता संदेश को देखकर शुरू करें:```Shell $ obfuscapk --help obfuscapk [-h] -o OBFUSCATOR [-w DIR] [-d OUT_APK_OR_AAB] [-i] [-p] [-k VT_API_KEY] [--keystore-file KEYSTORE_FILE] [--keystore-password KEYSTORE_PASSWORD] [--key-alias KEY_ALIAS] [--key-password KEY_PASSWORD] [--use-aapt2] <APK_OR_BUNDLE_FILE>

root@kitploit:~
यहाँ दो अनिवार्य पैरामीटर हैं: `<APK_OR_BUNDLE_FILE>`, ऑबफस्केट करने के लिए एपीके या ऐप बंडल फ़ाइल का पथ (सापेक्ष या निरपेक्ष) और लागू करने के लिए ऑबफस्केशन तकनीकों के नामों की सूची (`-o` विकल्प के साथ निर्दिष्ट जिसे कई बार उपयोग किया जा सकता है, जैसे, `-o Rebuild -o NewAlignment -o NewSignature`)। अन्य वैकल्पिक तर्क इस प्रकार हैं:

* `-w DIR` का उपयोग कार्यशील निर्देशिका सेट करने के लिए किया जाता है जहाँ मध्यवर्ती फ़ाइलें (जो `apktool` द्वारा उत्पन्न होती हैं) सहेजी जाएँगी। यदि निर्दिष्ट नहीं किया गया है, तो इनपुट एप्लिकेशन के समान निर्देशिका में `obfuscation_working_dir` नाम की निर्देशिका बनाई जाती है। यह डीबगिंग उद्देश्यों के लिए उपयोगी हो सकता है, लेकिन यदि इसकी आवश्यकता नहीं है तो इसे एक अस्थायी निर्देशिका पर सेट किया जा सकता है (जैसे, `-w /tmp/`)।

* `-d OUT_APK_OR_AAB` का उपयोग गंतव्य फ़ाइल का पथ सेट करने के लिए किया जाता है: ऑबफस्केशन प्रक्रिया द्वारा उत्पन्न एपीके फ़ाइल (जैसे, `-d /home/user/Desktop/obfuscated.apk` या `-d /home/user/Desktop/obfuscated.aab`)। यदि निर्दिष्ट नहीं किया गया है, तो अंतिम ऑबफस्केटेड फ़ाइल कार्यशील निर्देशिका के अंदर सहेजी जाएगी। ध्यान दें: मौजूदा फ़ाइलें बिना किसी चेतावनी के ओवरराइट कर दी जाएँगी।

* `-i` एक फ्लैग है जो ऑबफस्केशन प्रक्रिया के दौरान ज्ञात तृतीय-पक्ष लाइब्रेरियों को अनदेखा करने के लिए है, ताकि कम संसाधनों का उपयोग हो, प्रदर्शन बढ़े और त्रुटियों का जोखिम कम हो। अनदेखा करने के लिए [लाइब्रेरियों की सूची](https://github.com/ClaudiuGeorgiu/Obfuscapk/blob/master/src/obfuscapk/resources/libs_to_ignore.txt) [LiteRadar](https://github.com/pkumza/LiteRadar) परियोजना से अनुकूलित की गई है।

* `-p` एक फ्लैग है जो ऑबफस्केशन संचालन के दौरान प्रगति पट्टियाँ दिखाने के लिए है। जब टूल का उपयोग बैच संचालन/स्वचालित बिल्ड में किया जाता है, तो प्रगति पट्टियाँ अक्षम रखना सुविधाजनक होता है, अन्यथा ऑबफस्केशन प्रगति देखने के लिए इस फ्लैग को सक्षम किया जाना चाहिए।

* `-k VT_API_KEY` की आवश्यकता केवल `VirusTotal` ऑबफस्केटर का उपयोग करते समय होती है, ताकि Virus Total के साथ संचार करते समय उपयोग की जाने वाली API कुंजी सेट की जा सके।

* `--keystore-file KEYSTORE_FILE`, `--keystore-password KEYSTORE_PASSWORD`, `--key-alias KEY_ALIAS` और `--key-password KEY_PASSWORD` का उपयोग एक कस्टम कीस्टोर निर्दिष्ट करने के लिए किया जा सकता है (एपीके हस्ताक्षर के लिए आवश्यक)। यदि `--keystore-file` का उपयोग किया जाता है, तो `--keystore-password` और `--key-alias` भी निर्दिष्ट किए जाने चाहिए, जबकि `--key-password` की आवश्यकता केवल तब होती है जब चुनी गई कुंजी का पासवर्ड कीस्टोर पासवर्ड से भिन्न हो। डिफ़ॉल्ट रूप से (जब `--keystore-file` निर्दिष्ट नहीं किया जाता है), हस्ताक्षर संचालन के लिए [Obfuscapk के साथ बंडल किए गए कीस्टोर](https://github.com/ClaudiuGeorgiu/Obfuscapk/blob/master/src/obfuscapk/resources/obfuscation_keystore.jks) का उपयोग किया जाता है।

* `--ignore-packages-file IGNORE_PACKAGES_FILE` एक फ़ाइल का पथ है जिसमें अनदेखा किए जाने वाले पैकेज नाम शामिल हैं। जब इस विकल्प का उपयोग किया जाता है, तो उन पैकेजों के अंदर की सभी क्लासेज़ ऑबफस्केट नहीं होंगी। फ़ाइल में प्रति पंक्ति एक पैकेज नाम होना चाहिए जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है:
    ```
    com.mycompany.dontobfuscate
    com.mycompany.ignore
    ...
    ```
* `--use-aapt2` एक फ्लैग है जो `apktool` के साथ ऐप को पुनर्निर्माण करते समय aapt2 विकल्प का उपयोग करने के लिए है।

आइए अब एक सरल कार्यशील उदाहरण पर विचार करें कि Obfuscapk कैसे काम करता है:```Shell
$ # original.apk is a valid Android apk file.
$ obfuscapk -o RandomManifest -o Rebuild -o NewAlignment -o NewSignature original.apk

जब उपरोक्त कमांड चलाया जाता है, तो पर्दे के पीछे यह होता है:

  • चूंकि कोई कार्यशील निर्देशिका निर्दिष्ट नहीं की गई थी, एक नई कार्यशील निर्देशिका (obfuscation_working_dir) original.apk के समान स्थान पर बनाई जाती है (यह त्रुटियों के मामले में smali फ़ाइलों/मेनिफेस्ट/संसाधनों का निरीक्षण करने के लिए उपयोगी हो सकता है)

  • यह सुनिश्चित करने के लिए कुछ जाँचें की जाती हैं कि सभी आवश्यक फ़ाइलें/निष्पादन योग्य फ़ाइलें उपलब्ध हैं और उपयोग के लिए तैयार हैं

  • वास्तविक अस्पष्टीकरण प्रक्रिया शुरू होती है: निर्दिष्ट अस्पष्टीकरणकर्ताओं को (क्रम में) एक के बाद एक तब तक निष्पादित किया जाता है जब तक कोई अस्पष्टीकरणकर्ता शेष न हो या कोई त्रुटि न आए

    • पहला अस्पष्टीकरणकर्ता चलाते समय, original.apk को apktool से डीकंपाइल किया जाता है और परिणाम कार्यशील निर्देशिका में संग्रहीत किए जाते हैं

    • चूंकि पहला अस्पष्टीकरणकर्ता RandomManifest है, डीकंपाइल किए गए Android मेनिफेस्ट में प्रविष्टियों को बेतरतीब ढंग से पुनर्व्यवस्थित किया जाता है (xml संरचनाओं को तोड़े बिना)

    • Rebuild अस्पष्टीकरणकर्ता केवल apktool का उपयोग करके एप्लिकेशन को (अब संशोधित मेनिफेस्ट के साथ) पुनर्निर्माण करता है, और चूंकि कोई आउटपुट फ़ाइल निर्दिष्ट नहीं की गई थी, परिणामी apk फ़ाइल पहले बनाई गई कार्यशील निर्देशिका में सहेजी जाती है

    • अस्पष्टीकरणकर्ता परिणामी apk फ़ाइल को संरेखित करने के लिए टूल का उपयोग करता है

जैसा कि पिछले उदाहरण में देखा गया है, किसी अस्पष्टीकरण ऑपरेशन को पूरा करने के लिए, Rebuild, NewAlignment और NewSignature अस्पष्टीकरणकर्ताओं की हमेशा आवश्यकता होती है, ताकि अंतिम अस्पष्टीकृत apk का निर्माण किया जा सके। वे वास्तविक अस्पष्टीकरण तकनीक नहीं हैं, लेकिन निर्माण प्रक्रिया में उनकी आवश्यकता होती है, इसलिए समग्र आर्किटेक्चर को मॉड्यूलर रखने के लिए उन्हें अस्पष्टीकरणकर्ताओं की सूची में शामिल किया गया है।

जैसा अपेक्षित काम नहीं कर रहा? देखें FAQ और समस्या निवारण.

❱ अस्पष्टीकरणकर्ता

Obfuscapk में शामिल अस्पष्टीकरणकर्ताओं को उनके द्वारा किए जाने वाले कार्यों के आधार पर विभिन्न श्रेणियों में विभाजित किया जा सकता है:

  • Trivial: जैसा कि नाम से पता चलता है, इस श्रेणी में सरल संचालन शामिल हैं (जो मूल एप्लिकेशन को बहुत अधिक संशोधित नहीं करते हैं), जैसे कि apk फ़ाइल पर नए हस्ताक्षर के साथ हस्ताक्षर करना।

  • Rename: संचालन जो उपयोग किए गए पहचानकर्ताओं (क्लास, फ़ील्ड, मेथड) के नाम बदलते हैं।

  • Encryption: एन्क्रिप्टेड कोड/संसाधनों को पैकेज करना और ऐप निष्पादन के दौरान उन्हें डिक्रिप्ट करना। जब Obfuscapk शुरू होता है, तो यह स्वचालित रूप से एक यादृच्छिक गुप्त कुंजी (32 वर्ण लंबी, ASCII अक्षरों और अंकों का उपयोग करके) उत्पन्न करता है जिसका उपयोग एन्क्रिप्शन के लिए किया जाएगा।

  • Code: वे सभी संचालन जिनमें डीकंपाइल स्रोत कोड का संशोधन शामिल है।

  • Resources: संसाधन फ़ाइलों पर संचालन (जैसे मेनिफेस्ट को संशोधित करना)।

  • Other

Obfuscapk के साथ वर्तमान में बंडल किए गए अस्पष्टीकरणकर्ता नीचे संक्षेप में प्रस्तुत किए गए हैं (वर्णमाला क्रम में)। अधिक विवरण के लिए कृपया परियोजना के स्रोत कोड देखें।

[!सुझाव] नीचे दिए गए सभी अस्पष्टीकरणकर्ता वास्तविक अस्पष्टीकरण तकनीकों के अनुरूप नहीं हैं (उदा., Rebuild, NewAlignment, NewSignature और VirusTotal), लेकिन आर्किटेक्चर को मॉड्यूलर और नई कार्यक्षमता के साथ विस्तारित करने में आसान रखने के लिए उन्हें अस्पष्टीकरणकर्ता के रूप में लागू किया गया है।

AdvancedReflection [Code]

Android फ्रेमवर्क के खतरनाक APIs को लागू करने के लिए रिफ्लेक्शन का उपयोग करता है। यह पता लगाने के लिए कि कोई विधि Android फ्रेमवर्क से संबंधित है या नहीं, Obfuscapk Backes et al द्वारा खोजी गई मैपिंग को संदर्भित करता है।
📄 AdvancedReflection स्रोत कोड

ArithmeticBranch [Code]

जंक कोड सम्मिलित करें। इस मामले में, जंक कोड अंकगणितीय गणनाओं और इन गणनाओं के परिणाम पर निर्भर एक शाखा निर्देश से बना होता है, जिसे इस तरह से तैयार किया जाता है कि शाखा कभी नहीं ली जाती।
📄 ArithmeticBranch स्रोत कोड

AssetEncryption [Encryption]

एसेट फ़ाइलों को एन्क्रिप्ट करें।
📄 AssetEncryption स्रोत कोड

CallIndirection [Code]

यह तकनीक कोड सिमेंटिक्स को प्रभावित किए बिना नियंत्रण-प्रवाह ग्राफ को संशोधित करती है: यह नई विधियाँ जोड़ती है जो मूल विधियों को लागू करती हैं। उदाहरण के लिए, m1 विधि के लिए एक आह्वान एक नई रैपर विधि m2 द्वारा प्रतिस्थापित किया जाएगा, जो आह्वान करने पर मूल विधि m1 को कॉल करती है।
📄 CallIndirection स्रोत कोड

ClassRename [Rename]

पैकेज का नाम बदलें और क्लास का नाम बदलें (मेनिफेस्ट फ़ाइल में भी)।
📄 ClassRename स्रोत कोड

ConstStringEncryption [Encryption]

कोड में स्थिर स्ट्रिंग्स को एन्क्रिप्ट करें।
📄 ConstStringEncryption स्रोत कोड

DebugRemoval [Code]

डीबग जानकारी हटाएँ।
📄 DebugRemoval स्रोत कोड

FieldRename [Rename]

फ़ील्ड का नाम बदलें।
📄 FieldRename स्रोत कोड

Goto [Code]

किसी विधि को देखते हुए, यह विधि के अंत की ओर इशारा करते हुए एक goto निर्देश और पहले goto के बाद के निर्देश की ओर इशारा करते हुए एक और goto डालता है; यह दो नए नोड जोड़कर नियंत्रण-प्रवाह ग्राफ को संशोधित करता है।
📄 Goto स्रोत कोड

LibEncryption [Encryption]

नेटिव लाइब्रेरीज़ को एन्क्रिप्ट करें।
📄 LibEncryption स्रोत कोड

MethodOverload [Code]

यह विभिन्न विधियों को समान नाम निर्दिष्ट करने के लिए Java प्रोग्रामिंग भाषा की ओवरलोडिंग सुविधा का शोषण करता है, लेकिन विभिन्न तर्कों का उपयोग करता है। किसी पहले से मौजूद विधि को देखते हुए, यह तकनीक समान नाम और तर्कों के साथ एक नई void विधि बनाती है, लेकिन यह नए यादृच्छिक तर्क भी जोड़ती है। फिर, नई विधि का मुख्य भाग यादृच्छिक अंकगणितीय निर्देशों से भरा जाता है।
📄 MethodOverload स्रोत कोड

MethodRename [Rename]

विधियों का नाम बदलें।
📄 MethodRename स्रोत कोड

NewAlignment [Trivial]

एप्लिकेशन को पुनः संरेखित करें।
📄 NewAlignment स्रोत कोड

NewSignature [Trivial]

एक नए कस्टम हस्ताक्षर के साथ एप्लिकेशन पर फिर से हस्ताक्षर करें।
📄 NewSignature स्रोत कोड

Nop [Code]

जंक कोड सम्मिलित करें। Nop, no-operation का संक्षिप्त रूप, एक समर्पित निर्देश है जो कुछ नहीं करता है। यह तकनीक प्रत्येक विधि कार्यान्वयन के भीतर बेतरतीब ढंग से nop निर्देश सम्मिलित करती है।
📄 Nop स्रोत कोड

RandomManifest [Resource]

मेनिफेस्ट फ़ाइल में प्रविष्टियों को बेतरतीब ढंग से पुनर्व्यवस्थित करें।
📄 RandomManifest स्रोत कोड

Rebuild [Trivial]

एप्लिकेशन का पुनर्निर्माण करें।
📄 Rebuild स्रोत कोड

Reflection [Code]

यह तकनीक ऐप के विधि आह्वानों की तलाश में मौजूदा कोड का विश्लेषण करती है, Android फ्रेमवर्क (देखें AdvancedReflection) के कॉल को अनदेखा करते हुए। यदि इसे उपयुक्त विधि आह्वान वाला कोई निर्देश मिलता है (अर्थात, कोई कंस्ट्रक्टर विधि नहीं, सार्वजनिक दृश्यता, पर्याप्त मुक्त रजिस्टर आदि), तो ऐसे आह्वान को एक कस्टम विधि पर पुनर्निर्देशित किया जाता है जो Reflection APIs का उपयोग करके मूल विधि को लागू करेगी।
📄 Reflection स्रोत कोड

Reorder [Code]

इस तकनीक में कोड में बुनियादी ब्लॉकों के क्रम को बदलना शामिल है। जब एक शाखा निर्देश मिलता है, तो शर्त को उलट दिया जाता है (उदा., branch if lower than, branch if greater or equal than बन जाता है) और लक्ष्य बुनियादी ब्लॉकों को तदनुसार पुनर्व्यवस्थित किया जाता है। इसके अलावा, यह goto निर्देशों का दुरुपयोग करके बेतरतीब ढंग से कोड को पुनर्व्यवस्थित भी करता है।
📄 Reorder स्रोत कोड

ResStringEncryption [Encryption]

संसाधनों में स्ट्रिंग्स को एन्क्रिप्ट करें (केवल वे जो कोड के अंदर कॉल की जाती हैं)।
📄 ResStringEncryption स्रोत कोड

VirusTotal [Other]

मूल और अस्पष्टीकृत एप्लिकेशन को Virus Total पर भेजें। आपको VT API कुंजी प्रदान करनी होगी (देखें -k विकल्प)।
📄 VirusTotal स्रोत कोड

❱ लाइसेंस

आप इस कोड का उपयोग करने के लिए स्वतंत्र हैं MIT लाइसेंस के तहत।

❱ श्रेय

Unige Dibris

यह सॉफ्टवेयर कंप्यूटर सुरक्षा प्रयोगशाला (CSecLab) में अनुसंधान उद्देश्यों के लिए विकसित किया गया था, जो DIBRIS, जेनोआ विश्वविद्यालय में स्थित है।

❱ टीम

  • Simone Aonzo - अनुसंधान सहायक
  • Gabriel Claudiu Georgiu - मुख्य डेवलपर
  • Luca Verderame - पोस्टडॉक्टरल शोधकर्ता
  • Alessio Merlo - संकाय सदस्य
टूल डाउनलोड करें
NewAlignment
zipalign
  • NewSignature अस्पष्टीकरणकर्ता नवनिर्मित apk फ़ाइल पर एक कस्टम प्रमाणपत्र के साथ हस्ताक्षर करता है जो एक Obfuscapk के साथ बंडल किए गए कीस्टोर में निहित है (हालाँकि --keystore-file पैरामीटर के साथ एक अलग कीस्टोर निर्दिष्ट किया जा सकता है)

  • जब सभी अस्पष्टीकरणकर्ता त्रुटियों के बिना निष्पादित हो जाते हैं, तो परिणामी अस्पष्टीकृत apk फ़ाइल obfuscation_working_dir/original_obfuscated.apk में पाई जा सकती है, जो हस्ताक्षरित, संरेखित और किसी डिवाइस/एम्युलेटर में स्थापित करने के लिए तैयार है।