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

Kamu membaca versi lama. Halaman ini hanya bisa dibaca.

1

Ringkasan Proyek

APKLeaks adalah CLI pemindai berkas APK: ia mendekomplikasi APK, lalu mencocokkan isi hasil dekompilasi dengan sekumpulan regex untuk menarik URI, endpoint, dan secret. Halaman ini adalah pintu masuk dokumentasi: di sini hanya dibahas identitas paket, ketergantungan utama, dan peta modul tingkat atas. Rincian perilaku ada di halaman lain yang ditautkan pada tiap bagian.

Nama, versi, dan deskripsi proyek konsisten di tiga tempat. Berkas README.md menyebut "Scanning APK file for URIs, endpoints & secrets." (README.md:5), metadata [project] mengulang deskripsi yang sama (pyproject.toml:1-14), dan banner header() mencetak versi plus tagline itu ke stderr (apkleaks/cli.py:10-20).

Identitas dan ketergantungan

ButirNilaiRujukan
Nama paketapkleakspyproject.toml:1-3
Versiv2.6.3, dibaca dinamis dari berkas VERSIONVERSION:1-1, pyproject.toml:22-24
Versi Python>=3.8pyproject.toml:13
LisensiApache License 2.0pyproject.toml:12
StatusDevelopment Status :: 3 - Alphapyproject.toml:7
Titik masuk skripapkleaks = "apkleaks.cli:main"pyproject.toml:16-17
Dependensi Pythonpyaxmlparser>=0.3.24, satu-satunya isi requirements.txtrequirements.txt:1
Perkakas eksternaljadx untuk dekompilasi; image Docker menambahkan openjdk-17-jre-headless dan unzipapkleaks/apkleaks.py:36, Dockerfile:7-16

pyaxmlparser diimpor sebagai APK dan dipakai apk_info() untuk membaca metadata paket APK (apkleaks/apkleaks.py:19). jadx dicari lebih dulu lewat which("jadx"); bila tidak ditemukan, objek memakai path cadangan jadx/bin/jadx di direktori induk paket (apkleaks/apkleaks.py:36). Angka versi v2.6.3 juga dipakai Makefile untuk nama paket dan tag image (Makefile:1-5).

Peta modul tingkat atas

Struktur repository tipis: satu berkas pembungkus di akar, empat modul Python di dalam paket apkleaks/, dan dua berkas JSON pola di config/. Diagram berikut menunjukkan ketergantungan antar bagian tersebut, termasuk cabang ketika jadx tidak tersedia.

graph TD
  entry["apkleaks.py"]
  cli["apkleaks.cli: main"]
  args["argument"]
  core["class APKLeaks"]
  util["class util"]
  colors["class color"]
  regex["config/regexes.json"]
  jadx["jadx"]
  tmp["self.tempdir"]
  out["self.fileout"]
  missing["Can't find jadx binary."]

  entry --> cli
  cli --> args
  args --> core
  core --> jadx
  jadx --> tmp
  core --> regex
  tmp --> util
  util --> core
  core --> out
  core --> colors
  core -.-> missing
  missing -.-> jadx

  style cli fill:#2d7d46,color:#fff
  style core fill:#f59e0b,color:#000
  style regex fill:#f59e0b,color:#000
  style tmp fill:#8b5cf6,color:#fff
  style util fill:#8b5cf6,color:#fff
  style out fill:#336791,color:#fff
  style missing fill:#dc2626,color:#fff
%% fig: Peta modul APKLeaks
%% desc: Titik masuk memanggil class APKLeaks, yang menyentuh jadx, tempdir, katalog pola, dan berkas keluaran; cabang merah menandai kondisi jadx tidak ditemukan.
Fig. 1: Peta modul APKLeaksTitik masuk memanggil class APKLeaks, yang menyentuh jadx, tempdir, katalog pola, dan berkas keluaran; cabang merah menandai kondisi jadx tidak ditemukan.
ModulIsiPeranRujukan
apkleaks.py5 baris, hanya from apkleaks.cli import mainpembungkus executableapkleaks.py:1-5
apkleaks/cli.pyheader(), argument(), main()parsing argumen dan urutan pemanggilanapkleaks/cli.py:22-41
apkleaks/apkleaks.pyclass APKLeaks dengan 7 methodinti pemindaianapkleaks/apkleaks.py:24-39
apkleaks/utils.pyclass utilhelper tulis berwarna dan finderapkleaks/utils.py:7-31
apkleaks/colors.pyclass colorkonstanta kode ANSIapkleaks/colors.py:3-10
config/regexes.json53 entri pola; nilai boleh string atau list stringkatalog pola bawaanconfig/regexes.json:1-62
config/notkeyhacks.json9 entri pola, termasuk Adjust_Config bertipe listdikemas sebagai package data, tetapi tidak dirujuk oleh self.patternconfig/notkeyhacks.json:1-14, apkleaks/apkleaks.py:35

main() menjalankan urutan tetap: header(), argument(), lalu integrity(), decompile(), scanning(), dan akhirnya cleanup() di blok finally (apkleaks/cli.py:32-41). Method scanning() membaca self.pattern dengan json.load, lalu menjalankan satu threading.Thread per pola menuju extract (apkleaks/apkleaks.py:117-138). Objek util menjadi satu-satunya jalur finder yang menelusuri self.tempdir (apkleaks/utils.py:17-31). Alur lengkapnya dibahas di Alur Pemindaian, sedangkan siklus atribut objek ada di Siklus Hidup Objek APKLeaks.

Kedua berkas JSON di config/ ikut terdistribusi karena [tool.setuptools.package-data] memakai pola "*" = ["*.json"] dan packages.find menyertakan config* (pyproject.toml:26-30). Katalog pola dijelaskan per entri di Katalog Pola Bawaan; cara mengisi berkas pola sendiri ada di Pola Kustom.

Kondisi awal dan keluaran sementara

Konstruktor APKLeaks langsung membuat direktori sementara dan membuka berkas keluaran, sebelum APK disentuh sama sekali. Prefix yang dipakai "apkleaks-", dan bila -o tidak diberikan nama berkas hasil berasal dari tempfile.mkstemp dengan suffix .json atau .txt (apkleaks/apkleaks.py:25-39).

⚠️ cleanup() menghapus self.tempdir dengan shutil.rmtree, lalu hanya menyimpan hasil bila self.scanned bernilai benar; jika tidak, berkas keluaran dihapus lewat os.remove (apkleaks/apkleaks.py:140-149). Pemindaian yang tidak menemukan apa pun tetap meninggalkan jejak sementara sampai proses selesai.

Kondisi awal jadx diperiksa integrity(): bila binary tidak ada, CLI menawarkan unduhan jadx-1.2.0.zip lewat dependencies() (apkleaks/apkleaks.py:44-57). Detail pemasangan dan argumennya ada di Instalasi dan Ketergantungan serta Dekomplikasi dan jadx.

Bacaan lanjutan