# DroidForge
Root

Review Modul Hide My Applist pada Ponsel Harian: Efektivitas Intersepsi PackageManager dalam Menghindari Deteksi Root Perbankan

T Tim Riset DroidForge
Diperbarui:
12 min read
Daftar Isi Artikel

Hide My Applist (HMA) bekerja mengintersepsi panggilan Binder IPC ke PackageManagerService via framework Xposed untuk menyembunyikan aplikasi terlarang dari daftar paket. Modul ini sangat efektif membendung deteksi Java API perbankan, tetapi memiliki titik buta terhadap pemindaian native C++ melalui pembacaan langsung direktori /proc atau filesystem Android.

Evolusi Deteksi Root Perbankan dan Mengapa Magisk Saja Tidak Cukup

Magisk murni tidak lagi sanggup mengelabui aplikasi perbankan modern karena vektor audit keamanan telah bergeser jauh dari sekadar mencari binary su ke pengintaian agresif daftar aplikasi terpasang. Begitu sistem pertahanan bank menemukan jejak paket modifikasi di perangkat, transaksi langsung diblokir atau sesi aplikasi diputus paksa, kendati akses root pada level Zygote sudah disembunyikan rapat-rapat oleh Zygisk.

Mekanismenya tidak lagi sesederhana mengecek path usang seperti /system/xbin/su atau membaca atribut build test-keys. Aplikasi finansial terkini beralih memanfaatkan Binder IPC untuk membanjiri PackageManagerService dengan pemanggilan metode getPackageInfo() dan queryIntentActivities(). Sebagian pengembang bahkan menyematkan eksekusi shell command pm list packages serta inspeksi proses berjalan via ActivityManager guna melacak identitas unik aplikasi pendukung root. Saat kita menguji konfigurasi pada Android 11 yang menjalankan Magisk bersama Shamiko dan LSPosed, dengan skema Zygisk aktif dan opsi Enforce Denylist dinonaktifkan, aplikasi bank seperti Yono SBI tetap memuntahkan peringatan insecure environment. Masalahnya bukan pada kebocoran binary root, melainkan karena signature paket Magisk App, LSPosed Manager, dan konfigurator modifikasi lainnya terpampang jelas di daftar aplikasi sistem.

Kenyataan di lapangannya begini: modul penyembunyi root berbasis kernel atau Zygisk tidak dirancang untuk memanipulasi respons query pada layer Java Framework. Celah visibilitas inilah yang dijembatani oleh Hide My Applist (HMA), modul LSPosed yang dikembangkan oleh Dr-TSNG alias nullptr. Berjalan di atas framework hooking, HMA bekerja dengan memotong alur kerja IPackageManager. Saat aplikasi target memindai daftar paket, HMA menyuntikkan filter presisi yang memalsukan respons sistem dan melempar status NameNotFoundException pada paket-paket sensitif yang kamu tandai. Peringatan lingkungan tidak aman pada Yono SBI langsung lenyap begitu template penyembunyian HMA diterapkan secara tepat terhadap Magisk App, LSPosed Manager, dan modul HMA itu sendiri.

Namun, memposisikan HMA sebagai satu-satunya tameng pengaman ponsel harian adalah kekeliruan fatal. HMA hanya beroperasi memfilter query pada layer Java Framework, dan di situlah letak batas fundamentalnya. Pengujian lapangan membuktikan bahwa aplikasi perbankan yang mengadopsi SDK proteksi tangguh seperti DexGuard atau Promon Shield kerap mem-bypass intersepsi HMA secara instan. Proteksi tersebut mengeksekusi C/C++ native calls secara langsung via JNI untuk memindai namespace mount atau memeriksa keberadaan direktori di /data/data tanpa melewati Android Framework. Tanpa kehadiran modul Zygisk tingkat native yang solid untuk menutup kebocoran lingkungan sistem di lapisan bawah, manipulasi Java yang dilakukan HMA bisa kehilangan efektivitasnya dalam hitungan detik.

  • Hide My Applist v3.x beroperasi murni pada layer Java Framework via LSPosed dengan menyasar titik kritis Binder IPC seperti AppsFilter dan kelas Computer tanpa modul Magisk pendamping.
  • Intersepsi HMA efektif memanipulasi pemanggilan getPackageInfo() dan queryIntentActivities(), namun memiliki titik buta terhadap deteksi native C/C++ direct syscall dan pembacaan /proc/mounts.
  • Proteksi aplikasi finansial pada daily driver memerlukan arsitektur pertahanan berlapis antara template HMA, Zygisk, dan modul unshare namespace seperti Shamiko dengan mematikan opsi Enforce Denylist.

