GhostLock-App
中文: README_ZH.md
समर्थित डिवाइस
| Kernel | Devices |
|---|
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 |
Kernels का मिलान सटीक uname -r से किया जाता है; असमर्थित बिल्ड अस्वीकार कर दिए जाते हैं और ऐप शीर्ष पर स्थिति दिखाता है। Offsets 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
Offset निष्कर्षण
tools/extract_rs एक boot.img (वैकल्पिक xbl_config.img के साथ), एक पूर्ण OTA ZIP, या उनमें से किसी एक को इंगित करने वाले http(s) URL से offsets प्राप्त करता है। 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
ऐप को पुनर्निर्माण किए बिना offsets आयात करना
नए kernels को अब ऐप पुनर्निर्माण की आवश्यकता नहीं है: Import offsets.json पर टैप करें और
एक्सट्रैक्टर का JSON (एकल ऑब्जेक्ट या ऐरे) चुनें, या इसे
<GHOSTLOCK_HOME>/offsets.json (डिफ़ॉल्ट /data/local/tmp) पर पुश करें। स्टार्टअप पर नेटिव
कर्नेल को अस्वीकार करने से पहले वर्तमान uname -r का आयातित प्रविष्टियों के विरुद्ध मिलान करता है। आयात फ़ाइलों में विलय होते हैं; पहले से संग्रहीत रिलीज़ ओवरराइट से पहले संकेत देती है।
ऐप स्वयं भी JSON उत्पन्न कर सकता है — Parse OTA link (पूर्ण OTA ZIP
URL) और 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):