Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/ax/apk.sh
Sicurezza AndroidAnalisi Dinamica (Sandboxing)Generazione di PayloadReverse EngineeringSicurezza MobileAnalisi di Binari
GitHubax/apk.sh

apk.sh

Rende più semplice il reverse engineering delle app Android, automatizzando compiti ripetitivi come il pulling, il decoding, il rebuilding e il patching di un APK.

Vedi Repository
3.8k2266 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

🕹️ apk.sh

apk.sh è uno script Bash che semplifica il reverse engineering delle app Android, automatizzando alcune operazioni ripetitive come l'estrazione, la decodifica, la ricostruzione e l'applicazione di patch a un APK.

Caratteristiche

apk.sh utilizza fondamentalmente apktool per disassemblare, decodificare e ricostruire le risorse e un po' di bash per automatizzare il processo di iniezione del gadget frida. Supporta anche app bundle/APK split.

  • 🍄 Applicazione di patch agli APK per caricare frida-gadget.so all'avvio.
  • 🆕 Supporto per manipolazione diretta del bytecode senza decompilazione, questo evita errori di decompilazione/ricompilazione.
  • 🍱 Supporto per app bundle/APK split.
  • 🔧 Disassemblaggio delle risorse in forma quasi originale con apktool.
  • 🔩 Ricostruzione delle risorse decodificate in APK/JAR binario con apktool.
  • 🗝️ Firma del codice dell'APK con apksigner.
  • 🖥️ Supporto per più architetture (arm, arm64, x86, x86_64).
  • 📵 Nessun dispositivo Android rooted necessario.

Per iniziare

⬅️ Estrarre un APK da un dispositivo è semplice come eseguire ./apk.sh pull <package_name>

🔧 Decodificare un APK è semplice come eseguire ./apk.sh decode <apk_name>

🔩 Ricostruire un APK è semplice come eseguire ./apk.sh build <apk_dir>

apk.sh pull

apk.sh pull estrae un APK da un dispositivo. Supporta app bundle/APK split, il che significa che gli APK split verranno uniti in un unico APK (utile per l'applicazione di patch). Se il pacchetto è un app bundle/APK split, apk.sh combinerà gli APK in un unico APK, correggendo tutti gli identificatori delle risorse pubbliche.

apk.sh patch

apk.sh patch applica una patch a un APK per caricare frida-gadget.so all'avvio.

frida-gadget.so è una libreria condivisa di Frida destinata a essere caricata dai programmi da strumentare (quando la modalità di funzionamento Injected non è adatta). Caricando semplicemente la libreria ti permetterà di interagire con essa utilizzando strumenti esistenti basati su Frida come frida-trace. Supporta anche un approccio completamente autonomo in cui può eseguire script dal filesystem senza alcuna comunicazione esterna.

Applicare una patch a un APK è semplice come eseguire ./apk.sh patch <apk_name> --arch arm.

Puoi anche specificare una configurazione del gadget Frida in un json ./apk.sh patch <apk_name> --arch arm --gadget-conf <config.json>

Se incontri errori apktool d di "already interned" come in #30, puoi passare il flag --only-main-classes, che verrà passato ad apktool durante la decodifica del tuo APK.

🍄 Configurazioni del gadget di Frida

Nell'interazione predefinita, Frida Gadget espone un'interfaccia compatibile con frida-server, in ascolto su localhost:27042 per impostazione predefinita. Per ottenere una strumentazione anticipata, Frida fa sì che la funzione costruttore del Gadget si blocchi finché non ti attach() al processo o chiami resume() dopo aver eseguito i passaggi usuali spawn() -> attach() -> ...applica strumentazione....

Se non desideri questo comportamento bloccante e vuoi lasciare che il programma si avvii subito, o preferisci che ascolti su un'interfaccia o porta diversa, puoi personalizzarlo tramite un file di configurazione json.

La configurazione predefinita è:

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

Puoi passare il file di configurazione del gadget a apk.sh con l'opzione --gadget-conf.

Interazione script

Una configurazione tipicamente suggerita potrebbe essere:

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

script.js potrebbe essere qualcosa del genere:

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

Nota

Aggiungi il seguente codice per stampare su logcat l'output console.log di qualsiasi script dal frida codeshare quando si utilizza il tipo di interazione Script.

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));
}

Requisiti

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

Utilizzo

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]

SOTTOCOMANDI

root@kitploit:~
pull	Estrae un apk dal dispositivo/emulatore.
decode	Decodifica un apk.
build	Ricostruisce un apk.
patch	Applica una patch a un apk.
rename	Rinomina il pacchetto dell'apk.

FLAGS

-a, --arch <arch> Specifica l'architettura di destinazione, obbligatorio durante l'applicazione di patch.

-g, --gadget-conf <json_file> Specifica un file di configurazione per frida-gadget, opzionale durante l'applicazione di patch.

-n, --net Aggiunge una configurazione di sicurezza di rete permissiva durante la costruzione, opzionale. Può essere utilizzato anche con patch, pull e rename.

-r, --no-res Non decodificare le risorse durante la decodifica (es. apktool -r), opzionale. Può essere utilizzato durante l'applicazione di patch.

-s, --no-src Non disassemblare il dex durante la decodifica (es. apktool -s), opzionale. Può essere utilizzato durante l'applicazione di patch.

📃 Link di Interesse

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

Scarica lo strumento