Skip to content

Repository files navigation

Honda Civic G10 Skip Disclaimer

Honda Civic G10 — Skip Disclaimer

Elimine automaticamente a tela de "Aviso" que aparece sempre que você liga seu Honda Civic

License: MIT Status Platform Safra APK CI

🇧🇷 Português · 🇺🇸 English


🎬 Antes e depois

Antes: aviso aparece. Depois: aviso some sozinho em ~3s

Toda vez que você liga o carro, a central mostra o Aviso. Antes era clicar manualmente. Agora o aviso aparece e some sozinho em ~3 segundos — você nem precisa tocar na tela.


🎯 O problema

Tela de Aviso na central multimídia do Honda Civic G10

Cada vez que você liga o carro, a central mostra:

"Aviso — O motorista é o responsável pela condução segura deste veículo..."

E você tem que clicar OK. Toda. Vez. Até o CarPlay subir. Toda ligada do carro, 365 dias por ano, por anos.

A Honda nunca liberou uma configuração pra desabilitar isso.

✨ A solução

Instalamos um APK + su setuid no /system/ da central via a vulnerabilidade EvilValet (descoberta por juniperspring.org) — um pacote OTA "falso" assinado com testkey AOSP pública.

Depois de instalado, o APK:

  1. Monitora o logcat procurando a Activity do Aviso aparecer
  2. Espera ~2 segundos (deixa a UI renderizar completa)
  3. Dispara um tap simulado via su -c "input tap 400 350" nas coordenadas do botão OK
  4. Aviso some. Você nem percebeu.

Zero toque humano. Funciona em todas as ligadas do carro, pra sempre.


🏗️ Como funciona (visão de 60 segundos)

Pipeline: PC → pacote OTA → pendrive → cold boot → recovery → /system

No PC (uma vez, ~15 min):

  1. Compila o APK (gradlew assembleRelease)
  2. Assina com debug keystore (apksigner)
  3. Monta pacote OTA assinado com testkey AOSP (python3 build.py)
  4. Grava num pendrive FAT32 (prepare-pendrive-install.sh)

No carro (uma vez, ~10 min):

  1. Pendrive na porta USB-A frontal
  2. Segura AUDIO por 5s → confirma "Quer reiniciar?"
  3. Central reinicia, recovery aplica o pacote
  4. APK + su em /system/ — permanente

Em operação (automático, pra sempre):

  • A cada boot do carro, o APK vê o aviso aparecer e dispensa em ~3s
  • Zero manutenção. Zero interação.

🚗 Compatibilidade

✅ Confirmado funcionando

Carro DA Version Mercado Rom type Status
Honda Civic 2017 EXL 1.F187.16 🇧🇷 Brasil 0040 ✅ Deployado 2026-10-16

🤷 Potencialmente compatível (não testado)

Mesmo framework Mitsubishi Andromeda — provável que funcione com adaptação de 2 valores:

  • Civic G10 2016-2021 (US, EU, AU, outras BR)
  • Civic Avancier, Civic URV
  • CR-V 2016-2021 (algumas safras)
  • Accord 2016+ com Display Audio

Se você tem outra safra, ajude a comunidade — bastam 2 informações pra confirmar: o custom_rom.type e a resolução da tela.

👉 Como adaptar pra outra safra: docs/pt-BR/03-descobrindo-sua-safra.md


🚀 Quick Start

Dono de Civic 2017 EXL BR? Deploy em ~20 minutos:

👉 QUICKSTART.md — passo a passo completo

Resumo:

git clone https://github.com/khalleb/honda-civic-headunit.git
cd honda-civic-headunit
./MIGRATION/setup.sh                     # clona dependências
cd our-apk && ./gradlew assembleRelease  # compila APK
# ... assina + copia pro overlay ...
python3 tooling/ota-build/build.py       # pacote OTA
sudo ./tooling/scripts/prepare-pendrive-install.sh /dev/sda
# No carro: AUDIO 5s + confirmar reiniciar

Outra safra? Primeiro adapte seguindo docs/pt-BR/03-descobrindo-sua-safra.md.


⚠️ Avisos importantes

  • 🧱 Pode causar brick permanente da central se feito errado. Troca custa R$ 1.000-2.000.
  • 📷 A tela também é a câmera de ré — brick = sem ré até trocar.
  • 🔄 OTAs oficiais da Honda podem reverter a modificação. Precisa redeployar.
  • ✅ CarPlay, Bluetooth, áudio, navegação continuam funcionando — nossa modificação é cirúrgica.
  • 🔒 Zero backdoor pra Honda detectar. APK fica como qualquer app do /system/.

Leia o DISCLAIMER.md completo antes de executar qualquer coisa.


🔬 O que descobrimos no caminho

Além do APK que resolve o aviso, mapeamos muito da plataforma Mitsubishi Andromeda. Útil pra quem quer adaptar pra outra safra, construir outros apps no mesmo HU, ou entender o fluxo real de power da central (LP0, câmera de ré, HMI service start).

Resumo com links pros docs densos: DISCOVERIES.md.

