
duchamp-root v52c8d05bcf
Xiaomi K70e (duchamp) рут одним кликом через CVE-2026-43499 (IonStack) + интеграция KernelSU
⚡ Гордый пользователь JetBrains Mono ⚡
В этом README используется исключительно JetBrains Mono. Comic Sans запрещён.
[!IMPORTANT] 🚨 Отказ от ответственности
Данный эксплойт предназначен только для образовательных целей.
- Разблокировка загрузчика может лишить вас гарантии.
- Root-доступ к устройству может вызвать bootloop, потерю данных или самовозгорание (вероятно, нет, но кто знает).
- Я не несу ответственности, если ваш K70e превратится в кирпич K70.
- Если ваша девушка уйдёт от вас из-за того, что вы слишком много времени потратили на рутинг, это ваша проблема.
- 7̷̋̚1̸̽̈́0̵̛̅ ̸͛̿ù̶̈́n̸̓̋l̸̔̒o̸̔̒c̷̊̒k̵̇̚ ̷̊̒ḟ̷͝e̶̋̕s̵̋̚t̸̽̈́ ̵̔̋l̶̔̒e̸̓̋t̸̔̒s̵̋̚ ̸̾̑ġ̷̝o̷̊̒ ̵̛̅ḟ̷͝u̸̓̋c̷̋̚k̸̛̅i̶̽̈́n̵̔̋g̷̊̒ ̴͛̿g̶̾̑ơ̵̅
📖 Китайская версия
🤔 Что это
Xiaomi K70e (duchamp) — инструмент для root в один клик, основанный на уязвимости ядра CVE-2026-43499 (IonStack), со встроенным демоном KernelSU.
Простыми словами: нажал — и телефон рутирован. Всё просто.
Версия «Фестиваль разблокировки 710»: Не 711, не 709, а 710. В этот день мы не разблокируем телефон, мы освобождаем его.
Философская версия: Когда ты смотришь в /proc/, /proc/ смотрит в тебя через pipe_physrw.
🎯 Текущая поддержка
| Устройство | Кодовое имя | Чип | Версия ядра | Статус |
|---|---|---|---|---|
| Redmi K70E | duchamp | MT6897 (Dimensity 8300) | 6.1.138-android14-11 | ✅ |
Другие модели см. в каталоге
src/targets/(эталонные конфигурации из исходного проекта, не проверенные на практике).
🧠 Цепочка уязвимостей
| Этап | Метод | Описание |
|---|---|---|
| 1. Утечка KASLR | Побочный канал pselect slide | Чтение _stext через псевдоним данных nfulnl_log_packet |
| 2. Перехват FOPS | Произвольная запись в стек через pselect | FUTEX_CMP_REQUEUE_PI + состояние гонки для перезаписи таблицы ops |
| 3. Примитив физического чтения/записи | Поддельные pipe_buf_ops | Подделка pipe_buf_ops → произвольный физический rw в ядре |
| 4. Повышение привилегий | Патч cred + seccomp + selinux | Изменение uid=0, полные cap, отключение seccomp, отключение selinux |
| 5. Постоянство | Встроенный KernelSU | Запись и запуск ksud (демона KernelSU) |
🎭 Пользовательские истории
Фестиваль 710
Пользователь: "Мой K70e можно разблокировать?"
Я: "Не нужно разблокировать, сразу root."
Пользователь: "??? "
Я: "w 710"
Пользователь: "Что?"
Я: "Новинка фестиваля разблокировки 710: не разблокировка BL, а освобождение телефона."
Первый запуск
Пользователь: "Почему мой телефон перезагрузился?"
preload.so: "Не паникуй, я повышаю привилегии."
Пользователь: "Что такое KernelSU?"
preload.so: "Это менеджер root, который теперь работает на твоём телефоне."
Интеграция KernelSU
Пользователь: "Как управлять root после этого?"
ksud: "Привет, я демон KernelSU."
Пользователь: "Что ты умеешь?"
ksud: "Могу давать приложениям права root."
Пользователь: "Ты же не встроенный?"
ksud: "Я встроен в preload.so."
Пользователь: "Круто."
Неудачный опыт
Пользователь: "Я поставил твою штуку, и теперь у меня кирпич!!!"
Я: "Какое устройство?"
Пользователь: "iPhone 14."
Я: "......Ты серьёзно?"
Пользователь: "Ты написал про фестиваль 710, вот я и попробовал."
Я: "710 — одно из кодовых имён Xiaomi 14, а не iPhone 14. Уходи."
⚙️ Принцип работы
- Загрузка preload.so — внедрение через
LD_PRELOADв любое приложение, запуск__attribute__((constructor)) - Утечка базы KASLR — побочный канал
pselectчерез псевдоним данных nfulnl_log_packet читает_stext - Перехват таблицы FOPS — состояние гонки futex PI + перезапись pipe ops
- Получение phys rw — подделка
pipe_buf_opsдля произвольного доступа к физической памяти ядра - Патч cred — поиск процесса root child, изменение uid=0, полные cap, sid=kernel
- Отключение защиты — патч seccomp, сброс TIF_SECCOMP, selinux enforce=0
- Запуск KernelSU — извлечение встроенного ksud в
/data/local/tmp/ksud, запуск демона KernelSU
📦 Использование
Предварительные требования
- Xiaomi K70e (duchamp) или другое поддерживаемое устройство
- Разблокированный загрузчик (или неразблокированный — временный root тоже работает)
- Включена отладка ADB
- Храбрость, не боящаяся кирпича
Быстрый старт
# Скачать preload.so из Release
wget https://github.com/Colorful-glassblock/duchamp-root/releases/download/v1.0/preload.so
# Передать на устройство
adb push preload.so /data/local/tmp/
# Внедрить в любое приложение через LD_PRELOAD
adb shell
su -c "LD_PRELOAD=/data/local/tmp/preload.so your_app"
Или используйте предоставленный скрипт внедрения (TODO).
Сборка из исходников
# Требуется NDK или Termux с aarch64-linux-android-clang
make PROJECT=duchamp
# Результат в build/duchamp/bin/preload.so
📂 Структура файлов
├── Makefile # Система сборки
├── assets/
│ └── (будет дополнено)
├── build/
│ └── embed/
│ └── ksud # Встроенный бинарник демона KernelSU
└── src/
├── main.c # Входная точка + управление потоками
├── preload.c # Загрузчик LD_PRELOAD + запись встроенных файлов
├── root.c # Повышение привилегий ядра + патч cred + установка su/ksud
├── slide.c # Утечка KASLR через побочный канал
├── fops.c # Перехват FOPS
├── pipe.c # Примитив физического чтения/записи через pipe_buffer
├── ksud_blob.S # Встроенный бинарник ksud
├── offset.h # Общий заголовок смещений ядра
├── common.h # Глобальные константы + объявления функций
├── kernelsnitch/ # Обход Kernelsnitch
└── targets/
├── duchamp/
│ └── target.h # Специфичные смещения для duchamp
├── blazer-CP2A.260605.012/
├── caiman-CP2A.260605.012.C1/
├── comet-CP2A.260605.012.C1/
├── komodo-CP2A.260605.012.C1/
├── tegu-CP2A.260605.012/
├── tokay-CP2A.260605.012/
└── ... # target.h для других моделей
🧩 Зависимости
aarch64-linux-android-clang(NDK r29 или версия Termux)lld(компоновщик LLVM)make+git- Крепкое сердце (предупреждение о кирпиче)
🛡️ Отказ от ответственности
Данный инструмент предназначен только для учебных и исследовательских целей.
Разблокировка загрузчика может привести к аннулированию гарантии.
Root-доступ к устройству может вызвать bootloop, потерю данных, неработоспособность банковских приложений.
Если вы из-за этого расстались с девушкой — это ваша проблема.
Если вы получили кирпич и пришли ко мне — я буду смеяться.
С фестивалем разблокировки 710! 🚀
💡 Пасхалки / ЧаВО
В: Почему «Фестиваль разблокировки 710»?
О: 10 июля. Не 711 (магазин), не 709 (непонятно что). 710. В этот день мы не разблокируем BL, мы освобождаем телефон.
В: QwQ?
О: Эмоционально стабилен (нет).
В: Есть su?
О: Нет, только KernelSU. Если нужен su, установи менеджер KernelSU и включи сам.
В: Поддерживаются ли другие модели?
О: Смотри каталог src/targets/. Если твоя модель там — поддерживается, если нет — добавляй сам.
В: Можно ли использовать без разблокировки BL?
О: Да, внедрение через LD_PRELOAD не требует разблокировки BL. Но после перезагрузки нужно будет внедрять снова.
В: Сработает ли Kernelsnitch?
О: Обход Kernelsnitch уже встроен. Если тебя всё равно поймают — это skill issue.
В: 114514?
О: はいはいわかりました草
📖 Английская версия
🤔 Что это
Xiaomi K70e (duchamp) — инструмент для root в один клик, основанный на уязвимости ядра CVE-2026-43499 (IonStack), со встроенным демоном KernelSU.
Неформальная версия: Клик, root, готово.
Версия «Фестиваль 710»: 10 июля. Не 11 июля (магазин), не 9 июля (кому какое дело). 10 июля. В этот день мы не разблокируем загрузчики, мы освобождаем телефоны.
Философская версия: Когда ты смотришь в /proc/, /proc/ смотрит в тебя с pipe_physrw.
🎯 Поддерживаемые устройства
| Устройство | Кодовое имя | SoC | Ядро | Статус |
|---|---|---|---|---|
| Redmi K70E | duchamp | MT6897 (Dimensity 8300) | 6.1.138-android14-11 | ✅ |
Другие устройства в каталоге
src/targets/— эталонные конфигурации из оригинального проекта, не проверены.
🧠 Цепочка эксплойта
| Этап | Метод | Описание |
|---|---|---|
| 1. Утечка KASLR | Побочный канал pselect slide | Чтение _stext через псевдоним данных nfulnl_log_packet |
| 2. Перехват FOPS | Произвольная запись в стек через pselect | Состояние гонки FUTEX_CMP_REQUEUE_PI → перезапись таблицы ops |
| 3. Примитив phys rw | Поддельные pipe_buf_ops | Подделка pipe_buffer ops → произвольный физический rw в ядре |
| 4. Повышение | Патч cred + seccomp + selinux | uid=0, полные caps, отключение seccomp, отключение selinux |
| 5. Постоянство | Встроенный KernelSU | Запись и запуск ksud (демона KernelSU) |
🎭 Галерея мемов
Фестиваль 710
Пользователь: "Могу я разблокировать свой K70e?"
Разработчик: "Не нужно разблокировать, просто рутируй."
Пользователь: "??? "
Разработчик: "w 710"
Пользователь: "Что?"
Разработчик: "Фестиваль разблокировки 710. Не разблокировка BL, а освобождение телефонов."
Первый запуск
Пользователь: "Почему мой телефон перезагрузился?"
preload.so: "Не паникуй, я повышаю привилегии."
Пользователь: "Почему на моём телефоне KernelSU?"
preload.so: "Я его поставил. Пожалуйста."
Интеграция KernelSU
Пользователь: "Как управлять root после этого?"
ksud: "Привет, я демон KernelSU."
Пользователь: "Что ты умеешь?"
ksud: "Давать root приложениям."
Пользователь: "Ты же не встроенный?"
ksud: "Я встроен в preload.so."
Пользователь: "Отлично."
Сообщение о кирпиче
Пользователь: "Я поставил твою штуку, и теперь у меня кирпич!!!"
Разработчик: "Какое устройство?"
Пользователь: "iPhone 14."
Разработчик: "...Ты серьёзно?"
Пользователь: "Ты написал про фестиваль 710, вот я и попробовал."
Разработчик: "710 — кодовое имя Xiaomi 14, а не iPhone 14. Убирайся."
⚙️ Как это работает
- Загрузка preload.so — внедрение через
LD_PRELOADв любое приложение, запуск__attribute__((constructor)) - Утечка базы KASLR — побочный канал
pselectчерез псевдоним данных nfulnl_log_packet читает_stext - Перехват таблицы FOPS — состояние гонки futex PI + перезапись pipe ops
- Получение phys rw — подделка
pipe_buf_opsдля произвольного доступа к физической памяти ядра - Патч cred — поиск процесса root child, изменение uid=0, полные caps, sid=kernel
- Отключение защиты — патч seccomp, сброс TIF_SECCOMP, selinux enforce=0
- Запуск KernelSU — извлечение встроенного ksud в
/data/local/tmp/ksud, запуск демона KernelSU
📦 Использование
Предварительные требования
- Xiaomi K70e (duchamp) или другое поддерживаемое устройство
- Разблокированный загрузчик (или неразблокированный — LD_PRELOAD работает в любом случае)
- Включена отладка ADB
- Храброе сердце
Быстрый старт
# Скачать preload.so из Releases
wget https://github.com/Colorful-glassblock/duchamp-root/releases/download/v1.0/preload.so
# Передать на устройство
adb push preload.so /data/local/tmp/
# Внедрить в любое приложение через LD_PRELOAD
adb shell
LD_PRELOAD=/data/local/tmp/preload.so your_app
Сборка из исходников
# Требуется NDK или Termux с aarch64-linux-android-clang
make PROJECT=duchamp
# Результат в build/duchamp/bin/preload.so
📂 Структура файлов
├── Makefile
├── assets/
│ └── (TBD)
├── build/embed/ksud # Встроенный демон KernelSU
└── src/
├── main.c, preload.c, root.c, slide.c, fops.c, pipe.c
├── ksud_blob.S # Встроенный бинарник ksud
├── su_daemon.c, offset.h, common.h
├── kernelsnitch/ # Обход Kernelsnitch
└── targets/ # Файлы target.h для конкретных устройств
🧩 Зависимости
aarch64-linux-android-clang(NDK r29 или Termux)lldкомпоновщикmake+git- Крепкое сердце (предупреждение о кирпиче)
🛡️ Отказ от ответственности
Этот инструмент предназначен только для образовательных целей.
Разблокировка BL может аннулировать гарантию.
Root может вызвать bootloop, потерю данных или несовместимость приложений.
Если вы получили кирпич — это skill issue.
Если вы обвиняете меня — это ваша проблема.
Если вы смеётесь — вы наш человек.
С фестивалем разблокировки 710! 🚀
💡 Мелочи / ЧаВО
В: Почему «Фестиваль разблокировки 710»?
О: 10 июля. Не день магазина (7/11), не чёрт знает что 9 июля. 10 июля. В этот день мы не разблокируем загрузчики, мы освобождаем телефоны.
В: QwQ?
О: Эмоционально стабилен (большая ложь).
В: Можно ли использовать без разблокировки BL?
О: Да. Внедрение через LD_PRELOAD не требует разблокированного BL. Однако после перезагрузки нужно будет внедрять заново.
В: Сработает ли Kernelsnitch?
О: Обход Kernelsnitch включён. Если вас всё равно поймают — skill issue.
В: 114514?
О: はいはいわかりました草
Сделано с 💀, ☕, 710% усилий и абсолютно без Comic Sans