
AndroidDriveSignity는 Android 커널(ARMv8.3)에서 드라이버 서명 검증을 우회하여 사용자 정의 드라이버 로딩을 용이하게 하도록 설계된 Python 유틸리티입니다.
AndroidDriveSignityAndroidDriveSignity는 Android 커널(ARMv8.3) 파일을 패치하여 다양한 검증 검사, 특히 서명 검증을 거치지 않고 드라이버를 로드할 수 있게 해주는 Python 스크립트입니다. 이 도구는 비공식 또는 수정된 드라이버의 로드를 차단하는 커널의 내장 보안 조치를 개발자가 우회할 수 있게 하여 개발 및 테스트 프로세스를 용이하게 하는 것을 목표로 합니다.
check_modinfo, check_version, module_sig_check)을 수정하여 드라이버 서명 검증 메커니즘을 우회합니다.필요한 파일 준비: 커널 바이너리 파일(kernel_file_path), kallsyms 심볼 테이블 파일(kallsyms_file_path), 패치된 커널의 저장 경로(output_file_path)가 있는지 확인하세요.
AndroidDriveSignity 실행: 터미널 또는 명령 프롬프트에서 스크립트가 있는 디렉터리로 이동한 후 다음을 실행하세요:
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
파티션이 두 개라면 "boot_a"를 우선적으로 시도하세요:
adb shell su -c "dd if=$(readlink /dev/block/by-name/boot_a) of=/data/local/tmp/boot.img"
파티션이 하나뿐이라면 "boot.img"입니다:
adb shell su -c "dd if=$(readlink /dev/block/by-name/boot) of=/data/local/tmp/boot.img"
그런 다음 부트 이미지를 로컬 머신으로 가져옵니다(pull):
adb pull /data/local/tmp/boot.img
마지막으로 magiskboot를 사용하여 boot.img에서 커널 파일을 추출합니다.
magiskboot --unpack boot.img
두 개의 파일이 생성됩니다: 하나는 kernel(커널 파일)이고, 다른 하나는 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
Android 드라이버 예제는 여기에서 얻을 수 있습니다.
LinuxAndroid