Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
apk.sh — Macht Reverse Engineering von Android-Apps einfacher, indem es wiederkehrende Aufgaben wie das Herunterladen, Dekodieren, Rebuilden und Patchen einer APK automatisiert. | Kitploit
Tools/GitHubGitHub/ax/apk.sh
Android-SicherheitDynamische Analyse (Sandboxing)Payload-GenerierungReverse EngineeringMobile SicherheitBinäranalyse
GitHubax/apk.sh

apk.sh

Macht Reverse Engineering von Android-Apps einfacher, indem es wiederkehrende Aufgaben wie das Herunterladen, Dekodieren, Rebuilden und Patchen einer APK automatisiert.

Repository anzeigen
3.8k226vor 6 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

🕹️ apk.sh

apk.sh ist ein Bash-Skript, das die Reverse-Engineering von Android-Apps erleichtert, indem es einige sich wiederholende Aufgaben wie das Ziehen, Dekodieren, Neuerstellen und Patchen einer APK automatisiert.

Funktionen

apk.sh verwendet im Wesentlichen apktool zum Disassemblieren, Dekodieren und Neuerstellen von Ressourcen sowie etwas Bash, um den frida-Gadget-Injektionsprozess zu automatisieren. Es unterstützt auch App Bundles/Split-APKs.

  • 🍄 Patchen von APKs, um frida-gadget.so beim Start zu laden.
  • 🆕 Unterstützt direkte Bytecode-Manipulation ohne Dekompilierung, dies vermeidet Dekompilierungs-/Rekompilierungsfehler.
  • 🍱 Unterstützung für App Bundles/Split-APKs.
  • 🔧 Disassemblieren von Ressourcen nahezu in die ursprüngliche Form mit apktool.
  • 🔩 Neuerstellen dekodierter Ressourcen zurück in binäre APK/JAR mit apktool.
  • 🗝️ Codesignieren der APK mit apksigner.
  • 🖥️ Unterstützung für mehrere Architekturen (arm, arm64, x86, x86_64).
  • 📵 Kein gerootetes Android-Gerät erforderlich.

Erste Schritte

⬅️ Das Ziehen einer APK von einem Gerät ist so einfach wie das Ausführen von ./apk.sh pull <paket_name>

🔧 Das Dekodieren einer APK ist so einfach wie das Ausführen von ./apk.sh decode <apk_name>

🔩 Das Neuerstellen einer APK ist so einfach wie das Ausführen von ./apk.sh build <apk_verzeichnis>

apk.sh pull

apk.sh pull zieht eine APK von einem Gerät. Es unterstützt App Bundles/Split-APKs, was bedeutet, dass Split-APKs in einer einzigen APK zusammengeführt werden (dies ist nützlich zum Patchen). Wenn das Paket ein App Bundle/Split-APK ist, kombiniert apk.sh die APKs zu einer einzigen APK und korrigiert alle öffentlichen Ressourcen-IDs.

apk.sh patch

apk.sh patch patcht eine APK, um frida-gadget.so beim Start zu laden.

frida-gadget.so ist eine gemeinsam genutzte Bibliothek von Frida, die dazu bestimmt ist, von Programmen geladen zu werden, die instrumentiert werden sollen (wenn der Injektionsmodus nicht geeignet ist). Durch einfaches Laden der Bibliothek können Sie mit vorhandenen Frida-basierten Tools wie frida-trace interagieren. Es unterstützt auch einen vollständig autonomen Ansatz, bei dem es Skripte vom Dateisystem ausführen kann, ohne externe Kommunikation.

Das Patchen einer APK ist so einfach wie das Ausführen von ./apk.sh patch <apk_name> --arch arm.

Sie können auch eine Frida-Gadget-Konfiguration in einer JSON-Datei angeben: ./apk.sh patch <apk_name> --arch arm --gadget-conf <config.json>

Wenn Sie "already interned" apktool d-Fehler wie in #30 erhalten, können Sie das Flag --only-main-classes übergeben, das beim Dekodieren Ihrer APK an apktool weitergeleitet wird.

🍄 Frida-Gadget-Konfigurationen

In der Standard-Interaktion stellt Frida Gadget eine frida-server-kompatible Schnittstelle bereit, die standardmäßig auf localhost:27042 lauscht. Um eine frühe Instrumentierung zu erreichen, lässt Frida die Konstruktorfunktion von Gadget blockieren, bis Sie entweder attach() auf den Prozess aufrufen oder resume() nach den üblichen spawn() -> attach() -> ...Instrumentierung anwenden...-Schritten.

