Comenzando
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/es/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.
Instalación
Section titled “Instalación”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 syncSoporte de Plataformas
Section titled “Soporte de Plataformas”- Android: Soporte completo para detección de root y emuladores
- iOS: No se requiere configuración (el Plugin está enfocado en Android)
Ejemplo de Uso
Section titled “Ejemplo de Uso”import { IsRoot } from '@capgo/capacitor-is-root';
// Detección básica de rootconst rootResult = await IsRoot.isRooted();if (rootResult.isRooted) { console.log('El dispositivo está rooteado'); // Maneja el dispositivo rooteado apropiadamente // Ejemplo: Mostrar advertencia, limitar funcionalidad o bloquear acceso}
// Detección extendida de root con BusyBoxconst extendedResult = await IsRoot.isRootedWithBusyBox();if (extendedResult.isRooted) { console.log('El dispositivo está rooteado (verificación extendida)');}
// Verificar emuladorconst emulatorResult = await IsRoot.isRunningOnEmulator();if (emulatorResult.isEmulator) { console.log('Ejecutándose en un emulador'); // Manejar entorno de emulador}
// Detectar aplicaciones de gestión de rootconst rootAppsResult = await IsRoot.detectRootManagementApps();if (rootAppsResult.hasRootApps) { console.log('Se detectaron aplicaciones de gestión de root');}
// Verificar binario suconst suResult = await IsRoot.checkForSuBinary();if (suResult.hasSu) { console.log('Se encontró binario SU en el dispositivo');}Referencia de la API
Section titled “Referencia de la API”isRooted()
Section titled “isRooted()”isRooted() => Promise<{ isRooted: boolean }>Realiza una detección completa de root usando métodos predeterminados.
Retorna: Promise<{ isRooted: boolean }>
isRootedWithBusyBox()
Section titled “isRootedWithBusyBox()”isRootedWithBusyBox() => Promise<{ isRooted: boolean }>Detección extendida de root incluyendo verificaciones de BusyBox.
Retorna: Promise<{ isRooted: boolean }>
detectRootManagementApps()
Section titled “detectRootManagementApps()”detectRootManagementApps() => Promise<{ hasRootApps: boolean }>Identifica aplicaciones de gestión de root instaladas (SuperSU, Magisk, etc.).
Retorna: Promise<{ hasRootApps: boolean }>
checkForSuBinary()
Section titled “checkForSuBinary()”checkForSuBinary() => Promise<{ hasSu: boolean }>Verifica la presencia del binario su en rutas del sistema.
Retorna: Promise<{ hasSu: boolean }>
isRunningOnEmulator()
Section titled “isRunningOnEmulator()”isRunningOnEmulator() => Promise<{ isEmulator: boolean }>Detecta huellas comunes de emuladores Android.
Retorna: Promise<{ isEmulator: boolean }>
Verificación de Seguridad Completa
Section titled “Verificación de Seguridad Completa”import { IsRoot } from '@capgo/capacitor-is-root';
async function performSecurityCheck() { const checks = { rooted: false, emulator: false, rootApps: false, suBinary: false };
try { // Ejecutar todos los métodos de detección 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;
// Determinar nivel de seguridad const securityIssues = Object.values(checks).filter(v => v).length;
if (securityIssues > 0) { console.warn(`El dispositivo tiene ${securityIssues} problema(s) de seguridad`, checks); return { secure: false, issues: checks }; }
return { secure: true, issues: checks }; } catch (error) { console.error('Falló la verificación de seguridad:', error); throw error; }}
// Usar en tu appconst securityStatus = await performSecurityCheck();if (!securityStatus.secure) { // Manejar dispositivo inseguro showSecurityWarning(securityStatus.issues);}Técnicas de Detección
Section titled “Técnicas de Detección”Detección de Root
Section titled “Detección de Root”El Plugin emplea múltiples métodos de detección:
- Verifica aplicaciones de gestión de root (SuperSU, Magisk, KingRoot, etc.)
- Escanea propiedades sospechosas del sistema
- Identifica etiquetas de compilación de prueba y banderas de depuración
- Valida ubicaciones de binarios peligrosos
- Examina permisos de rutas del sistema
- Detecta aplicaciones conocidas de ocultación de root
Detección de Emuladores
Section titled “Detección de Emuladores”- Análisis de huella de hardware
- Inspección de propiedades de compilación
- Características específicas de emuladores
- Indicadores de entorno virtual
Manejo de Problemas de Seguridad
Section titled “Manejo de Problemas de Seguridad”import { IsRoot } from '@capgo/capacitor-is-root';
async function handleDeviceSecurity() { const rootResult = await IsRoot.isRooted();
if (rootResult.isRooted) { // Opción 1: Mostrar advertencia y continuar showWarning('Tu dispositivo parece estar rooteado. Algunas funciones pueden estar limitadas.');
// Opción 2: Limitar funcionalidad disableSensitiveFeatures();
// Opción 3: Bloquear acceso a la app showBlockedScreen('Esta app no puede ejecutarse en dispositivos rooteados por razones de seguridad.'); return false; }
return true;}
function showWarning(message: string) { // Mostrar diálogo de advertencia amigable alert(message);}
function disableSensitiveFeatures() { // Desactivar procesamiento de pagos, acceso a datos sensibles, etc. console.log('Funciones sensibles deshabilitadas debido a dispositivo rooteado');}
function showBlockedScreen(message: string) { // Mostrar pantalla de bloqueo y salir de la app alert(message);}Mejores Prácticas
Section titled “Mejores Prácticas”- Usar múltiples métodos de detección para mayor precisión
- Implementar degradación gradual en lugar de bloquear el acceso completamente
- Proporcionar comunicación clara al usuario sobre preocupaciones de seguridad
- Considerar la experiencia del usuario al implementar medidas de seguridad
- Mantener el Plugin actualizado a medida que evolucionan los métodos de detección
- Probar en dispositivos tanto rooteados como no rooteados
- Manejar fallos de detección con gracia
Consideraciones de Seguridad
Section titled “Consideraciones de Seguridad”- Ningún método de detección es 100% infalible
- Los usuarios avanzados pueden eludir los mecanismos de detección
- Usar en combinación con medidas de seguridad del lado del servidor
- Considerar la privacidad del usuario al implementar verificaciones de seguridad
- Seguir las directrices de la plataforma para implementaciones de seguridad
- Se recomiendan actualizaciones regulares a medida que evolucionan las técnicas de ocultación de root
Casos de Uso
Section titled “Casos de Uso”- Aplicaciones bancarias y financieras: Prevenir acceso en dispositivos comprometidos
- Contenido protegido con DRM: Proteger material con derechos de autor
- Aplicaciones empresariales: Aplicar políticas de seguridad BYOD
- Procesamiento de pagos: Asegurar entorno de transacciones seguras
- Aplicaciones de datos sensibles: Proteger información confidencial