Memulai
Copy a setup prompt with the install steps and the full markdown guide for this plugin.
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/capacitor-is-root`
Run the required Capacitor sync/update step after installation.
Read this markdown guide for the full setup steps: https://raw.githubusercontent.com/Cap-go/website/refs/heads/main/apps/docs/src/content/docs/id/docs/plugins/is-root/getting-started.mdx
Use that guide for platform-specific steps, native file edits, permissions, config changes, imports, and usage setup.
If that guide references other docs pages, read them too.
Instalasi
Section titled “Instalasi”npm install @capgo/capacitor-is-rootnpx cap syncyarn add @capgo/capacitor-is-rootnpx cap syncpnpm add @capgo/capacitor-is-rootnpx cap syncbun add @capgo/capacitor-is-rootnpx cap syncDukungan Platform
Section titled “Dukungan Platform”- Android: Dukungan penuh untuk deteksi root dan emulator
- iOS: Tidak ada konfigurasi yang diperlukan (plugin berfokus pada Android)
Contoh Penggunaan
Section titled “Contoh Penggunaan”import { IsRoot } from '@capgo/capacitor-is-root';
// Deteksi root dasarconst rootResult = await IsRoot.isRooted();if (rootResult.isRooted) { console.log('Perangkat di-root'); // Tangani perangkat yang di-root dengan tepat // Contoh: Tampilkan peringatan, batasi fungsionalitas, atau blokir akses}
// Deteksi root diperluas dengan BusyBoxconst extendedResult = await IsRoot.isRootedWithBusyBox();if (extendedResult.isRooted) { console.log('Perangkat di-root (pemeriksaan diperluas)');}
// Periksa emulatorconst emulatorResult = await IsRoot.isRunningOnEmulator();if (emulatorResult.isEmulator) { console.log('Berjalan di emulator'); // Tangani lingkungan emulator}
// Deteksi aplikasi manajemen rootconst rootAppsResult = await IsRoot.detectRootManagementApps();if (rootAppsResult.hasRootApps) { console.log('Aplikasi manajemen root terdeteksi');}
// Periksa binary suconst suResult = await IsRoot.checkForSuBinary();if (suResult.hasSu) { console.log('Binary SU ditemukan di perangkat');}Referensi API
Section titled “Referensi API”isRooted()
Section titled “isRooted()”isRooted() => Promise<{ isRooted: boolean }>Melakukan deteksi root komprehensif menggunakan metode default.
Mengembalikan: Promise<{ isRooted: boolean }>
isRootedWithBusyBox()
Section titled “isRootedWithBusyBox()”isRootedWithBusyBox() => Promise<{ isRooted: boolean }>Deteksi root diperluas termasuk pemeriksaan BusyBox.
Mengembalikan: Promise<{ isRooted: boolean }>
detectRootManagementApps()
Section titled “detectRootManagementApps()”detectRootManagementApps() => Promise<{ hasRootApps: boolean }>Mengidentifikasi aplikasi manajemen root yang terinstal (SuperSU, Magisk, dll.).
Mengembalikan: Promise<{ hasRootApps: boolean }>
checkForSuBinary()
Section titled “checkForSuBinary()”checkForSuBinary() => Promise<{ hasSu: boolean }>Memeriksa keberadaan binary su di jalur sistem.
Mengembalikan: Promise<{ hasSu: boolean }>
isRunningOnEmulator()
Section titled “isRunningOnEmulator()”isRunningOnEmulator() => Promise<{ isEmulator: boolean }>Mendeteksi sidik jari emulator Android umum.
Mengembalikan: Promise<{ isEmulator: boolean }>
Pemeriksaan Keamanan Komprehensif
Section titled “Pemeriksaan Keamanan Komprehensif”import { IsRoot } from '@capgo/capacitor-is-root';
async function performSecurityCheck() { const checks = { rooted: false, emulator: false, rootApps: false, suBinary: false };
try { // Jalankan semua metode deteksi const [rootResult, emulatorResult, rootAppsResult, suResult] = await Promise.all([ IsRoot.isRootedWithBusyBox(), IsRoot.isRunningOnEmulator(), IsRoot.detectRootManagementApps(), IsRoot.checkForSuBinary() ]);
checks.rooted = rootResult.isRooted; checks.emulator = emulatorResult.isEmulator; checks.rootApps = rootAppsResult.hasRootApps; checks.suBinary = suResult.hasSu;
// Tentukan tingkat keamanan const securityIssues = Object.values(checks).filter(v => v).length;
if (securityIssues > 0) { console.warn(`Perangkat memiliki ${securityIssues} masalah keamanan`, checks); return { secure: false, issues: checks }; }
return { secure: true, issues: checks }; } catch (error) { console.error('Pemeriksaan keamanan gagal:', error); throw error; }}
// Gunakan di aplikasi Andaconst securityStatus = await performSecurityCheck();if (!securityStatus.secure) { // Tangani perangkat yang tidak aman showSecurityWarning(securityStatus.issues);}Teknik Deteksi
Section titled “Teknik Deteksi”Deteksi Root
Section titled “Deteksi Root”Plugin menggunakan beberapa metode deteksi:
- Memeriksa aplikasi manajemen root (SuperSU, Magisk, KingRoot, dll.)
- Memindai properti sistem yang mencurigakan
- Mengidentifikasi tag build tes dan flag debug
- Memvalidasi lokasi binary yang berbahaya
- Memeriksa izin jalur sistem
- Mendeteksi aplikasi penyembunyian root yang dikenal
Deteksi Emulator
Section titled “Deteksi Emulator”- Analisis sidik jari hardware
- Inspeksi properti build
- Karakteristik khusus emulator
- Indikator lingkungan virtual
Menangani Masalah Keamanan
Section titled “Menangani Masalah Keamanan”import { IsRoot } from '@capgo/capacitor-is-root';
async function handleDeviceSecurity() { const rootResult = await IsRoot.isRooted();
if (rootResult.isRooted) { // Opsi 1: Tampilkan peringatan dan lanjutkan showWarning('Perangkat Anda tampaknya di-root. Beberapa fitur mungkin dibatasi.');
// Opsi 2: Batasi fungsionalitas disableSensitiveFeatures();
// Opsi 3: Blokir akses ke aplikasi showBlockedScreen('Aplikasi ini tidak dapat berjalan di perangkat yang di-root karena alasan keamanan.'); return false; }
return true;}
function showWarning(message: string) { // Tampilkan dialog peringatan yang ramah pengguna alert(message);}
function disableSensitiveFeatures() { // Nonaktifkan pemrosesan pembayaran, akses data sensitif, dll. console.log('Fitur sensitif dinonaktifkan karena perangkat di-root');}
function showBlockedScreen(message: string) { // Tampilkan layar pemblokiran dan keluar dari aplikasi alert(message);}Praktik Terbaik
Section titled “Praktik Terbaik”- Gunakan beberapa metode deteksi untuk akurasi lebih tinggi
- Implementasikan degradasi yang anggun daripada memblokir akses sepenuhnya
- Berikan komunikasi pengguna yang jelas tentang masalah keamanan
- Pertimbangkan pengalaman pengguna saat menerapkan langkah-langkah keamanan
- Perbarui plugin secara teratur karena metode deteksi berkembang
- Uji pada perangkat yang di-root dan tidak di-root
- Tangani kegagalan deteksi dengan anggun
Pertimbangan Keamanan
Section titled “Pertimbangan Keamanan”- Tidak ada metode deteksi yang 100% sempurna
- Pengguna lanjutan dapat melewati mekanisme deteksi
- Gunakan bersama dengan langkah-langkah keamanan sisi server
- Pertimbangkan privasi pengguna saat menerapkan pemeriksaan keamanan
- Ikuti pedoman platform untuk implementasi keamanan
- Pembaruan rutin direkomendasikan karena teknik penyembunyian root terus berkembang
Kasus Penggunaan
Section titled “Kasus Penggunaan”- Aplikasi perbankan dan keuangan: Cegah akses pada perangkat yang disusupi
- Konten yang dilindungi DRM: Lindungi materi berhak cipta
- Aplikasi enterprise: Terapkan kebijakan keamanan BYOD
- Pemrosesan pembayaran: Pastikan lingkungan transaksi yang aman
- Aplikasi data sensitif: Lindungi informasi rahasia