Lompat ke konten
dokumentasi.id
Commit dd5271a
v2
Star6,4 rb

Kamu membaca versi lama. Halaman ini hanya bisa dibaca.

2

Arsitektur

apkleaks membagi pekerjaannya ke empat modul: entry point apkleaks.py di akar repository, lapisan antarmuka apkleaks/cli.py, orkestrator apkleaks/apkleaks.py dengan kelas APKLeaks, serta dua modul pendukung apkleaks/utils.py dan apkleaks/colors.py. Berkas apkleaks.py di akar hanya memanggil main dari apkleaks.cli, sehingga seluruh logika berada di dalam paket apkleaks — apkleaks.py:1-5.

Peta Ketergantungan Modul

graph TD
    entry["apkleaks.py"] -->|"main()"| cli["apkleaks/cli.py"]
    cli -->|"APKLeaks(args)"| leak["apkleaks/apkleaks.py<br/>class APKLeaks"]
    cli -->|"col.HEADER"| colors["apkleaks/colors.py<br/>class color"]
    leak -->|"util.finder"| utils["apkleaks/utils.py<br/>class util"]
    leak -->|"col.*"| colors
    utils -->|"col.ENDC"| colors
    leak -->|"open(self.pattern)"| config["config/regexes.json"]
    leak -->|"os.system"| jadx["jadx binary"]
    jadx --> tempdir["tempdir"]
    utils -->|"os.walk"| tempdir
    style config fill:#f59e0b,color:#000
    style jadx fill:#f59e0b,color:#000
    style tempdir fill:#336791,color:#fff
    style utils fill:#8b5cf6,color:#fff
    style colors fill:#8b5cf6,color:#fff
%% fig: Ketergantungan empat modul apkleaks
%% desc: Entry point meneruskan ke cli, cli membuat APKLeaks, lalu APKLeaks memakai utils dan colors untuk membaca hasil decompile di tempdir.
Fig. 1: Ketergantungan empat modul apkleaksEntry point meneruskan ke cli, cli membuat APKLeaks, lalu APKLeaks memakai utils dan colors untuk membaca hasil decompile di tempdir.

Arah panah adalah arah impor, dan tidak ada impor balik yang membentuk siklus: apkleaks/cli.py mengimpor APKLeaks serta color — apkleaks/cli.py:7-8. apkleaks/apkleaks.py mengimpor color dan util — apkleaks/apkleaks.py:21-22. apkleaks/utils.py hanya mengimpor color dari apkleaks.colors — apkleaks/utils.py:5. Modul colors.py berada di ujung bawah rantai karena tidak mengimpor apa pun dari paket ini.

Modul dan Tanggung Jawab

ModulSimbol kunciTanggung jawabRujukan
apkleaks.py (akar)mainmeneruskan eksekusi ke apkleaks.cli.mainapkleaks.py:1-5
apkleaks/cli.pyheader, argument, mainmencetak banner, mem-parsing argumen, merangkai urutan pemanggilanapkleaks/cli.py:32-41
apkleaks/apkleaks.pyAPKLeaksmenyimpan state pemindaian dan menjalankan langkah per langkahapkleaks/apkleaks.py:25-39
apkleaks/utils.pyutilmenulis ke stdout berwarna dan menjalankan pencarian regexapkleaks/utils.py:7-31
apkleaks/colors.pycolormenyediakan konstanta ANSIapkleaks/colors.py:3-11

Kelas APKLeaks menyimpan seluruh konfigurasi pada __init__: self.file hasil os.path.realpath, self.json, self.disarg, self.tempdir, self.output, dan self.pattern — apkleaks/apkleaks.py:25-39. Karena semua state ada di atribut instance, modul lain tidak perlu menyimpan status pemindaian sendiri.

apkleaks/cli.py adalah satu-satunya modul yang mengetahui urutan eksekusi. header() mencetak banner memakai col.HEADER sebelum argumen diproses — apkleaks/cli.py:10-20. Rincian langkah yang dirangkai main dibahas di Alur Eksekusi CLI.

Ketergantungan di Luar Kode Python

Tiga ketergantungan tidak berbentuk modul Python, tetapi tetap menentukan arsitektur karena dirujuk langsung oleh APKLeaks.

KetergantunganCara diperolehRujukan
config/regexes.jsondefault self.pattern ke <induk main_dir>/config/regexes.json, dibaca lewat open(self.pattern)apkleaks/apkleaks.py:25-39
binary jadxwhich("jadx"), dengan fallback ke jadx/bin/jadx di dalam repositoryapkleaks/apkleaks.py:25-39
tempdirtempfile.mkdtemp(prefix="apkleaks-"), menjadi target -d saat decompile dan akar os.walk saat pencarianapkleaks/apkleaks.py:89-98

Saat scanning berjalan, isi config/regexes.json di-json.load sekali, lalu tiap kunci diiterasi; nilai yang berupa list diulang per elemen — apkleaks/apkleaks.py:117-125. Setiap pola dijalankan pada threading.Thread tersendiri yang memanggil self.extract(name, util.finder(...)), sehingga jumlah thread mengikuti jumlah pola, bukan jumlah berkas — apkleaks/apkleaks.py:129-136.

⚠️ decompile menyusun perintah sebagai string dan menjalankannya lewat os.system(comm), dengan tiap argumen dibungkus shlex.quote lalu seluruh tanda kutip tunggal diganti kutip ganda — apkleaks/apkleaks.py:89-98. Perintah ini tetap dieksekusi oleh shell, dan self.disarg berasal dari opsi -a yang diisi pengguna.

⚠️ cleanup menghapus self.tempdir dengan shutil.rmtree; bila tidak ada satu pun pola yang cocok (self.scanned masih False), berkas self.output juga dihapus dengan os.remove — apkleaks/apkleaks.py:140-149.

Batas Halaman Lanjutan

Halaman ini hanya memetakan pembagian modul. Urutan pemanggilan integrity, decompile, scanning, dan cleanup dari main dijelaskan di Alur Eksekusi CLI. Perilaku tiap metode APKLeaks dijelaskan di Siklus Hidup Kelas APKLeaks. Isi util.finder dan konstanta color dijelaskan di Mesin Pencarian Regex dan Keluaran Warna.