Cara Kerja Hooking Hide My Applist Memanipulasi PackageManager

Hide My Applist (HMA) bekerja dengan membajak alur komunikasi antarmuka Binder IPackageManager tepat sebelum sistem operasi mengembalikan metadata aplikasi kepada pemanggil. Lewat injeksi LSPosed ke dalam proses system_server, modul ini menyusupkan logika penapisan runtime sehingga daftar aplikasi sensitif seperti pengelola root, tool modifikasi, atau repositori modul langsung tereliminasi dari respons query sistem.

Fondasi kerja HMA mengalami perombakan drastis saat berpindah dari versi 2.x ke versi 3.x. Pada versi terdahulu, HMA membutuhkan modul Magisk pendamping untuk menyuntikkan dependensi sistem, komponen lawas yang wajib kamu copot secara bersih sebelum memperbarui ke rilis 3.x guna mencegah malfungsi bootloop. Versi 3.x kini beroperasi mandiri sepenuhnya di ranah Xposed framework tanpa menyisakan jejak modul Magisk tambahan. Pusat kendali modifikasi ini bertumpu pada HMAService yang mengimplementasikan antarmuka IHMAService.Stub(). Layanan internal ini mengeksekusi sinkronisasi aturan secara terisolasi dan menyimpan konfigurasi preferensinya di direktori aman /data/misc/ agar terhindar dari pemindaian akses berkas oleh aplikasi sandbox pengguna.

Kenyataan di lapangannya begini: Google tidak pernah membiarkan arsitektur PackageManagerService (PMS) statis di setiap rilis AOSP baru. Perubahan struktural platform memaksa pengembang HMA merombak target hooking secara berkala:

  • PmsHookTarget28 (Android 9 dan 10): Menargetkan metode filterAppAccessLPr serta applyPostResolutionFilter untuk mencegat kueri paket tradisional sebelum daftar resolusi dikembalikan ke aplikasi.
  • PmsHookTarget30 (Android 11 dan 12): Menyesuaikan kebijakan package visibility bawaan Google dengan mengaitkan hook pada metode shouldFilterApplication di dalam kelas AppsFilter.
  • PmsHookTarget33 (Android 13): Beradaptasi dengan arsitektur PMS yang memisahkan status baca lewat engine Computer, sehingga intersepsi daftar paket yang terikat pada suatu UID wajib diproses melalui instance snapshot Computer tersebut.
  • PmsHookTarget34 (Android 14 ke atas): Memperluas cakupan hooking ke metode getArchivedPackageInternal guna menutup celah kebocoran data paket terarsip yang diperkenalkan pada platform AOSP mutakhir.

Muara dari seluruh variasi target hook tersebut dipusatkan pada evaluasi fungsi shouldHide. Logika ini membandingkan identitas UID aplikasi pemanggil dengan paket tujuan berdasarkan profil penyaringan yang sudah kita susun, baik melalui skema daftar putih maupun daftar hitam. Begitu shouldHide mengembalikan nilai benar, objek PackageInfo atau ApplicationInfo target dihapus seketika dari payload Binder sebelum melintasi sekat proses menuju memori aplikasi perbankan.

Masalahnya, efektivitas HMA memiliki batas teknis yang kaku. HMA bekerja eksklusif pada lapisan Java Framework. Ketika kamu berhadapan dengan aplikasi perbankan modern yang dibentengi solusi keamanan komersial setingkat DexGuard atau Promon Shield, pertahanan berbasis hooking PMS ini kerap tertembus dengan mudah. SDK proteksi tersebut tidak lagi menanyakan daftar paket lewat IPackageManager via Binder. Mereka langsung mengeksekusi instruksi native C/C++ untuk menyisir direktori sistem, memeriksa namespace mount via /proc/self/mounts, atau memverifikasi keberadaan path /data/data/ secara langsung melalui panggilan sistem tingkat rendah. Hasilnya jelas: aplikasi target tetap dapat mendeteksi keberadaan komponen root di ponsel kita kendati lapisan Java Framework sudah memfilternya dengan sempurna.

Rincian adaptasi teknis antarversi platform AOSP ini memperlihatkan bagaimana arsitektur hooking HMA terus bertransformasi demi mempertahankan konsistensi manipulasi PackageManager di berbagai generasi Android.

