
CVE-2024-56426 भेद्यता का एक PoC।
Exynos 990 Galaxy S20, S20 FE, और Note20 परिवारों के लिए यूनिफाइड CVE-2024-56426 टूलिंग। यह एक्सप्लॉइट सभी दस मॉडल नामों को स्वीकार करता है और उन्हें छह सत्यापित स्टॉक बूटलोडर परिवारों पर मैप करता है।
[!CAUTION] ट्रैक की गई कुंजी बंडल और जनरेट की गई इमेजें फ्यूज़िंग-सक्षम हैं। फ्यूज़िंग अपरिवर्तनीय है। किसी कुंजी पर फ्यूज़ किया गया फोन केवल उस कुंजी के साथ संगत इमेजें ही बूट कर सकता है। गलत मॉडल, रोलबैक रिवीज़न, पैच सेट, या कुंजी बंडल डिवाइस को फ्यूज़्ड बूट लूप में छोड़ सकता है। पुनरावृत्ति के दौरान डेवलपमेंट कुंजियाँ और UFS पेलोड का उपयोग करें। जब तक कस्टम-कुंजी फ्यूज़िंग स्पष्ट रूप से इच्छित न हो, हर तैयारी/साइनिंग कमांड में
--no-fuseजोड़ें।
चयनित मॉडल BL1 मॉडल ID और सटीक-मॉडल LK पैच TSV दोनों को नियंत्रित करता है। Runtime artifact नियंत्रित करता है कि
प्रीफ्लाइट द्वारा कौन सा स्टॉक फर्मवेयर और एन्क्रिप्टेड स्प्लिट इमेजें उपयोग की जाती हैं। चार गैर-5G फ्लैग जो युग्मित 5G रनटाइम
आर्टिफैक्ट्स का उपयोग करते हैं, वे LK के मॉडल-ID चेक और मॉडल-ID प्रोग्रामिंग पथ को भी पैच करते हैं।
| मॉडल फ्लैग | Runtime artifact | Runtime firmware | मॉडल ID | EVT | रोलबैक | परीक्षण किया गया |
|---|---|---|---|---|---|---|
G780F | G780F | G780FXXSOFYJ1 | 0x154 | 11 | 24 | ❌ |
G980F | G981B | G981BXXSNHYB1 | 0x143 | 11 | 23 | ✅ |
G981B | G981B | G981BXXSNHYB1 | 0x13D | 11 | 23 | ❌ |
G985F | G986B | G986BXXSNHYB1 | 0x142 | 11 | 23 | ✅ |
G986B | G986B | G986BXXSNHYB1 | 0x13C | 11 | 23 | ✅ |
G988B | G988B | G988BXXSNHYB1 | 0x13E | 11 | 23 | ❌ |
N980F | N981B | N981BXXSIHYH3 | 0x153 | 11 |
सभी दस समर्थित Galaxy S20, S20 FE, और Note20 मॉडल फ्लैग में एक ऑप्ट-इन
CLI-केवल KVM बूट प्रोफ़ाइल है। Exynos 990 कर्नेल की एक शाखा
बनाएं जिसके नाम में kvm हो, और सटीक-मॉडल कमांड में --kvm जोड़ें, उदाहरण के लिए:```bash
python3 exploit/exploit.py --build-sboot --model G985F --no-fuse --kvm
यह प्रोफ़ाइल LK H-Arx/UH पथ को हटाती है, EL3 से EL2 पर कर्नेल में प्रवेश करने के लिए कहती है, और मेल खाते
डिक्रिप्टेड/री-एन्क्रिप्टेड EL3 मॉनिटर पैच टेबल को लागू करती है। यह स्टॉक/टैम्पर्ड बूटलोडर
फ्लैश मोड के लिए अनुपलब्ध रहती है। वेब कंट्रोल सेंटर में जानबूझकर कोई KVM नियंत्रण नहीं है। मेल खाते कर्नेल
और [WindowsInQemu](https://github.com/Creeeeger/WindowsInQemu) के साथ, Windows फोन पर QEMU में पूर्ण गति से चल सकता है
KVM के माध्यम से।
## त्वरित आरंभ
हर मोड को एक क्रमांकित इंस्टॉलेशन अनुक्रम के रूप में न मानें। एक लक्ष्य चुनें:
| लक्ष्य | पथ |
|-----------------------------------|--------------------------------------------------------------------------------------------------------------------------|
| एक हस्ताक्षरित कस्टम ROM स्थापित करें | सटीक मॉडल/सेटअप → EUB → अस्थायी `--signed --no-fuse` श्रृंखला → ROM का पूर्ण हस्ताक्षरित आउटपुट फ्लैश करें → UFS पहला बूट |
| एक्सप्लॉइट का परीक्षण करें | वैकल्पिक `--prepare --no-fuse` → EUB → `--signed --no-fuse` → रुकें |
| बूट श्रृंखला विकसित करें (केवल CLI) | अस्थायी no-fuse परीक्षण → बिल्ड → उत्पन्न SBoot/TZSW/LDFW फ्लैश करें → UFS |
| डंप / रिकवरी | इसका अलग वर्कफ़्लो और फ़्यूज़-स्थिति जाँच उपयोग करें |
`--prepare` एक अनुशंसित ड्राई-रन है, कोई आवश्यक पूर्ववर्ती नहीं: `--signed`
प्रीफ़्लाइट दोहराता है। उत्पन्न तीन-भाग Heimdall कमांड एक बूट-श्रृंखला विकास उपकरण है; यह कस्टम-ROM
फ्लैश नहीं है।
किसी डिवाइस को छूने से पहले [USER_GUIDE.md](https://github.com/creeeeger/cve-2024-56426/blob/exynos990/USER_GUIDE.md) पढ़ें और उसका मेल खाता वर्कफ़्लो चुनें। इसमें
पूर्ण-ROM हैंडऑफ़ के साथ-साथ अनफ़्यूज़्ड, फ़्यूज़्ड और अनिश्चित-स्थिति रिकवरी नियम शामिल हैं।
## वैकल्पिक स्थानीय UI
ब्राउज़र UI केवल Python की मानक लाइब्रेरी का उपयोग करता है और मौजूदा
`exploit/exploit.py` CLI को कॉल करता है। बूट-श्रृंखला विकास और इसका उत्पन्न तीन-भाग Heimdall कमांड टर्मिनल-केवल
उपकरण बने रहते हैं।
इसे रिपॉज़िटरी रूट से प्रारंभ करें:```bash
python3 exynos990_control_center.py
लॉन्चर 127.0.0.1 से बाइंड होता है, एक नया एक्सेस टोकन जनरेट करता है, पूरा लोकल URL प्रिंट करता है, और उसे डिफ़ॉल्ट
ब्राउज़र में खोलता है। जब ब्राउज़र को स्वचालित रूप से नहीं खोलना हो तो --no-browser का उपयोग करें:```bash
python3 exynos990_control_center.py --no-browser
UI निम्नलिखित प्रदान करता है:
- निर्भरता और रिपॉजिटरी-एसेट के लिए लाल/हरा चेक;
- एक वैश्विक टारगेट-मॉडल विकल्प और ठीक दो फ्यूज़ निर्णय: Stay unfused या Fuse;
- एक वर्कफ़्लो चयनकर्ता जो केवल चयनित वर्कफ़्लो के चरणों को दिखाता और क्रमांकित करता है;
- install-ROM, exploit-test, BootROM-dump, और stock-recovery वर्कफ़्लो;
- एक सटीक-मॉडल tampered-loader क्रिया जो UH को मान्य करती है और उसे Heimdall के साथ BOOTLOADER स्लॉट में फ्लैश करती है ताकि
EUB में प्रवेश किया जा सके;
- एक स्थायी फ्यूज़ चेतावनी और कॉन्फ़िगर की गई key/eFuse SHA-256 फ़िंगरप्रिंट;
- एक केवल-unfused स्टॉक बूट-चेन रिस्टोर कार्ड जो Fuse चुनने के बाद अनुपलब्ध हो जाता है;
- लाइव प्रोसेस आउटपुट, रद्दीकरण, और प्रति-चरण सत्यापन मार्कर।
यह एक केवल-CLI Exynos 990 KVM सूचना भी दिखाता है, लेकिन जानबूझकर कोई KVM विकल्प उजागर नहीं करता या किसी भी
वेब क्रिया में `--kvm` आगे नहीं भेजता।
USB एक्सेस उस प्रोसेस की अनुमतियों का पालन करता है जिसने कंट्रोल सेंटर लॉन्च किया। इसे शुरू करने से पहले दी गई udev/driver
अनुमतियाँ कॉन्फ़िगर करें। UI विशेषाधिकार क्रेडेंशियल का अनुरोध, धारण, या आगे अग्रेषण नहीं करता। मुद्रित टोकन
URL को निजी रखें और उपयोग के तुरंत बाद सर्वर बंद कर दें।
टर्मिनल उपयोगकर्ता `exynos990_control_center.py` को अनदेखा कर सकते हैं; नीचे दर्ज़ हर CLI कमांड अपरिवर्तित और पूरी तरह
समर्थित रहता है।
## आवश्यकताएँ
Python 3.10 या नया आवश्यक है।
Windows 10/11 (नेटिव PowerShell):```powershell
.\windows\setup.ps1
. .\windows\activate.ps1
python .\exploit\exploit.py --prepare --model G985F --no-fuse
सेटअप एक पिन किया हुआ नेटिव AArch64 टूलचेन, LZ4, Heimdall, और एक रिपॉजिटरी वर्चुअल एनवायरनमेंट इंस्टॉल करता है, फिर सभी पेलोड बनाता है। BootROM WinUSB ड्राइवर एक स्पष्ट Administrator opt-in है क्योंकि इसका अपस्ट्रीम self-signed सर्टिफिकेट मशीन के ट्रस्ट स्टोर को बदल देता है। पूर्ण सेटअप, ड्राइवर इंस्टॉल, Download Mode अंतर, सत्यापन, और समस्या निवारण प्रक्रिया के लिए WINDOWS.md देखें।
Windows सक्रियण के बाद, शेष क्रॉस-प्लेटफ़ॉर्म उदाहरणों में जहाँ python3 दिखाया गया है, वहाँ python का उपयोग करें।
Linux:```bash sudo apt-get update sudo apt-get install -y gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu lz4
macOS:```bash
brew tap messense/macos-cross-toolchains
brew install aarch64-unknown-linux-gnu lz4
तैयारी, साइनिंग और पेलोड मोड समान मॉडल-जागरूक प्रीफ्लाइट चलाते हैं:
exploit/extra/images/<model>/ को अछूते एन्क्रिप्टेड स्प्लिट छवियों की साफ प्रति से बदलें।--no-fuse के साथ, पहले पाँच फ्यूज़िंग पंक्तियों को अक्षम करके एक प्रभावी TSV प्रति उत्पन्न करें। --kvm के साथ, kvm चिह्नित LK पंक्तियों को भी सक्षम करें, मेल खाते EL3 मॉनिटर TSV को डिक्रिप्ट और पैच करें, और उसके संरक्षित क्षेत्र को फिर से एन्क्रिप्ट करें।mem.bin, loader.bin और Exynos990_boot_custom_key.bin बनाएँ।प्रक्रिया पहले फर्मवेयर, पैच, मेटाडेटा या हस्ताक्षर बेमेल पर रुक जाती है। यह अपरिवर्तनीय स्रोत निर्देशिकाओं को कभी भी स्थान पर पैच नहीं करता है।
सभी कमांड के लिए --model आवश्यक है।
--no-fuse एक संशोधक है, स्टैंडअलोन मोड नहीं। यह कार्यशील LK को फिर से बनाते समय पाँच पहचाने गए कस्टम-की OTP पंक्तियों को अक्षम करता है। इसे हर उस कमांड के लिए उपयोग करें जो एक अनफ्यूज़्ड डेवलपमेंट चेन तैयार, भेजता या बनाता है। यह मौजूदा फ्यूज़ को पूर्ववत नहीं करता है।
CLI संशोधक को UFS और डंप मोड के साथ स्वीकार करता है क्योंकि वे कमांड भी प्रीफ्लाइट चलाते हैं, लेकिन उनके USB ऑपरेशन पुनर्निर्मित LK को प्रसारित नहीं करते हैं। फोन पर पहले से फ्लैश किया गया LK UFS फ्यूज़ व्यवहार निर्धारित करता है। परिणामस्वरूप, UI जानबूझकर UFS या BootROM डंप मोड के लिए कोई नो-फ्यूज़ नियंत्रण प्रदान नहीं करता है। दोनों बूटलोडर फ्लैश मोड --no-fuse को अस्वीकार करते हैं क्योंकि वे कोई LK पैचिंग या साइनिंग नहीं करते हैं।
--kvm भी एक संशोधक है। इसे हर सटीक-मॉडल वर्कफ़्लो के साथ स्वीकार किया जाता है जो प्रीफ्लाइट चलाता है। TSV में KVM पंक्तियों को तब तक अनदेखा किया जाता है जब तक यह फ़्लैग मौजूद न हो, और ब्राउज़र UI इसे कभी आपूर्ति नहीं करता है।
उदाहरण:```bash python3 exploit/exploit.py --signed --model N986B --no-fuse
USB खोले बिना संबंधित हस्ताक्षरित बूटलोडर उत्पन्न करें:```bash
python3 exploit/exploit.py --build-sboot --model N986B --no-fuse
यह कमांड मॉडल इमेज डायरेक्टरी को साफ स्टॉक इनपुट से पुनर्निर्मित करता है, LK पैच लागू करता है, हर घटक पर हस्ताक्षर करता है और सत्यापित करता है, sboot.bin को मर्ज करता है, एम्बेडेड घटकों और टेल की जाँच करता है, और उसका आकार, SHA-256, और एक Heimdall कमांड प्रिंट करता है जो sboot.bin, हस्ताक्षरित tzsw.img, और हस्ताक्षरित ldfw.img भेजता है।
केवल उस डिवाइस पर जो अनफ्यूज्ड होने के लिए जाना जाता है, चयनित मॉडल के मूल BL tar से सटीक स्टॉक बूट चेन को पुनर्स्थापित करें:```bash python3 exploit/exploit.py --flash-stock --model N986B --wait
यह कमांड केवल `sboot.bin.lz4`, `tzsw.img.lz4`, और `ldfw.img.lz4` निकालता है, उन्हें एक अस्थायी निर्देशिका में डीकंप्रेस करता है, सत्यापित करता है कि तीनों आउटपुट मौजूद हैं और खाली नहीं हैं, और एक Heimdall फ्लैश ऑपरेशन को आमंत्रित करता है। अस्थायी फ़ाइलें बाद में हटा दी जाती हैं। `--no-reboot` और `--verbose` भी समर्थित हैं। फ़ोन पहले से ही Heimdall-संगत डाउनलोड मोड में होना चाहिए, और चयनित मॉडल भौतिक डिवाइस से बिल्कुल मेल खाना चाहिए।
यह Android, AP, modem, CSC, userdata, या एक पूर्ण स्टॉक ROM को पुनर्स्थापित नहीं करता है। इसे कभी भी कस्टम-की-फ्यूज़्ड डिवाइस पर न चलाएँ। ऐसे फ़ोन को सटीक फ्यूज़्ड कुंजी के साथ पुनः हस्ताक्षरित स्टॉक-आधारित सॉफ़्टवेयर की आवश्यकता होती है; कस्टम ट्रस्ट रूट स्थायी रहता है। यदि फ्यूज़ स्थिति अज्ञात है, तो रुकें।
## FRP / PERSISTENT पुनर्स्थापना नोट
> [!CAUTION]
> यह प्रक्रिया केवल उस डिवाइस के लिए है जिसके आप स्वयं मालिक हैं और जिसकी
> सेवा करने के लिए आप अधिकृत हैं। इसे किसी अन्य व्यक्ति के डिवाइस पर उपयोग करना
> सख्त रूप से निषिद्ध है। गलत पार्टीशन पथ स्थायी डेटा हानि का कारण बन सकता है या
> डिवाइस को बूट करने में असमर्थ छोड़ सकता है। कुछ भी लिखने से पहले लक्षित पार्टीशन का बैकअप लें और उसके हल किए गए
> ब्लॉक-डिवाइस पथ और आकार को सत्यापित करें।
यह रिपॉजिटरी फ़ैक्टरी रीसेट प्रोटेक्शन (FRP) को स्वचालित रूप से नहीं हटाता है। उन डिवाइसों पर जो Android के
`PersistentDataBlockService` का उपयोग करते हैं, FRP स्थिति आमतौर पर `PERSISTENT` नामक पार्टीशन में संग्रहीत होती है। देखें
[AOSP कार्यान्वयन](https://android.googlesource.com/platform/frameworks/base/+/bc56632da95b/services/core/java/com/android/server/PersistentDataBlockService.java)।
एक्सप्लॉइट श्रृंखला द्वारा एक कस्टम रिकवरी बूट करने के बाद जो `adb` और
`dd` प्रदान करती है, पार्टीशन की पहचान करें और उसका बैकअप लें। अनुमानित संख्यात्मक ब्लॉक-डिवाइस पथ को प्रतिस्थापित न करें:```bash
adb shell ls -l /dev/block/by-name/PERSISTENT
adb shell dd if=/dev/block/by-name/PERSISTENT of=/tmp/PERSISTENT.backup.img bs=4096
adb pull /tmp/PERSISTENT.backup.img
केवल बैकअप लेने के बाद, पार्टीशन को शून्य करें और Android को एक नई persistent-data-block संरचना आरंभ करने दें:```bash adb shell dd if=/dev/zero of=/dev/block/by-name/persistent reboot
यह विधि परीक्षण की गई है और काम करती है, FRP हटा दिया गया है और डिवाइस अनलॉक हो गया है।
## LK पैच
पैच चयन आर्टिफैक्ट मैपिंग के अनुसार होता है:```text
G780F -> lk_g780f_selected_patches.tsv
G980F -> lk_g980f_selected_patches.tsv (applied to G981B LK)
G981B -> lk_g981b_selected_patches.tsv
G985F -> lk_g985f_selected_patches.tsv (applied to G986B LK)
G986B -> lk_g986b_selected_patches.tsv
G988B -> lk_g988b_selected_patches.tsv
N980F -> lk_n980f_selected_patches.tsv (applied to N981B LK)
N981B -> lk_n981b_selected_patches.tsv
N985F -> lk_n985f_selected_patches.tsv (applied to N986B LK)
N986B -> lk_n986b_selected_patches.tsv
एक TSV को बदले बिना स्टॉक LK के विरुद्ध मान्य करें:```bash
python3 external/tools/apply_lk_patches.py
bootLoaderFiles/sbootSplitParts_original/G986B/lk.bin
external/ghidra/lk_g986b_selected_patches.tsv
--check
`external/ghidra/ApplyLkPatches.java` समान छह-स्तंभ TSV प्रारूप स्वीकार करता है और अब पुराने-बाइट बेमेल पर विफल हो जाता है
बजाय पैच को आँख मूंदकर लागू करने के। जिन पंक्तियों का पहला स्तंभ `kvm` है, उन्हें एक अतिरिक्त `--kvm` स्क्रिप्ट तर्क की आवश्यकता होती है।
पुराने `check_signature` और `check_ext4_signature` रिटर्न-शून्य पंक्तियाँ
प्रोफ़ाइल `0` का उपयोग करती हैं: वे पुराने बायपास स्थानों का दस्तावेज़ीकरण करती हैं लेकिन जानबूझकर लागू नहीं की जाती हैं,
इसलिए निर्मित इमेजों को LK की वास्तविक Samsung हस्ताक्षर जाँचों को संतुष्ट करना चाहिए।
## हस्ताक्षर
`external/tools/sign_sboot_images.py` को एक मॉडल की आवश्यकता होती है और वह मॉडल ID, EVT, और रोलबैक संशोधन को
[model_data.py](https://github.com/creeeeger/cve-2024-56426/blob/exynos990/external/tools/model_data.py) से प्राप्त करता है:```bash
python3 external/tools/sign_sboot_images.py \
--images-dir exploit/extra/images/G986B \
--keys-dir external/keys/exynos9830_crecker \
--model G986B
Stage2 हस्ताक्षर हस्ताक्षर करने के बाद सत्यापित किए जाते हैं। यह टूल ldfw.img या
tzsw.img के लिए Samsung AVB मेटाडेटा को पुनर्जीवित नहीं करता है; उन रैपरों के अंदर सुरक्षित-बूट बाइट्स को बदलने के लिए अभी भी लक्ष्य
बूट प्रवाह द्वारा उपयोग की जाने वाली अलग AVB नीति की आवश्यकता होती है। एक पूर्ण हस्ताक्षरित ROM को सटीक AVB मॉडल और समान कुंजी बंडल का उपयोग करना चाहिए, फिर उसके पूर्ण
जनरेट किए गए पैकेज के साथ फ्लैश किया जाना चाहिए। देखें
CreckerROM रिपॉजिटरी
और USER_GUIDE.md में इंस्टॉलेशन वर्कफ़्लो।
शामिल किए गए छेड़छाड़ वाले पैकेज sboot.bin.lz4 को छोड़कर हर स्टॉक BL सदस्य को संरक्षित करते हैं।
वह सदस्य हटा दिया जाता है और पैकेज का डीकंप्रेस्ड
uh.bin को sboot.bin के रूप में संग्रहीत किया जाता है, जो EUB-ट्रिगरिंग लेआउट से मेल खाता है।
UI सीधे संबंधित Heimdall प्रवाह को निष्पादित कर सकता है। यह सटीक भौतिक मॉडल के छेड़छाड़ वाले संग्रह का चयन करता है,
सत्यापित करता है कि sboot.bin डीकंप्रेस्ड uh.bin.lz4 के साथ बाइट-समान है, और सत्यापित UH पेलोड को
BOOTLOADER स्लॉट में फ्लैश करता है:```bash
python3 exploit/exploit.py --flash-tampered --model G986B --wait
यह जानबूझकर सामान्य बूट को रोकता है और अगले बूट को EUB में मजबूर करता है। यह BL tar के शेष सदस्यों को फ्लैश नहीं करता है।
एक पैकेज को इसके साथ पुनः उत्पन्न करें:```bash
python3 external/tools/build_tampered_loader.py \
bootLoaderFiles/originalBl/G986B/BL_G986BXXSNHYB1.tar \
bootLoaderFiles/tamperedLoader/G986B/BL_G986BXXSNHYB1_tampered.tar
उपयोग करें सटीक भौतिक मॉडल का छेड़छाड़ किया हुआ लोडर जब उसका निर्देशिका मौजूद हो। युग्मित रनटाइम मैपिंग लागू होती है एक्सप्लॉइट प्रीफ्लाइट और साइनिंग पर, न कि संग्रहीत स्टॉक/छेड़छाड़ किए गए BL पैकेज चयन पर।
ध्यान रखें कि यदि आपने डिवाइस को फ्यूज़ किया है, तो आपको अपने BOOTLOADER स्लॉट में एक साइन किया हुआ uh.bin फ्लैश करना होगा, क्योंकि स्टॉक uh वर्तमान में गलत कुंजी के साथ साइन किया गया है।
विभाजित और विलय:```bash python3 exploit/split.py sboot.bin -o /tmp/G986B-splits python3 exploit/merge.py /tmp/G986B-splits
स्टैंडअलोन मर्जर को parts डायरेक्टरी में `tzsw.img` और `ldfw.img` की आवश्यकता होती है और यह संबंधित तीन-भाग वाला
Heimdall कमांड प्रिंट करता है। उस कमांड का उपयोग केवल तभी करें जब वे दोनों इमेज पहले से चयनित मॉडल के लिए साइन की गई हों;
`--build-sboot` उस साइनिंग को स्वचालित रूप से निष्पादित और सत्यापित करता है।
व्यक्तिगत LDFW रिकॉर्ड निकालें:```bash
python3 external/tools/extract_ldfw.py ldfw.img -o LDFWs
प्रदान किया गया स्प्लिट लेआउट हर कैननिकल स्टॉक sboot.bin को बाइट-दर-बाइट पुनर्निर्मित करता है। EPBL और EL3 मॉनिटर डिक्रिप्ट/री-एन्क्रिप्ट भी सभी फर्मवेयर परिवारों के लिए बाइट-दर-बाइट राउंड-ट्रिप करते हैं जब
EPBL हेडर अपरिवर्तित छोड़ दिया जाता है।
सभी समर्थित फोन एक ही Exynos 990 BootROM साझा करते हैं। पेलोड सामान्य BootROM एंट्री पॉइंट्स और IRAM पते का उपयोग करते हैं न कि मॉडल-विशिष्ट LK ऑफसेट का। उत्पन्न बाइनरी इन एंट्री पॉइंट्स पर रिज़ॉल्व होते हैं:
मॉडल-विशिष्ट व्यवहार LK TSV, FWBL1 मॉडल ID, और स्टॉक रोलबैक रिवीज़न तक सीमित है।
halal-beef), के माध्यम से
halal-beef/hubble: exploit/exploit.py द्वारा उपयोग किया गया बैकएंड कोड; SoC
लेआउट जो exploit/split.py और
exploit/merge.py द्वारा उपयोग किया जाता है; और run_exploit(), जो एड्रेस/ओवरराइट ऑपरेशन लागू करता है।VDavid003/exynos-usbdl: वह पेलोड स्केलेटन जिससे Exynos990
कस्टम-की पेलोड व्युत्पन्न किया गया था।18 |
| ❌ |
N981B | N981B | N981BXXSIHYH3 | 0x14E | 11 | 18 | ❌ |
N985F | N986B | N986BXXSIHYH3 | 0x152 | 11 | 18 | ❌ |
N986B | N986B | N986BXXSIHYH3 | 0x14D | 11 | 18 | ❌ |
| पथ | उद्देश्य |
|---|
bootLoaderFiles/originalBl/<model>/ | सभी दस मॉडलों के लिए साफ सटीक-मॉडल BL_<firmware>.tar पैकेज। |
bootLoaderFiles/sbootSplitParts_original/<model>/ | अछूते सटीक-मॉडल एन्क्रिप्टेड SBoot स्प्लिट, ldfw.img, tzsw.img, मैनिफेस्ट और टेल। |
bootLoaderFiles/exynos9830Decrypted/<model>/ | सटीक-मॉडल डिक्रिप्टेड EPBL, EL3, TZSW और LDFW विश्लेषण फ़ाइलें। |
bootLoaderFiles/tamperedLoader/<model>/ | सटीक-मॉडल EUB-ट्रिगरिंग BL पैकेज। |
bootLoaderFiles/MODEL_COMPARISON.md | सटीक-बनाम-युग्मित फर्मवेयर तुलना और पैच संगतता नोट्स। |
bootLoaderFiles/exynos990Bootrom/ | साझा Exynos 990 BootROM डंप। |
bootromNotes/ | साझा BootROM फ्लो और USB संदर्भ नोट्स। |
drivers/windows/winusb/ | BootROM/EUB 04e8:1234 के लिए पिन किया गया Houston WinUSB पैकेज। |
windows/ | नेटिव Windows सेटअप, पर्यावरण सक्रियण और हैश-जांच ड्राइवर इंस्टॉलर। |
exploit/extra/images/<model>/ | डिस्पोज़ेबल मॉडल-विशिष्ट प्रीफ्लाइट आउटपुट। |
external/ghidra/ | सटीक-मॉडल LK और KVM EL3 TSV के साथ-साथ Ghidra पैच स्क्रिप्ट। |
external/decompiled_G985F/ | केवल-G985F डीकंपाइल्ड संदर्भ फ़ाइलें। |
exynos990reverseEng_G985F/ | केवल-G985F Ghidra प्रोजेक्ट। |
external/keys/exynos9830_crecker/ | साझा कस्टम-की बंडल। |
exploit/exploit.py | स्थिर CLI प्रवेश बिंदु और वर्कफ़्लो समन्वयक। |
exploit/build_payloads.py | क्रॉस-प्लेटफ़ॉर्म नेटिव पेलोड बिल्डर जो Windows, Linux और macOS पर प्रीफ्लाइट द्वारा उपयोग किया जाता है। |
exploit/preflight.py | कार्यशील-छवि तैयारी, LK पैचिंग, साइनिंग और मर्ज सत्यापन। |
exploit/usb_transport.py | PyUSB फ्रेमिंग, डिवाइस खोज, ओवरराइट और डंप ट्रांसपोर्ट। |
exploit/tampered_loader.py | सटीक-मॉडल UH निष्कर्षण, टैम्पर्ड-लोडर सत्यापन और Heimdall EUB फ्लैश। |
exploit/stock_restore.py | सटीक-मॉडल स्टॉक आर्काइव निष्कर्षण और Heimdall कमांड निर्माण। |
control_center/ | ब्राउज़र बैकएंड क्रियाएँ, निर्भरता जाँच, जॉब और HTTP API। |
external/tools/*_crypto.py | साझा EPBL/EL3 AES और ECDSA एन्कोडिंग/हस्ताक्षर प्राइमिटिव। |
| मोड | उद्देश्य |
|---|
--prepare | USB खोले बिना प्रीफ्लाइट चलाएँ। |
--build-sboot | प्रीफ्लाइट चलाएँ और मॉडल इमेज निर्देशिका में सत्यापित हस्ताक्षरित sboot.bin बनाएँ। |
--signed | EUB से कस्टम-की पेलोड और हस्ताक्षरित बूट चेन भेजें। |
--ufs | loader.bin के साथ UFS बूट पथ शुरू करें। |
--dump | mem.bin चलाएँ और BootROM के 0x20000 बाइट डंप करें। |
--flash-tampered | सटीक-मॉडल UH मान्य करें और EUB को बाध्य करने के लिए इसे BOOTLOADER पर फ्लैश करें। |
--flash-stock | मूल BL tar से सटीक-मॉडल स्टॉक SBoot, TZSW और LDFW निकालें और फ्लैश करें। |
| छवि | कस्टम हस्ताक्षर कुंजी |
|---|
fwbl1.img | BL1 निजी कुंजी प्लस Stage2 TEE/REE सार्वजनिक ब्लॉब्स |
epbl.img, el3_mon.img | Stage2 TEE |
bl2.img, lk.bin | Stage2 REE |
ldfw.img, tzsw.img | Stage2 TEE, आंतरिक और बाहरी Stage2 फुटर |
| पेलोड | एक्सप्लॉइट जंप | लिंक्ड एंट्री |
|---|
mem.bin | 0x02022010 | 0x02022010 |
loader.bin | 0x02022010 | 0x02022010 |
Exynos990_boot_custom_key.bin | 0x02022000 | पोज़िशन-इंडिपेंडेंट स्टेज 1 |
| भाग | प्रारंभ | अंत |
|---|
fwbl1.img | 0x000000 | 0x003000 |
epbl.img | 0x003000 | 0x016000 |
bl2.img | 0x016000 | 0x082000 |
lk.bin | 0x0DB000 | 0x35B000 |
el3_mon.img | 0x35B000 | 0x39B000 |
| स्टेज | लोड पता |
|---|
| BL1 | 0x02022000 |
| EPBL | 0x02026000 |
| BL2 | 0x15600000 |
| LK | 0xE8000000 |
| EL3 मॉनिटर | 0xBFE80000 |