Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
UnPlus — CVE-2026-43499 exploit di root per avvio — logica principale (arm64 Android GKI 6.6) | Kitploit
Strumenti/GitHubGitHub/no-22-github/unplus
Sicurezza AndroidEscalation di PrivilegiExploitPenetration TestingBinary Exploitation
GitHubno-22-github/unplus

UnPlus

CVE-2026-43499 exploit di root per avvio — logica principale (arm64 Android GKI 6.6)

Vedi Repository
2326 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

unplus

UnPlus

Codice sorgente della logica principale di un exploit di scrittura arbitraria nel kernel per CVE-2026-43499 (Futex PI UAF), utilizzato per ottenere root aggirando SELinux.

Questo repository contiene solo il codice sorgente della logica principale dell'exploit (src/) e il packager per il singolo binario (wrapper/). src/target.h è un template: devi inserire i parametri del tuo dispositivo per poterlo eseguire (vedi "Adattamento del dispositivo" più sotto).

Build

Logica principale (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 库)

Gli artefatti prodotti sono due ELF e non includono alcun binario esterno.

Packaging completo in un singolo binario (wrapper/)

Per impacchettare l'exploit e i payload esterni (magiskpolicy / ksud / kernelsu.ko) in un singolo binario eseguibile con un comando, procurati questi payload esterni e poi impacchettali con 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

Struttura dei sorgenti

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)

Adattamento del dispositivo

src/target.h contiene due tipi di costanti:

  • Contrassegnate con ◆ FILL IN: relative al dispositivo/kernel, devi inserire i tuoi valori. Il template usa 0xDEADBEEF... come segnaposto: compila, ma al momento dell'esecuzione andrà in crash.
  • Senza marcatore: invarianti di GKI 6.6 (offset dei campi delle struct), di norma non vanno modificate.

Cambiare dispositivo = compilare correttamente la parte ◆ FILL IN. Per il dettaglio su cosa sia ogni campo e come ottenerlo, vedi Appendice: descrizione dei campi più sotto.

Appendice: descrizione dei campi

I campi ◆ FILL IN in target.h sono raggruppati per scopo:

Esperienza generale: tutti gli offset del tipo *_OFF si ottengono prendendo l'indirizzo del simbolo con kallsyms_lookup_name su un dispositivo con root e sottraendo KIMAGE_TEXT_BASE. TARGET_PCPU_* e TARGET_SELINUX_GOLDEN sono valori runtime/da dump e non possono essere ricavati dall'immagine statica.

Licenza

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

Ringraziamenti

  • Team CyberMeowfia — framework di elevazione dei privilegi pipe physrw
  • Riferimenti della community per l'adattamento dei dispositivi
Scarica lo strumento
GruppoCampi (esempio)Significato / Come ottenerli
Build identityBUILD_VARIANT_LABEL, BUILD_FINGERPRINTStringa identificativa arbitraria usata per i log. Inserisci il build fingerprint del tuo dispositivo
Memory layoutKIMAGE_TEXT_BASE, P0_PHYS_OFFSET, VMEMMAP_START, ecc.Layout degli indirizzi virtuali/fisici del kernel. Su arm64 VA39 di norma ci sono già valori predefiniti; verifica tramite IKCONFIG / kallsyms / /proc/iomem
ASHMEMASHMEM_IOCTL_OFF ... ASHMEM_MISC_FOPS_OFFOffset dei membri fops del driver ashmem e dei simboli misc, es. kallsyms_lookup_name("ashmem_fops")
CONFIGFS / PIPE / VFSCONFIGFS_READ_ITER_OFF, ANON_PIPE_BUF_OPS_OFF, KMALLOC_CACHES_OFF, ecc.Offset di read/write di configfs, splice, pipe_buf_ops, kmalloc_caches. Reperibili tramite kallsyms
SELinuxSELINUX_ENFORCING_OFF, SELINUX_BLOB_SIZES_OFF, SECURITY_HOOK_HEADS_OFFOffset di selinux_state / selinux_blob_sizes / security_hook_heads. SELINUX_ENFORCING_OFF è l'ancora di corrispondenza della build del kernel: deve essere preciso
Core kernel symbolsINIT_TASK_OFF, INIT_CRED_OFF, ENTRY_TASK_PERCPU_OFF, ecc.Offset di init_task / init_cred / entry_task / __per_cpu_offset / root_task_group. Reperibili tramite kallsyms; ENTRY_TASK_PERCPU_OFF è l'offset di __entry_task all'interno della sezione percpu
Per-CPU runtimeTARGET_PCPU_BASE_ADDR, TARGET_PCPU_UNIT_SIZEIndirizzo runtime del chunk per-CPU (dopo KASLR): cambia a ogni avvio. Serve un dump a runtime; UNIT_SIZE dipende dal numero di CPU
SLIDE (KASLR leak)SLIDE_NFULNL_LOGGER_OFF, SLIDE_RANDOM_BOOT_ID_DATA_OFF, ecc.Offset dei simboli dati del kernel usati per il leak di KASLR (nfulnl_logger / boot_id data, ecc.). Reperibili tramite kallsyms
SELinux goldenTARGET_SELINUX_GOLDENTemplate boolean dei primi 16 byte di selinux_state, stabile tra i riavvii ma diverso per ogni dispositivo. Va ricavato da un dump di selinux_state del tuo dispositivo. byte0 è il bit enforcing: scrivere 0x00 indica permissive
pipe inode infoPIPE_INODE_INFO_*, PIPE_HEAD_OFF, ecc.Layout della struct pipe_inode_info; di solito stabile all'interno della stessa famiglia GKI. Se cambi build del kernel va ricontrollato