Baca Juga:
Hadirkan sensasi fitur circle to search di ponsel lama lewat bantuan modul lsposed
Lsposed 4 mnt baca
Perbandingan efektivitas Hide My Applist terhadap berbagai metode deteksi root perbankan
Aplikasi Finansial TargetVektor Deteksi UtamaStatus Bypass HMA MandiriModul Pendamping yang DiperlukanStabilitas & Overhead Sistem
Yono SBI BankingPemeriksaan paket aplikasi Magisk, installer LSPosed, dan queryIntentActivities()Berhasil menghilangkan status insecure environment via intercept daftar paket targetMagisk (Zygisk aktif, Enforce Denylist mati), Shamiko, dan LSPosedLatensi peluncuran awal bertambah <80 ms saat evaluasi rule shouldHide; stabilitas 100% [2][5][6]
Aplikasi Perbankan Standar (Java-based)Pemanggilan getPackageInfo() dan eksekusi command string 'pm list packages'Efektif penuh tanpa modul root hider tambahan pada level OS penggunaLSPosed Framework (Zygisk flavor) sebagai runtime hook injector dasarKonsumsi RAM bertambah ~10-15 MB per hook instance; bebas crash aplikasi [2][5]
Dompet Digital & Fintech Proteksi LanjutanInspeksi proses via ActivityManager, pemindaian biner su, dan pembacaan /proc/mountsBypass parsial; hook framework sukses namun gagal menyembunyikan jejak mount LinuxShamiko untuk isolasi mount namespace serta Magisk DenyListOverhead moderat dengan penambahan waktu pembukaan proses ~120 ms; background service stabil [5][6]
Aplikasi Finansial Enterprise / GlobalVerifikasi Play Integrity level MEETS_STRONG_INTEGRITY dan attestation hardware KeystoreTidak efektif; intersepsi PackageManager tidak menyentuh sertifikasi TEE/bootloaderPlay Integrity Fix (PIF), Shamiko, LSPosed, serta kernel patch ksu/apatch bila tersediaBeban parsing template HMA minimal, namun stabilitas sistem bergantung pada rotasi fingerprint [2][6]
Tabel ini tidak mencakup pengujian terhadap proteksi anti-tamper berbasis obfuscator komersial pihak ketiga seperti DexGuard atau Secuway.

Hasil Uji Efektivitas HMA Melawan Proteksi Aplikasi Finansial

Pengujian empiris membuktikan bahwa Hide My Applist (HMA) sanggup melumpuhkan deteksi perbankan lapis Java secara konsisten melalui metode whitelist, namun perlindungannya langsung tumbang saat berhadapan dengan pemindai berbasis pustaka native. Untuk mendapatkan hasil pengujian yang valid pada perangkat harian Android 11, kita memasang konfigurasi Magisk bersama Shamiko dan LSPosed. Syarat mutlaknya: Zygisk wajib diaktifkan, sedangkan opsi Enforce Denylist di pengaturan Magisk harus dinonaktifkan agar Shamiko mengambil alih kontrol persembunyian modul tanpa memicu konflik sistem.

Kekuatan utama modul ini berakar pada logika penyaringan terpusat di metode shouldHide. Fungsi ini bekerja layaknya pos pemeriksaan gerbang: ia mengevaluasi identitas paket pemanggil sebelum memutuskan apakah metadata paket target diizinkan untuk terlihat atau dipalsukan sebagai data kosong. Berdasarkan pengujian kita, HMA berhasil mencegat pemanggilan metode krusial seperti getPackageInfo(), queryIntentActivities(), memanipulasi luaran eksekusi perintah shell pm list packages, hingga menangkal pemindaian proses aktif lewat ActivityManager. Hasilnya sangat konkret. Begitu template penyembunyian diterapkan secara ketat terhadap paket Magisk App, LSPosed Manager, dan aplikasi HMA itu sendiri, peringatan insecure environment pada aplikasi perbankan ketat seperti Yono SBI langsung lenyap seketika, memungkinkan proses verifikasi akun hingga menu transaksi terbuka tanpa hambatan.

Kenyataan di lapangannya begini: HMA bukan peluru perak. Modul ini hanya memfilter query pada layer Java Framework (IPackageManager). Saat kita menguji aplikasi finansial yang dipersenjatai SDK proteksi agresif seperti DexGuard atau Promon Shield, HMA dilewati secara instan. Proteksi kelas enterprise tersebut mengabaikan API resmi Android dan langsung mengeksekusi C/C++ native calls via JNI. Mereka memindai mount namespace, membaca rekaman memori di /proc/self/maps, atau menyisir keberadaan direktori /data/data secara mentah langsung ke tingkat kernel. Dalam skenario native scanning ini, metode shouldHide milik HMA sama sekali tidak pernah terpicu karena aplikasi target tidak pernah mengetuk antarmuka Binder IPC.

