Sploitus

Exploit for UnPlus

kitploit · 2026-08-27

Exploit Code

MARKDOWN98 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-NO-22-GITHUB-UNPLUS
# unplus

![UnPlus](https://assets.kitploit.com/production/public/readmes/42662/67d5b75bd1f4e89358913de879a9e0fb16244b8a97442d5481a5c2aae0df1987.png)

CVE-2026-43499 (Futex PI UAF) — основной логический код эксплойта произвольной записи в памяти ядра, используемый для обхода SELinux и получения root.

> Этот репозиторий содержит только исходный код основной логики эксплойта (`src/`) и упаковщик в один бинарник (`wrapper/`). `src/target.h` — это **шаблон** , который нужно заполнить параметрами вашего устройства для запуска (см. «Адаптация под устройство» ниже).

## Сборка

### Основная логика (src/)

root@kitploit:~
    
    
    # 环境要求: Android NDK r29+ (API 35, aarch64)
    export ANDROID_NDK_ROOT=/path/to/android-ndk
    
    # 构建纯逻辑产物
    make
    # → build/unplus            (exploit 二进制)
    # → build/unplus_preload.so (preload 库)
    

Результат — два ELF-файла, без встраивания каких-либо внешних бинарников.

### Полная упаковка в один бинарник (wrapper/)

Чтобы упаковать эксплойт и внешнюю нагрузку (magiskpolicy / ksud / kernelsu.ko) в один запускаемый бинарник, вам нужно иметь эти внешние нагрузки и использовать `wrapper/`:

root@kitploit:~
    
    
    # 1. 先构建 src/ 产物(见上)
    # 2. 生成 payload 数据(payload_data.h 不在仓库,由用户自生成,含外部二进制字节流)
    cd wrapper
    python3 embed_payloads.py \
      --unplus ../build/unplus \
      --preload ../build/unplus_preload.so \
      --magiskpolicy <path> \
      --ksud <path> \
      --kernelsu <path> \
      --out payload/
    # 3. 编译单二进制
    make    # → wrapper/build/unplus
    

## Структура исходного кода

root@kitploit:~
    
    
    src/
    ├── target.h          设备参数模板(◆ FILL IN 标记处需填你的设备值)
    ├── offset.h          target.h 的路由胶水(经 -DTARGET_CONFIG_H 注入)
    ├── unplus.h          编排头 + 共享声明(含 P0 alias / data_addr 等派生宏)
    ├── main.c            入口编排
    ├── stage1.c          Write 1/2:SELinux 关闭 + cred 覆写
    ├── root.c            Android root 落地(SELinux golden 修复 + sepolicy + KSU allowlist)
    ├── slide.c           KASLR leak
    ├── fops.c            configfs/fops 路由 + 内核基址推导
    ├── route.c           PI futex 路由线程
    ├── direct_write.c    direct read 原语
    ├── pipe_direct.c     direct pselect write
    ├── pipe_physrw.c     pipe physrw 原语
    ├── util.c            工具函数
    ├── utils.h           通用工具(日志、procfs 路径)
    ├── kernelsnitch.h    架构层(ARM64/x86 identity-map)
    ├── futex_hash.h      内核 jhash 移植(通用)
    └── timeutils.h       架构层计时(ARM/x86/AMD)
    

## Адаптация под устройство

`src/target.h` разделяет константы на два типа:

  * **Помеченные`◆ FILL IN`**: зависят от устройства/ядра; вы должны указать свои значения. В шаблоне используются заглушки `0xDEADBEEF...` — они компилируются, но при запуске всё упадёт.
  * **Без пометок** : инварианты GKI 6.6 (смещения полей структур), обычно менять не нужно.



Смена устройства = заполнение раздела `◆ FILL IN`. Что означает каждое поле и как его получить — см. Приложение: описание полей.

## Приложение: описание полей

Поля, помеченные `◆ FILL IN` в `target.h`, сгруппированы по назначению:

**Общий опыт** : все смещения вида `*_OFF` можно получить на root-устройстве через `kallsyms_lookup_name`, вычтя `KIMAGE_TEXT_BASE` из адреса символа. `TARGET_PCPU_*` и `TARGET_SELINUX_GOLDEN` — это значения, получаемые в рантайме/дампе, их нельзя взять из статического образа.

## Лицензия

WTFPL — Do What The Fuck You Want To Public License.

## Благодарности

  * Команда CyberMeowfia — фреймворк повышения привилегий pipe physrw
  * Справочные материалы сообщества по адаптации под устройства