APatch es una solución de root similar a Magisk o KernelSU que une lo mejor de ambos.
Combina el método de instalación conveniente y fácil de Magisk a través de un patche en boot.img
y las potentes capacidades de KernelSU para parchear el kernel.
- Magisk modifica el sistema de init (el sistema que inicializa todos los subsistemas del dispositivo) con un parche en la ramdisk de tu imagen
boot.img
, mientras que APatch parchea el kernel directamente.
- KernelSU requiere el código fuente del kernel del dispositivo, que no siempre es brindado por el fabricante del mismo. APatch solo requiere la imagen
boot.img
- APatch permite opcionalmente no modificar el contexto de SELinux. También da acceso root a las apps en su propio contexto, lo cual significa que no hay necesidad de usar libsu ni IPC.
- Se añaden los KPM (Kernel Patch Modules), explicados abajo
Permite implementar código personalizado que corra en kernelspace, es decir, en el mismo entorno que el kernel. Funciona similar a los módulos de kernel (los LKM, Loadable Kernel Modules) que se cargan con insmod/rmmod/modprobe/etc.
Además, KPM permite hacer inline-hooks ("engancharse" a una función en el mismo lugar de memoria, he de ahí el "inline") y syscall-table-hook (modificar la tabla de syscalls)
Para más información, lee Como escribir un KPM (en Inglés)
APatch depende de KernelPatch, hereda todas sus capacidades y las expande.
Puedes instalar solo KernelPatch, pero esto no va a permitir que uses módulos de Magisk, y para poder administrar el acceso root vas a tener que instalar AndroidPatch y desinstalarlo.
Aprende más de KernelPatch (en Inglés)
KernelPatch agrega una nueva syscall (llamada al sistema) para dar todas las capacidades a apps y programas en userspace (el espacio del usuario fuera del kernel), y esta syscall se llama SuperCall. Cuando una app o programa intenta llamar SuperCall, necesita proveer una credencial de acceso llamada SuperKey. SuperCall solo se puede llamar si se provee una SuperKey correcta, caso contrario la app/programa que lo llame quedará intacta.
- KernelPatch no modifica el contexto de SELinux y simplemente se lo salta a través de un hook, lo cual permite que des acceso root a un hilo de Android dentro del contexto de la aplicación sin necesidad de usar libsu para iniciar un nuevo proceso y luego comunicarte con él a través de IPC (Inter-Process Communication)
- Además, APatch usa magiskpolicy directamente para obtener mayor soporte de SELinux. Solo esto va a ser detectado como Magisk, y cualquiera que lo desee puede intentar evitar esto ya que el problema ya está bastante claro.