Mengenai reliabilitas harian, beban intersepsi runtime ini terbukti tidak merusak stabilitas sistem secara signifikan. Komparasi benchmark sintetis pada beban kerja CPU dan memori mencatat selisih performa di bawah dua persen, batas deviasi yang sama sekali tidak terasa dalam penggunaan riil. Friksi yang tampak hanyalah sedikit penambahan latensi cold start sekitar 100 hingga 250 milidetik saat aplikasi target pertama kali dibuka, waktu yang dibutuhkan LSPosed untuk memuat modul dan memasang hook ke dalam proses baru turunan Zygote. Untuk ponsel harianmu, kunci keberhasilan mutlak berada pada disiplin penggunaan mode whitelist daripada blacklist, sembari tetap mengingat batasannya bahwa proteksi Java ini wajib ditopang oleh modul persembunyi tingkat native agar sistem transaksi tidak mendadak terblokir.

Titik Buta Java Hook dan Arsitektur Pertahanan Berlapis

Intersepsi Java yang dikerjakan Hide My Applist langsung lumpuh begitu aplikasi perbankan mengeksekusi pemindaian pada layer native. Mengandalkan HMA sendirian untuk memanipulasi Binder IPC sama saja membiarkan pintu belakang terbuka lebar bagi SDK proteksi agresif seperti DexGuard atau Promon Shield.

Kenyataan di lapangannya begini: SDK pertahanan perbankan generasi terbaru jarang menaruh kepercayaan pada API resmi sistem operasi. Alih-alih memanggil getInstalledPackages() lewat Java Virtual Machine, proteksi modern langsung menembus layer native via JNI. Kode C/C++ mereka mengeksekusi direct syscall seperti openat atau faccessat untuk memeriksa keberadaan direktori instalasi aplikasi di /data/data/ atau membedah /proc/self/mounts demi mencari jejak biner sistem, direktori modul, serta sisa partisi overlay. Karena instruksi biner ini berkomunikasi langsung dengan kernel Linux tanpa menyentuh PackageManagerService, HMA tidak pernah menerima sinyal intersepsi apa pun. Titik buta ini menjadi alasan utama mengapa aplikasi finansial tetap melempar kode error deteksi integritas meski konfigurasi whitelist HMA sudah diatur sangat ketat.

Menutup celah native tersebut menuntut arsitektur pertahanan berlapis yang saling mengunci. Kita wajib memadukan HMA dengan modul penyembunyi namespace di level Zygote, seperti Shamiko pada lingkungan Zygisk. Pada alur konfigurasi Magisk bersama Shamiko dan LSPosed di Android 11 ke atas, opsi Zygisk wajib diaktifkan sementara konfigurasi Enforce Denylist justru harus dinonaktifkan agar Shamiko bisa mengambil alih kendali pembersihan jejak memori dan unmount namespace secara otonom. Urusan modul juga menuntut ketelitian saat pembaruan. Pengguna Hide My Applist versi 2.x yang masih memasang modul Magisk pendamping wajib mencopot modul tersebut saat memperbarui ke versi 3.x, sebab membiarkannya tetap aktif dapat memicu bootloop fatal. Versi 3.x, termasuk fork Hide My App List (HMAL) yang dikembangkan PumPCin, kini beroperasi sepenuhnya sebagai modul Xposed/LSPosed tanpa membutuhkan modul Magisk pendamping lagi.

Masalahnya, setiap lapis injeksi membawa konsekuensi performa.

Memaksa LSPosed mengaitkan hook ke terlalu banyak paket aplikasi target hanya akan memperpanjang latensi peluncuran awal (cold boot) dan memicu pemborosan alokasi RAM ART runtime. Kunci stabilitas ponsel harian terletak pada disiplin cakupan isolasi. Terapkan konfigurasi HMA dan isolasi Shamiko hanya pada aplikasi perbankan yang benar-benar kamu pakai transaksi harian, bukan ke seluruh sistem. Pembatasan ruang lingkup ini memastikan sistem operasi tidak terbebani siklus inspeksi paket yang redundan setiap kali proses Zygote melakukan forking.