Alguns highlights:

  • 16 broadcasts do PowerManager mapeados, com causas conhecidas (ColdBoot, ExitLP0, AccOnRestart). 33 APKs do shipping escutam ACTION_HMI_SERVICE_START — é o contrato oficial de recovery pós-LP0, não workaround.
  • 364 interfaces AIDL em 63 domínios. appservice.vehicleinfomanager sozinho tem 37 listeners cobrindo marcha, velocidade, VIN, FOB key atual, ângulo do volante.
  • 445 broadcasts vendor em 48 prefixos (navi, HFT, câmera, launcher, PowerManager, diag).
  • 27 ContentProvider authorities (9 vendor, incluindo o fluxo real da whitelist Mitsubishi — que, surpresa, é UX-only e não afeta LP0).
  • Hall of fame de 14 bugs resolvidos com causa raiz documentada — útil pra outros projetos de RE Mitsubishi.

🧰 Ferramentas reusáveis

Infraestrutura que vive junto do projeto e serve pra outros HUs com mesmo stack:

  • tooling/deodex/deodex-apk.sh — automatiza odex → APK pra qualquer APK Mitsubishi (toda a vendor-app é pre-dexed). Validado em 160 APKs do dump.
  • Pacote OTA EvilValet com busybox ARM embarcado — nossa safra precisa porque o recovery BR não tem /sbin/sh. Serve pra outras safras do mesmo recovery.
  • Pacote OTA de deep-scan — dumpa /system, /data/system/packages.xml, árvore de partições + /proc/* numa passada só. Alimenta o atlas da central.
  • Fluxo REA + MCP já configurado em tooling/deodex/ — análise estática de qualquer APK Android pelo agente.

🗺️ Para onde isso vai

Nenhum destes está em execução hoje — todos aguardam decisão de abrir fase nova. Lista curta, detalhes em ROADMAP.md.

  • Fase 9 — câmera de ré via API oficial. Trocar o logcat polling atual por bind no ICameraAPServiceReverseSignalListener, com ACTION_RESUME_CAMERA como fallback.
  • Validar DISCLAIMER_COMPLETE como sinal canônico de aviso dispensado — 1 teste no carro, zero código.
  • Dumpar com.honda.displayaudio.whitelist.apk real pra confirmar formato do XML (hoje é inferido do parser).
  • Testar persist.sys.keyoff_reboot=1 — teoricamente força cold boot a cada keyoff e elimina a complexidade LP0.

📚 Documentação

🇧🇷 Em português

Doc Descrição
QUICKSTART.md Deploy em 20 min
docs/pt-BR/00-visao-geral.md O que foi feito e por quê
docs/pt-BR/01-arquitetura-ataque.md Como EvilValet funciona
docs/pt-BR/02-pre-requisitos.md Hardware, software, keystore
docs/pt-BR/03-descobrindo-sua-safra.md Adaptar pra outras safras
docs/pt-BR/04-build-do-pacote.md Compilar o pacote OTA
docs/pt-BR/05-deploy-no-carro.md Protocolo no carro
docs/pt-BR/06-troubleshooting.md Debug quando algo não funciona
docs/pt-BR/07-rollback.md Reverter tudo
docs/pt-BR/08-backups-e-rollback.md Catálogo de backups

🇺🇸 In English

Doc Description
README.en.md README
docs/en/00-overview.md What the project does and why
docs/en/01-attack-architecture.md How the EvilValet attack works
docs/en/02-prerequisites.md Hardware, software, keystore
docs/en/03-finding-your-firmware.md Adapt for other firmware
docs/en/04-building-the-package.md Build the OTA package step by step
docs/en/05-deploying-in-car.md Deploy protocol in the car
docs/en/06-troubleshooting.md Decision tree when something fails
docs/en/07-rollback.md Revert everything
docs/en/08-backups.md Full backup catalog

🔬 Deep technical dive


🙏 Créditos

Este projeto não existiria sem o trabalho de:

  • librick / Eric McDonald — descoberta e documentação técnica da vulnerabilidade EvilValet, ota-builder, apk-rebuilder (ic1101)
  • @codeage — ferramenta de root com su ARM estático, SuperSU, análise da whitelist Mitsubishi
  • @jersacct — projeto-mãe para rooting de Honda via DirtyCOW

Nossa contribuição é a adaptação para a safra brasileira 1.F187.16 (rom type 0040, combo AUDIO 5s para cold boot, descoberta de que o recovery BR não tem /sbin/sh e precisa de busybox embarcado, APK persistente que re-arma após cada tap, pipeline de deep-scan pra sincronizar o atlas da central).

Detalhes técnicos: docs/fase7-deploy-2026-10-16/02-descobertas-tecnicas.md § 0.


🤝 Contribuindo

Encorajamos:

  1. Tem outra safra Honda G10? Abra uma issue com o template nova-safra.md. Informe VIN prefix, DA version, custom_rom.type, resolução. Juntamos matriz de compatibilidade.
  2. Encontrou bug ou melhoria? Issues + PRs bem-vindos.
  3. Quer traduzir pra outro idioma? Fork + PR com nova pasta docs/<lang>/. Prioridade: completar tradução EN dos docs 01, 02, 04, 05, 06.
  4. Testou em outro carro e funcionou? Reporta via issue — vira linha na tabela de compatibilidade.

Veja CONTRIBUTING.md pra detalhes.


📄 Licença

Código: MIT. Documentação: CC BY 4.0.

Software proprietário Honda/Mitsubishi referenciado é propriedade de seus respectivos donos. Este repo NÃO distribui firmware proprietário — você precisa dumpar do seu próprio HU (ver docs/pt-BR/03-descobrindo-sua-safra.md).


Feito pela comunidade Civic G10, pra comunidade Civic G10.

🇧🇷 Português · 🇺🇸 English

Releases

Packages

Contributors

Languages