1
Ringkasan Proyek
APKLeaks adalah perkakas command line yang memindai berkas APK untuk menemukan URI, endpoint, dan secret di dalamnya (README.md:51). Perkakas ini membongkar APK memakai disassembler jadx, lalu mencocokkan isi hasil decompile terhadap sekumpulan pola regex (README.md:532). Paket Python-nya bernama apkleaks, mensyaratkan requires-python = ">=3.8", dan mendaftarkan entry point apkleaks = "apkleaks.cli:main" (pyproject.toml:1-173). Versi yang didokumentasikan di sini adalah v2.6.3 (VERSION:1-1), dengan lisensi Apache License 2.0 (LICENSE:1-4).
Alur Kerja Satu Pemindaian
main() menjalankan urutan tetap: header(), argument(), pembuatan objek APKLeaks(args), lalu init.integrity(), init.decompile(), dan init.scanning(). Pemanggilan init.cleanup() diletakkan di blok finally, sehingga tetap dieksekusi meski langkah sebelumnya gagal (apkleaks/cli.py:32-414).
graph TD
APK["berkas .apk"] --> INTEG["APKLeaks.integrity()"]
INTEG -->|"jadx tidak ada"| DL["APKLeaks.dependencies()"]
DL --> DEC["APKLeaks.decompile()"]
INTEG -->|"jadx tersedia"| DEC
DEC --> TMP["tempdir hasil decompile"]
RULES["config/regexes.json"] --> SCAN["APKLeaks.scanning()"]
TMP --> SCAN
SCAN --> FIND["util.finder(pola, path)"]
FIND --> EXT["APKLeaks.extract(nama, matches)"]
EXT --> OUT["berkas .txt atau .json"]
OUT --> CLEAN["APKLeaks.cleanup()"]
CLEAN --> RM["shutil.rmtree(tempdir)"]
style APK fill:#8b5cf6,color:#fff
style TMP fill:#8b5cf6,color:#fff
style RULES fill:#f59e0b,color:#000
style INTEG fill:#f59e0b,color:#000
style DL fill:#f59e0b,color:#000
style DEC fill:#336791,color:#fff
style SCAN fill:#2d7d46,color:#fff
style FIND fill:#2d7d46,color:#fff
style EXT fill:#2d7d46,color:#fff
style OUT fill:#2d7d46,color:#fff
style CLEAN fill:#dc2626,color:#fff
style RM fill:#dc2626,color:#fff
%% fig: Alur satu kali pemindaian APKLeaks
%% desc: integrity memastikan jadx tersedia, decompile membongkar APK ke tempdir, scanning mencocokkan pola, lalu extract menulis hasil dan cleanup menghapus tempdir.Konstruktor APKLeaks menyiapkan seluruh keadaan awal: tempdir dari tempfile.mkdtemp, berkas output acak bila -o tidak diberikan, dan pattern yang menunjuk ke config/regexes.json bila -p tidak diberikan (apkleaks/apkleaks.py:25-395). integrity() mencari binary jadx beserta menawarkan unduhan, sedangkan dependencies() menarik arsip jadx-1.2.0.zip (apkleaks/apkleaks.py:44-576).
decompile() menyusun daftar argumen [self.jadx, self.file, "-d", self.tempdir], menambahkan -a/--args dari pengguna, lalu menjalankannya lewat os.system (apkleaks/apkleaks.py:89-987). Setelah itu scanning() membaca berkas pattern JSON dan menjalankan satu threading.Thread per pola yang menargetkan extract (apkleaks/apkleaks.py:117-1388). Inti pencocokan berada di util.finder, yang mengompilasi pola dengan re.compile dan menelusuri setiap berkas hasil decompile dengan os.walk (apkleaks/utils.py:17-31). extract() mencetak setiap temuan, menulis ke berkas hasil, dan mengisi out_json["results"] (apkleaks/apkleaks.py:100-115). Cetakan berwarna berasal dari kelas color dengan atribut HEADER, OKBLUE, OKGREEN, WARNING, FAIL, dan ENDC (apkleaks/colors.py:3-11).
⚠️
cleanup()selalu menghapus direktori kerjatempdirdenganshutil.rmtree(apkleaks/apkleaks.py:140-14112). Bila tidak ada satu pun pola yang cocok, berkasoutputikut dihapus lewatos.removedan pesan** Done with nothing. ¯\_(ツ)_/¯dicetak (apkleaks/apkleaks.py:146-14913).
Fakta Ringkas
| Aspek | Nilai | Rujukan |
|---|---|---|
| Nama paket | apkleaks | pyproject.toml:1-314 |
| Deskripsi | Scanning APK file for URIs, endpoints & secrets. | pyproject.toml:1-314 |
| Versi | v2.6.3 | VERSION:1-1 |
| Lisensi | Apache License 2.0 | LICENSE:1-4 |
| Python minimum | 3.8 | pyproject.toml:1315 |
| Entry point | apkleaks = "apkleaks.cli:main" | pyproject.toml:16-1716 |
| Disassembler | jadx | README.md:532 |
Sumber unduhan jadx | jadx-1.2.0.zip | apkleaks/apkleaks.py:44-5317 |
| Pola default | config/regexes.json | apkleaks/apkleaks.py:3518 |
| Isi pola default | 53 kunci pola | config/regexes.json:1-6219 |
Berkas config/regexes.json memuat 53 kunci pola, dari Amazon_AWS_Access_Key_ID sampai Twitter_Secret_Key, termasuk LinkFinder yang dipakai untuk menemukan URI dan endpoint (config/regexes.json:1-6219). Di samping itu, repository menyimpan config/notkeyhacks.json berisi pola spesifik SDK seperti Sentry_DSN dan Intercom_API_Key, yang tidak dimuat sebagai pola default (config/notkeyhacks.json:1-1420). Rincian masing-masing pola dibahas di Kumpulan Pola Pencarian, dan cara menambah pola sendiri di Kustomisasi Pola Sendiri.
Peta Cakupan Dokumentasi
Dokumentasi ini dibagi menjadi tujuh bagian. Bagian arsitektur membedah eksekusi CLI, siklus hidup kelas APKLeaks, dan mesin pencarian regex; bagian pemakaian menjelaskan opsi CLI serta format keluaran.
graph TD
P1["1 Ringkasan Proyek"]
P2["2 Arsitektur"]
P21["2.1 Alur Eksekusi CLI"]
P22["2.2 Siklus Hidup Kelas APKLeaks"]
P23["2.3 Mesin Pencarian Regex dan Keluaran Warna"]
P3["3 Instalasi dan Dependensi"]
P4["4 Penggunaan CLI"]
P41["4.1 Opsi CLI dan Argumen Disassembler"]
P42["4.2 Format Keluaran Hasil Pemindaian"]
P5["5 Kumpulan Pola Pencarian"]
P51["5.1 Kustomisasi Pola Sendiri"]
P6["6 Build, Rilis, dan Publikasi"]
P7["7 Kebijakan Keamanan dan Pelaporan Kerentanan"]
P1 --> P2
P2 --> P21
P2 --> P22
P2 --> P23
P1 --> P3
P1 --> P4
P4 --> P41
P4 --> P42
P1 --> P5
P5 --> P51
P1 --> P6
P1 --> P7
style P1 fill:#336791,color:#fff
style P2 fill:#2d7d46,color:#fff
style P21 fill:#2d7d46,color:#fff
style P22 fill:#2d7d46,color:#fff
style P23 fill:#2d7d46,color:#fff
style P5 fill:#f59e0b,color:#000
style P51 fill:#f59e0b,color:#000
style P3 fill:#8b5cf6,color:#fff
style P6 fill:#8b5cf6,color:#fff
style P7 fill:#dc2626,color:#fff
%% fig: Peta cakupan dokumentasi APKLeaks
%% desc: Tujuh bagian dokumentasi dengan arsitektur, pemakaian CLI, kumpulan pola, build, dan kebijakan keamanan sebagai cabang utama.Halaman Arsitektur menjadi rujukan bila kamu ingin memahami bagaimana integrity, decompile, scanning, dan cleanup saling berhubungan. Untuk mulai memakai perkakas, lanjutkan ke Instalasi dan Dependensi lalu Penggunaan CLI.