GhostLock-App
中文: README_ZH.md
الأجهزة المدعومة
| Kernel | الأجهزة |
|---|
6.1.118-android14-11-ga3b9c44908dd-ab13320413 | Redmi Note 15 Pro+ |
6.1.118-android14-11-gca0ef6d17716-ab13624819 | Xiaomi 14 |
6.1.138-android14-11-g0c3d559bcd85-ab14529422 | Xiaomi 14 |
6.1.145-android14-11-g09f1c0074ad7-ab14226177 | Infinix Note 50s 5G |
6.1.145-android14-11-g74d1702dab4d-ab14669069 | Vivo T4 |
6.1.162-android14-11-gce140c0e5bf5-ab15450923 | Zenfone 11 Ultra |
6.6.30-android15-8-g54dcbfbef792-ab12368803-4k | Red Magic Tablet 3 Pro |
6.6.77-android15-8-g4a507830d890-ab13636293-4k | Xiaomi Civi 5 Pro, REDMI K90 / 4 Turbo, POCO F7 |
6.6.77-android15-8-g63ce7556864c-ab13994517-4k | Xiaomi 15 |
6.6.77-android15-8-gca30f3b4bef6-abogki440974771-4k | Xiaomi 15 Pro, REDMI K80 Pro / K80 Ultra |
6.6.89-android15-8-g096cdb6ecefc-ab14358676-4k | OPPO Pad 4 Pro |
6.6.89-android15-8-g0889fe95bb10-ab14402178-4k | POCO X8 Pro Max |
6.6.89-android15-8-g8e4be6b47e40-ab14134548-4k | POCO X8 Pro |
6.6.89-android15-8-gf4dc45704e54-abogki446052083-4k | OnePlus 13 |
6.6.92-android15-8-g3637f4904cf5-ab13944661-4k | Red Magic Tablet 3 Pro, Red Magic 10 Pro, Red Magic 11 Air |
6.6.102-android15-8-gab8eb70a71b8-ab14350911-4k | Nothing Phone 3 |
6.6.102-android15-8-gb01b41c2647c-ab15574720-4k | Xiaomi 17T |
6.6.102-android15-8-gfe76d1bc97fd-ab14689815-4k | Xiaomi 17T |
6.6.118-android15-8-g2e6b9c3812c5-ab15114928-4k | OPPO Find N5 |
6.6.118-android15-8-g93e223c276e7-abogki500782043-4k | OPPO Find X8 Ultra, OnePlus 13 / ACE 5 Pro |
يتم مطابقة الأنوية بدقة عبر uname -r؛ يتم رفض البنيات غير المدعومة ويعرض التطبيق الحالة في الأعلى. توجد الإزاحات في src/kernels/<uname-release>/offsets.h — أضف بنيات جديدة باستخدام --register الخاص بالمستخرج.
بدء سريع
افتح GhostLock واضغط على Run. يوفر KernelSU (me.weishu.kernelsu) أو ReSukiSU (com.resukisu.resukisu) أداة ksud لتحميل الوحدات؛ بدونها، لا تزال W1/W2 تمنح uid 0 لكن لا يتم تحميل أي وحدة.
يتسابق المسار على نواتين: الخيط الرئيسي يضغط على pselect بينما خيط المستهلك يزعزع أولوية المنتظر. يبدأ الزوج افتراضيًا على النوى الكبيرة (الاحتياطي 0/1)، ويمكن تجاوزه عبر GHOSTLOCK_CORE / GHOSTLOCK_CONSUMER_CORE.
تصحيح الأخطاء عبر سطر الأوامر
لا يحتوي adb/shell على مرشح seccomp، لذا يتم تخطي W3 — وهو مفيد للتحقق السريع:
make ghostlock
adb push ghostlock /data/local/tmp/ghostlock
adb shell chmod 755 /data/local/tmp/ghostlock
adb shell /data/local/tmp/ghostlock
استخراج الإزاحات
يستمد tools/extract_rs الإزاحات من boot.img (بالإضافة إلى xbl_config.img اختياريًا)، أو من ملف OTA كامل بصيغة ZIP، أو من عنوان http(s) يشير إلى أحدهما. تأتي رموز kallsyms من --kallsyms أو يتم استعادتها من الجدول المدمج في الصورة. يتم اشتقاق pselect_waiter_shift و off_slide_loggers_0_1 بواسطة مفكك التجميع arm64 المدمج. لا تحتوي صور MediaTek على xbl_config.img وعادةً لا تحتوي على BTF: يتم اشتقاق عنوان التحميل الفعلي من رمز kallsyms _text (يمكن تجاوزه بـ --phys).
cargo build --release --manifest-path tools/extract_rs/Cargo.toml
tools/extract_rs/target/release/ghostlock-extract.exe boot.img --xbl-config xbl_config.img --register
tools/extract_rs/target/release/ghostlock-extract.exe OTA.zip --format json --out offsets.json
يحفظ --register الجدول تحت src/kernels/<uname-release>/offsets.h؛ بينما يقوم --format c --out offsets.h بإنشاء ملف رأس مستقل.
التحليل على الجهاز
يمكن تحليل ملف OTA كامل على الهاتف بالكامل: يتم استخراج boot و xbl_config تلقائيًا. مرر --work-dir إلى دليل قابل للكتابة من التطبيق عند التشغيل داخل بيئة التطبيق المعزولة. قم بالترجمة المتقاطعة والدفع:
rustup target add aarch64-linux-android
$ndk = "$env:ANDROID_HOME\ndk\29.0.14206865\toolchains\llvm\prebuilt\windows-x86_64\bin"
$env:CC_aarch64_linux_android = "$ndk\aarch64-linux-android35-clang.cmd"
$env:AR_aarch64_linux_android = "$ndk\llvm-ar.exe"
$env:CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER = $env:CC_aarch64_linux_android
cargo build --release --target aarch64-linux-android --manifest-path tools/extract_rs/Cargo.toml
adb push tools/extract_rs/target/aarch64-linux-android/release/ghostlock-extract /data/local/tmp/
adb shell /data/local/tmp/ghostlock-extract /sdcard/OTA.zip
استيراد الإزاحات دون إعادة بناء التطبيق
لم تعد الأنوية الجديدة تتطلب إعادة بناء التطبيق: اضغط على Import offsets.json واختر ملف JSON الخاص بالمستخرج (كائن واحد أو مصفوفة)، أو ادفعه إلى <GHOSTLOCK_HOME>/offsets.json (الافتراضي /data/local/tmp). عند بدء التشغيل، يطابق الجزء الأصلي uname -r الحالي مع الإدخالات المستوردة قبل رفض النواة. يتم دمج الاستيرادات عبر الملفات؛ وعند وجود إصدار مخزن بالفعل، يُطلب التأكيد قبل الكتابة فوقه.
يمكن للتطبيق أيضًا إنشاء JSON بنفسه — Parse OTA link (رابط ملف OTA الكامل بصيغة ZIP) و Parse image (boot.img + xbl_config.img اختياريًا) يشغلان المستخرج داخل العملية ويكتبان offsets.json في دليل بيانات التطبيق عند النجاح.
[
{
"release": "6.12.38-android16-5-g844001fb8721-ab14552068-4k",
"kernel_phys_load": 3347054592,
"pselect_waiter_shift": 0,
"symbols": { "off_init_task": 37801728, "off_init_cred": 37891184 },
"struct_fields": { "task_prio": 148, "task_cred": 2304 }
}
]
الاعتمادات والترخيص
مبني على المشاريع التالية، مرخص بموجب رخصة Apache License 2.0 (انظر LICENSE):