Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
UnPlus — CVE-2026-43499 exploit de root por inicialização — lógica principal (arm64 Android GKI 6.6) | Kitploit
Ferramentas/GitHubGitHub/no-22-github/unplus
Segurança AndroidEscalada de PrivilégiosExploraçãoTestes de PenetraçãoExploração de Binários
GitHubno-22-github/unplus

UnPlus

CVE-2026-43499 exploit de root por inicialização — lógica principal (arm64 Android GKI 6.6)

Ver Repositório
2314há 2 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

unplus

UnPlus

Código-fonte da lógica central do exploit de escrita em endereço arbitrário no kernel CVE-2026-43499 (Futex PI UAF), usado para contornar o SELinux e obter root.

Este repositório contém apenas o código-fonte da lógica central do exploit (src/) e o empacotador de binário único (wrapper/). src/target.h é um modelo; você precisa preencher os parâmetros do seu próprio dispositivo para que ele funcione (veja "Adaptação de dispositivo" abaixo).

Compilação

Lógica central (src/)

# 环境要求: Android NDK r29+ (API 35, aarch64)
export ANDROID_NDK_ROOT=/path/to/android-ndk

# 构建纯逻辑产物
make
# → build/unplus            (exploit 二进制)
# → build/unplus_preload.so (preload 库)

Os artefatos são dois ELFs, sem incorporar qualquer binário externo.

Empacotamento completo em binário único (wrapper/)

Para empacotar o exploit e os payloads externos (magiskpolicy / ksud / kernelsu.ko) em um único binário de execução com um clique, você precisa fornecer esses payloads externos e então empacotar com wrapper/:

# 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

Estrutura do código-fonte

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)

Adaptação de dispositivo

src/target.h tem dois tipos de constantes:

  • Marcadas com ◆ FILL IN: relacionadas ao dispositivo/kernel; você deve preencher seus próprios valores. O modelo usa 0xDEADBEEF... como espaço reservado; compila, mas falha em execução.
  • Sem marcação: invariantes do GKI 6.6 (offsets de campos de struct), normalmente não precisam ser alterados.

Trocar de dispositivo = preencher a parte ◆ FILL IN. O que cada campo significa e como obtê-lo, veja abaixo Apêndice: Descrição dos campos.

Apêndice: Descrição dos campos

Os campos ◆ FILL IN em target.h são agrupados por finalidade:

GrupoCampo (exemplo)Significado / Como obter
Build identityBUILD_VARIANT_LABEL, BUILD_FINGERPRINTString de identificação arbitrária, usada para logs. Preencha com o build fingerprint do seu dispositivo.
Memory layoutKIMAGE_TEXT_BASE, P0_PHYS_OFFSET, VMEMMAP_START, etc.Layout de endereços virtuais/físicos do kernel. Para arm64 VA39 normalmente já existem valores padrão; confirme via IKCONFIG / kallsyms / /proc/iomem.
ASHMEMASHMEM_IOCTL_OFF ... ASHMEM_MISC_FOPS_OFFOffsets dos membros de fops do driver ashmem + símbolo misc. kallsyms_lookup_name("ashmem_fops"), etc.
CONFIGFS / PIPE / VFSCONFIGFS_READ_ITER_OFF, ANON_PIPE_BUF_OPS_OFF, KMALLOC_CACHES_OFF, etc.Offsets de leitura/escrita do configfs, splice, pipe_buf_ops, kmalloc_caches. Consulte via kallsyms.
SELinuxSELINUX_ENFORCING_OFF, SELINUX_BLOB_SIZES_OFF, SECURITY_HOOK_HEADS_OFFOffsets de selinux_state / selinux_blob_sizes / security_hook_heads. SELINUX_ENFORCING_OFF é o ponto de ancoragem de correspondência do build do kernel; deve ser exato.
Core kernel symbolsINIT_TASK_OFF, INIT_CRED_OFF, ENTRY_TASK_PERCPU_OFF, etc.Offsets de init_task / init_cred / entry_task / __per_cpu_offset / root_task_group. Consulte via kallsyms; ENTRY_TASK_PERCPU_OFF é o offset de __entry_task dentro da seção percpu.
Per-CPU runtimeTARGET_PCPU_BASE_ADDR, TARGET_PCPU_UNIT_SIZEEndereço em tempo de execução do chunk per-CPU (após KASLR), muda a cada inicialização. É necessário dump em runtime; UNIT_SIZE depende do número de CPUs.
SLIDE (KASLR leak)SLIDE_NFULNL_LOGGER_OFF, SLIDE_RANDOM_BOOT_ID_DATA_OFF, etc.Offsets de símbolos de dados do kernel usados para vazar KASLR (nfulnl_logger / boot_id data, etc.). Consulte via kallsyms.
SELinux goldenTARGET_SELINUX_GOLDENTemplate booleano dos primeiros 16 bytes de selinux_state, estável entre reinicializações, mas diferente por dispositivo. Deve ser obtido de um dump de selinux_state do seu dispositivo. byte0 é o bit enforcing; o chamador escreve 0x00 para indicar permissive.
pipe inode infoPIPE_INODE_INFO_*, PIPE_HEAD_OFF, etc.Layout da struct pipe_inode_info; normalmente estável dentro da mesma família GKI, mas deve ser verificado ao trocar de build do kernel.

Experiência geral: todos os offsets do tipo *_OFF podem ser obtidos usando kallsyms_lookup_name em um dispositivo com root e subtraindo KIMAGE_TEXT_BASE do endereço do símbolo. TARGET_PCPU_* e TARGET_SELINUX_GOLDEN são valores de runtime/dump e não podem ser obtidos de uma imagem estática.

Licença

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

Agradecimentos

  • Equipe CyberMeowfia — framework de escalonamento de privilégios pipe physrw
  • Referência de adaptação de dispositivos da comunidade
Baixar ferramenta