Wenn Sie dieses blockierende Verhalten nicht möchten und möchten, dass das Programm sofort startet, oder wenn Sie möchten, dass es auf einer anderen Schnittstelle oder einem anderen Port lauscht, können Sie dies über eine JSON-Konfigurationsdatei anpassen.

Die Standardkonfiguration ist:

root@kitploit:~
{
  "interaction": {
    "type": "listen",
    "address": "127.0.0.1",
    "port": 27042,
    "on_port_conflict": "fail",
    "on_load": "wait"
  }
}

Sie können die Gadget-Konfigurationsdatei mit der Option --gadget-conf an apk.sh übergeben.

Skript-Interaktion

Eine typischerweise empfohlene Konfiguration könnte sein:

root@kitploit:~
{
  "interaction": {
    "type": "script",
    "path": "/data/local/tmp/script.js",
    "on_change":"reload"
  }
}

script.js könnte so etwas sein:

root@kitploit:~
var android_log_write = new NativeFunction(
    Module.getExportByName(null, '__android_log_write'),
    'int',
    ['int', 'pointer', 'pointer']
);

var tag = Memory.allocUtf8String("[frida-script][ax]");

var work = function() {
    setTimeout(function() {
        android_log_write(3, tag, Memory.allocUtf8String("ping @ " + Date.now()));
        work();
    }, 1000);
}

work();

android_log_write(3, tag, Memory.allocUtf8String(">--(O.o)-<"));

adb push script.js /data/local/tmp

./apk.sh patch <apk_name> --arch arm --gadget-conf <config.json>

adb install file.gadget.apk

Hinweis

Fügen Sie den folgenden Code hinzu, um die console.log-Ausgabe jedes Skripts aus dem frida codeshare bei Verwendung des Skript-Interaktionstyps an logcat auszugeben.

root@kitploit:~
// print to logcat the console.log output
// see: https://github.com/frida/frida/issues/382
var android_log_write = new NativeFunction(
    Module.getExportByName(null, '__android_log_write'),
    'int',
    ['int', 'pointer', 'pointer']
);
var tag = Memory.allocUtf8String("[frida-script][ax]");
console.log = function(str) {
    android_log_write(3, tag, Memory.allocUtf8String(str));
}

Voraussetzungen

  • apktool
  • apksigner
  • unxz
  • zipalign
  • aapt
  • adb

Verwendung

SYNOPSIS

root@kitploit:~
apk.sh [SUBCOMMAND] [APK FILE|APK DIR|PKG NAME] [FLAGS]
apk.sh pull [PKG NAME] [FLAGS]
apk.sh decode [APK FILE] [FLAGS]
apk.sh build [APK DIR] [FLAGS]
apk.sh patch [APK FILE] [FLAGS]
apk.sh rename [APK FILE] [PKG NAME] [FLAGS]

SUBCOMMANDS

root@kitploit:~
pull	APK von Gerät/Emulator ziehen.
decode	APK dekodieren.
build	APK neu erstellen.
patch	APK patchen.
rename	APK-Paket umbenennen.

FLAGS

-a, --arch <arch> Zielarchitektur angeben, erforderlich beim Patchen.

-g, --gadget-conf <json_datei> Eine Frida-Gadget-Konfigurationsdatei angeben, optional beim Patchen.

-n, --net Fügt beim Erstellen eine permissive Netzwerksicherheitskonfiguration hinzu, optional. Kann auch mit patch, pull und rename verwendet werden.

-r, --no-res Ressourcen beim Dekodieren nicht dekodieren (d.h. apktool -r), optional. Kann beim Patchen verwendet werden.

-s, --no-src Dex beim Dekodieren nicht disassemblieren (d.h. apktool -s), optional. Kann beim Patchen verwendet werden.

📃 Interessante Links

https://frida.re/docs/gadget/

https://lief-project.github.io/doc/latest/tutorials/09_frida_lief.html

https://koz.io/using-frida-on-android-without-root/

https://github.com/sensepost/objection/

https://github.com/NickstaDB/patch-apk/

https://neo-geo2.gitbook.io/adventures-on-security/frida-scripting-guide/frida-scripting-guide

https://github.com/ax/DEXPatch

Tool herunterladen