
Parchea binarios de kernel Android ARMv8.3 para deshabilitar la verificación de firmas de controladores, permitiendo la carga de módulos de kernel personalizados para desarrollo y pruebas de seguridad.
AndroidDriveSignityAndroidDriveSignity es un script de Python diseñado para parchear archivos del kernel de Android(ARMv8.3), lo que permite cargar controladores sin estar sujetos a diversas comprobaciones de verificación, específicamente las verificaciones de firma. Esta herramienta tiene como objetivo facilitar el proceso de desarrollo y pruebas al permitir a los desarrolladores omitir las medidas de seguridad integradas del kernel que impiden que se carguen controladores no oficiales o modificados.
check_modinfo, check_version y module_sig_check) para evadir los mecanismos de verificación de firma de controladores.Prepara los archivos necesarios: Asegúrate de tener el archivo binario del kernel (kernel_file_path), el archivo de la tabla de símbolos kallsyms (kallsyms_file_path) y un destino para el kernel parcheado (output_file_path).
Ejecuta AndroidDriveSignity: Navega al directorio del script en tu terminal o símbolo del sistema y ejecuta:
python AndroidDriveSignity.py <kernel_file_path> <kallsyms_file_path> <output_file_path>
adb shell
su
echo 0 > /proc/sys/kernel/kptr_restrict
exit
exit
adb shell su -c "cat /proc/kallsyms > /data/local/tmp/kallsyms"
adb pull /data/local/tmp/kallsyms
Si hay dos particiones, prioriza probar "boot_a":
adb shell su -c "dd if=$(readlink /dev/block/by-name/boot_a) of=/data/local/tmp/boot.img"
Si solo hay una partición, entonces es "boot.img":
adb shell su -c "dd if=$(readlink /dev/block/by-name/boot) of=/data/local/tmp/boot.img"
Luego, extrae la imagen de arranque a tu máquina local:
adb pull /data/local/tmp/boot.img
Finalmente, usa magiskboot para extraer el archivo del kernel de boot.img.
magiskboot --unpack boot.img
Obtendrás dos archivos: uno es el kernel(tu archivo de kernel) y el otro es ramdisk.cpio.
python AndroidDriveSignity.py kernel kallsyms new-kernel
move/mv new-kernel kernel
magiskboot --repack boot.img
adb reboot bootloader
fastboot flash boot new-boot.img
fastboot reboot
adb push demo.ko /data/local/tmp
adb shell su -c insmod /data/local/tmp/demo.ko
adb shell su -c "lsmod |grep demo"
adb shell su -c rmmod /data/local/tmp/demo.ko
Puedes obtener un ejemplo del controlador de Android aquí
LinuxAndroid