
Ein automatisches Verschleierungswerkzeug für Android-Apps, das im Black-Box-Verfahren arbeitet, erweiterte Verschleierungsfunktionen unterstützt und eine modulare Architektur besitzt, die leicht um neue Techniken erweiterbar ist.
[!WICHTIG] Dieses Projekt ist archiviert und wird nicht mehr weiterentwickelt.
Einige der häufigsten Fragen werden in der FAQ und Fehlerbehebung beantwortet.

Ein Black-Box-Verschleierungswerkzeug für Android-Apps.
Obfuscapk ist ein modulares Python-Tool zur Verschleierung von Android-Apps, ohne dass deren Quellcode benötigt wird, da apktool verwendet wird, um die ursprüngliche APK-Datei zu dekompilieren und eine neue Anwendung zu erstellen, nachdem einige Verschleierungstechniken auf den dekompilierten smali-Code, die Ressourcen und das Manifest angewendet wurden. Die verschleierte App behält die gleiche Funktionalität wie die ursprüngliche, aber die Unterschiede unter der Haube machen die neue Anwendung manchmal sehr unterschiedlich von der ursprünglichen (z. B. für signaturbasierte Antivirensoftware).
Obfuscapk fügt Unterstützung für
Android App Bundles (AAB-Dateien) hinzu,
indem BundleDecompiler verwendet wird (siehe
#121). Um diese neue Funktion zu nutzen,
laden Sie die neueste Version von BundleDecompiler von
hier herunter,
speichern Sie sie als BundleDecompiler.jar in einem Verzeichnis, das in PATH enthalten ist (z. B. unter Ubuntu in
/usr/local/bin oder /usr/bin) und stellen Sie sicher, dass die ausführbare Flagge gesetzt ist.
[!WICHTIG] BundleDecompiler funktioniert unter Windows noch nicht, daher wird die Verschleierung von App-Bundles von Obfuscapk unter Windows nicht unterstützt. Außerdem befindet sich die Unterstützung für App Bundles noch in der frühen Entwicklung. Wenn Sie auf Probleme stoßen oder uns bei der Verbesserung helfen möchten, lesen Sie bitte Mitwirken.
Weitere Details zu Obfuscapk finden Sie in der Arbeit "Obfuscapk: An open-source black-box obfuscation tool for Android apps". Sie können die Arbeit wie folgt zitieren:```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" }
## ❱ Demo

## ❱ Architektur

Obfuscapk ist modular und erweiterbar konzipiert und basiert daher auf einem
[Plugin-System](https://github.com/tibonihoo/yapsy). Folglich ist jeder Obfuskator ein
Plugin, das von einer abstrakten
[Basisklasse](https://github.com/ClaudiuGeorgiu/Obfuscapk/blob/master/src/obfuscapk/obfuscator_category.py)
erbt und die Methode `obfuscate` implementieren muss. Wenn das Tool mit der Verarbeitung einer neuen
Android-Anwendungsdatei beginnt, erstellt es ein
[Obfuskationsobjekt](https://github.com/ClaudiuGeorgiu/Obfuscapk/blob/master/src/obfuscapk/obfuscation.py),
um alle benötigten Informationen (z. B. den Speicherort des dekompilierten `smali`-Codes)
und den internen Zustand der Operationen (z. B. die Liste der bereits verwendeten Obfuskatoren) zu speichern.
Dann wird das Obfuskationsobjekt als Parameter an die Methode `obfuscate` an alle
aktiven Plugins/Obfuskatoren (nacheinander) übergeben, um verarbeitet und modifiziert zu werden. Die Liste und
die Reihenfolge der aktiven Plugins wird über [Kommandozeilenoptionen](#-usage) festgelegt.
Das Tool lässt sich leicht mit neuen Obfuskatoren erweitern: Es reicht aus, den Quellcode
zur Implementierung der Obfuskationstechnik und die Plugin-Metadaten (eine
`<obfuscator-name>.obfuscator`-Datei) im Verzeichnis
[`src/obfuscapk/obfuscators`](https://github.com/ClaudiuGeorgiu/Obfuscapk/tree/master/src/obfuscapk/obfuscators)
abzulegen (nehmen Sie einen einfachen bestehenden Obfuskator wie
[`Nop`](https://github.com/ClaudiuGeorgiu/Obfuscapk/blob/master/src/obfuscapk/obfuscators/nop/nop.py)
als Ausgangsbeispiel). Das Tool erkennt das neue Plugin automatisch, sodass keine
weitere Konfiguration erforderlich ist (das neue Plugin wird wie alle anderen mit dem Tool
gebündelten Plugins behandelt).
## ❱ Installation
Es gibt zwei Möglichkeiten, um eine funktionsfähige Kopie von Obfuscapk auf Ihrem eigenen Computer zu erhalten: entweder
durch [Verwendung von Docker](#docker-image) oder durch [direkte Verwendung des Quellcodes](#from-source)
in einer `Python 3`-Umgebung. In beiden Fällen besteht der erste Schritt darin, eine lokale
Kopie dieses Repositorys zu erhalten. Öffnen Sie also ein Terminal in dem Verzeichnis, in dem Sie
das Projekt speichern möchten, und klonen Sie das Repository:```Shell
$ git clone https://github.com/ClaudiuGeorgiu/Obfuscapk.git
Dies ist die empfohlene Methode zur Installation von Obfuscapk, da die einzige Voraussetzung eine aktuelle Version von Docker ist:```Shell $ docker --version Docker version 20.10.21, build baeda1f
#### Offizielles Docker Hub Image
Das [offizielle Obfuscapk Docker-Image](https://hub.docker.com/r/claudiugeorgiu/obfuscapk) ist auf Docker Hub verfügbar (automatisch aus diesem Repository erstellt):```Shell
$ # Download the Docker image.
$ docker pull claudiugeorgiu/obfuscapk
$ # Give it a shorter name.
$ docker tag claudiugeorgiu/obfuscapk obfuscapk
Wenn Sie das offizielle Image von Docker Hub heruntergeladen haben, sind Sie bereit, das Tool zu verwenden, also
schauen Sie sich die Verwendungshinweise an, andernfalls führen Sie den folgenden
Befehl im zuvor erstellten Verzeichnis Obfuscapk/src/ aus (dem Ordner, der die
Dockerfile enthält), um das Docker-Image zu erstellen:```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 .
Wenn das Docker-Image bereit ist, führen Sie einen kurzen Test durch, um zu überprüfen, ob alles korrekt installiert wurde:```Shell
$ docker run --rm -it obfuscapk --help
usage: python3 -m obfuscapk.cli [-h] -o OBFUSCATOR [-w DIR] [-d OUT_APK_OR_AAB]
...
Obfuscapk ist jetzt bereit zur Verwendung, siehe die Nutzungshinweise für weitere Informationen.