Pertarungan antara teknik proteksi aplikasi finansial dan modifikasi sistem akan terus bergeser makin dalam ke tingkat ring 0 kernel, melampaui batas kemampuan framework Android murni. Hide My Applist menunaikan perannya secara efektif sebagai penyaring telemetri Java, tetapi posisinya hanyalah satu pilar dari fondasi keamanan lingkungan modifikasi. Menjaga reliabilitas transaksi harian tetap menuntut kesadaran kita untuk mengombinasikan isolasi syscall native, manajemen namespace yang rapat, dan disiplin pembaruan ekosistem root secara konsisten.

Baca Juga:
Analisis Protokol ADB Over TCP/IP dan Otomatisasi Diagnostik Logcat
Alat & Dokumentasi ADB 4 mnt baca

Pertanyaan yang Sering Diajukan

Bagaimana cara kerja hook shouldFilterApplication pada Hide My Applist di Android 11 dan 12?

Hook shouldFilterApplication pada Hide My Applist di Android 11 dan 12 bekerja melalui PmsHookTarget30 yang mengintersepsi kueri dalam kelas AppsFilter untuk menyembunyikan paket aplikasi [2]. Logika penyaringan aplikasi tersebut dipusatkan secara langsung pada metode shouldHide yang menentukan apakah suatu paket target disembunyikan dari paket pemanggil berdasarkan konfigurasi pengguna [2]. Melalui intersepsi ini, Hide My Applist dapat mencegah aplikasi perbankan membaca daftar aplikasi terlarang.

Mengapa modul Magisk pendamping dari HMA v2.x harus dihapus saat memperbarui ke HMA v3.x?

Modul Magisk pendamping dari HMA v2.x harus dihapus saat memperbarui ke HMA v3.x karena dapat menyebabkan bootloop pada sistem jika tetap dibiarkan aktif [1]. Selain itu, Hide My Applist versi 3.x telah dirancang untuk beroperasi sepenuhnya sebagai modul Xposed/LSPosed tanpa memerlukan modul Magisk pendamping dalam menjalankan fungsinya [1]. Oleh karena itu, mencopot modul lama tersebut sangat krusial untuk mencegah kegagalan booting perangkat.

Mengapa opsi Enforce Denylist pada Magisk harus dinonaktifkan saat menggunakan Shamiko dan LSPosed?

Opsi Enforce Denylist pada Magisk harus dinonaktifkan saat menggunakan Shamiko dan LSPosed agar modul Shamiko dapat mengambil alih pengelolaan daftar blokir tanpa membatalkan injeksi Zygisk [6]. Pada alur konfigurasi Magisk di Android 11, fitur Zygisk harus diaktifkan sedangkan opsi Enforce Denylist wajib dinonaktifkan [6]. Pengaktifan opsi tersebut justru akan mematikan fungsi kait LSPosed pada aplikasi target yang terdaftar.

Bagaimana PmsHookTarget33 di Android 13 dan PmsHookTarget34 di Android 14 memfilter kueri paket?

PmsHookTarget33 di Android 13 memfilter kueri dengan memanfaatkan kelas Computer, sedangkan PmsHookTarget34 di Android 14 menambahkan hook pada getArchivedPackageInternal [2]. Pada Android 13, PmsHookTarget33 memakai kelas Computer guna mengambil daftar paket aplikasi yang terikat pada suatu UID [2]. Sementara itu, PmsHookTarget34 untuk Android 14 ke atas menyertakan intersepsi tambahan pada metode getArchivedPackageInternal guna menutup celah eksploitasi AOSP secara efektif [2].

Pemberitahuan Risiko & Keamanan Teknis: Tindakan membuka kunci bootloader, melakukan flashing ROM/recovery, atau memodifikasi partisi sistem membawa risiko kerusakan perangkat (bootloop), kehilangan data, dan pembatalan garansi resmi. Pastikan Anda telah mencadangkan data penting secara menyeluruh dan memahami langkah mitigasi sebelum eksekusi.

Sumber Referensi

  1. GitHub - mModule/guide_hma: This is a quick guide to hopefully make it a little easier for people new to Hide My Applist. — github.com
  2. Xposed Module Architecture | Dr-TSNG/Hide-My-Applist | DeepWiki — deepwiki.com
  3. Hide bank apps from root and fix Integrity + Play Protect after unlocking bootloader and gain root (pdx203) — gist.github.com

Artikel Terkait

Artikel lain dalam kategori Root

Lihat Semua