Voltar para o Blog

NOIR em 2026: Como Auditar a Privacidade do Seu Android com adb e Descobrir Para Onde Seus Dados Vão

Olá HaWkers, um projeto open source chamado NOIR apareceu no GitHub no dia 31 de outubro de 2026 e, em menos de uma semana, passou de 2.600 estrelas e 250 forks. A proposta é direta: plugar o celular Android no computador, rodar um comando e receber um relatório dizendo quais apps têm acesso a dados sensíveis, para quais domínios eles podem enviar informação e o que dá para desligar com segurança. Tudo via adb, sem root e sem mandar nada para a internet.

Você sabe quantos apps no seu celular conseguem ler sua localização, seus contatos e ainda carregam endereço de SDK de anúncio dentro do código? Neste artigo você vai entender o que o NOIR faz de verdade, como rodar a primeira auditoria, como ler o relatório sem entrar em pânico e quais comandos do adb estão por trás de tudo isso, para você conseguir repetir a análise mesmo sem a ferramenta.

O Que É o NOIR e Por Que Ele Explodiu no GitHub

O NOIR é uma ferramenta de linha de comando escrita em Kotlin, publicada sob licença MIT pelo desenvolvedor que assina como Verlintas. Ela roda no computador (macOS, Windows ou Linux) e conversa com o celular pelo Android Debug Bridge, o mesmo adb que todo desenvolvedor Android já usa para instalar build de teste.

O ritmo do projeto chama atenção. O repositório foi criado em 31 de outubro e, só no dia 6 de novembro, saíram três versões seguidas: 0.2.7, 0.3.0 e 0.4.0. É o tipo de projeto que muda toda semana, então vale conferir a página de releases antes de seguir qualquer tutorial ao pé da letra, inclusive este.

O motivo do sucesso é que o NOIR resolve uma pergunta que quase ninguém consegue responder sozinho: "o que este celular consegue vazar?". As configurações do Android mostram permissões app por app, mas não mostram:

  • quais apps juntam permissão sensível e acesso à internet;
  • quais domínios de rastreamento estão embutidos no APK;
  • quais apps compartilham o mesmo conjunto de permissões por usarem o mesmo UID de sistema;
  • quais componentes estão exportados sem proteção no manifesto.

O NOIR cruza essas camadas e devolve uma pontuação de risco por app, com sugestões separadas em "pode executar com segurança", "precisa de revisão manual" e "não mexa".

O Que a Ferramenta Faz, Etapa por Etapa

Pelo README oficial, o fluxo de uma varredura tem seis partes:

  1. Inventário: lista todos os apps que têm permissão de rede junto com alguma permissão sensível.
  2. Extração de endpoints: roda unzip e strings dentro do próprio celular sobre o código dex de cada APK e devolve só as URLs encontradas. Isso evita puxar centenas de APKs para o computador.
  3. Classificação e pontuação: identifica fabricante e categoria (telemetria, anúncio, localização, teclado) pelo nome do pacote e pelo domínio, e calcula o risco.
  4. Associação de dados: traduz permissão em dado concreto (localização, contatos, SMS, chamadas, microfone, câmera, tela, lista de apps, identificadores do aparelho) e cruza com os domínios de envio.
  5. UID compartilhado: trata apps que rodam como android.uid.system, que costumam ser mais de 50 em alguns aparelhos e herdam a soma das permissões do grupo.
  6. Camada de manifesto: lê o AndroidManifest.xml binário e aponta componentes exportados sem permissão, tráfego em texto puro, backup liberado, flag debuggable e o targetSdk.

Quando você quer ir mais fundo, o comando deep puxa um APK específico e usa o jadx para descompilar e procurar chamadas como Runtime.exec, DexClassLoader, MediaProjection e setApplicationEnabledSetting, que indicam execução de comando, carregamento dinâmico de código, captura de tela e desativação de outros apps.

O que ele não faz

Essa parte importa tanto quanto a anterior. Segundo a documentação:

  • não acessa a internet, não tem telemetria nem checagem de versão;
  • não exige root e não altera a partição de sistema;
  • não desinstala nada automaticamente, a menos que você passe --aggressive;
  • não suporta iOS, porque a análise depende do dumpsys e do formato APK.

Preparando o Celular e o Computador

Antes de rodar qualquer coisa, você precisa do modo desenvolvedor e da depuração USB ativos. O caminho muda por fabricante, mas a regra geral é tocar sete vezes no número da versão (em "Sobre o telefone") e depois ligar "Depuração USB" em "Opções do desenvolvedor".

No computador, instale o adb e, se quiser usar a análise profunda, o jadx:

# macOS (Homebrew)
brew install --cask android-platform-tools
brew install jadx

# Debian / Ubuntu
sudo apt install adb

# Windows (Scoop)
scoop install adb jadx

# Confirme que o celular aparece como "device" (e não "unauthorized")
adb devices

Se o aparelho aparecer como unauthorized, desbloqueie a tela e aceite o pop-up "Permitir depuração USB?". Se nada aparecer, troque o cabo: muito cabo vendido por aí só carrega e não transmite dados.

O NOIR distribui pacotes portáteis com runtime Java embutido, então você não precisa instalar JDK para usar a versão pronta. Para compilar a partir do código-fonte, aí sim é preciso JDK 17 ou superior.

Rodando a Primeira Auditoria

Rodando noir sem argumentos, a ferramenta abre um assistente: verifica o adb, espera o celular ser conectado (até 180 segundos), pergunta se pode começar e, no fim, pergunta se você quer aplicar as ações consideradas seguras. Se preferir controle total, use os subcomandos:

# Verifica ambiente: sistema, Java, adb, celular conectado e jadx
noir doctor

# Varredura completa, gera JSON, Markdown, HTML e listas de domínios
noir scan --out noir-out

# Varredura + painel no terminal
noir ui

# Gera o plano de ação, mas NÃO executa nada (dry-run)
noir auto

# Só os apps com pontuação alta, limitados aos 20 piores
noir scan --min 60 --limit 20

O diretório de saída traz arquivos com papéis bem definidos:

  • report.json, report.md e report.html: o relatório completo em três formatos;
  • domains-trackers.txt: domínios de estatística, anúncio e relatório de falha, que podem ser bloqueados em lote;
  • domains-functional.txt: push, login, atualização, pagamento, loja e sincronização, que não devem ser bloqueados;
  • domains-other.txt: domínios de função incerta, para revisar um por um;
  • plan.txt, applied.txt e rollback.txt: o que seria feito, o que foi feito e como desfazer.

Essa separação de domínios é um detalhe que mostra maturidade. O próprio autor conta que não automatizou bloqueio por DNS porque, durante o desenvolvimento, mexer em DNS de forma multiplataforma derrubou a rede do aparelho. Então a ferramenta só exporta as listas e deixa a decisão com você.

Como Ler o Relatório Sem Cair em Pânico

O ponto mais importante do NOIR está no aviso final do README: o relatório é evidência estática. Ele diz "este app tem esta capacidade e este endereço está no código". Ele não prova que uma transmissão aconteceu.

Na prática, isso significa três coisas:

  1. Domínio no APK não é envio confirmado. Muitos SDKs vêm embutidos e nunca são ativados. Um endereço de anúncio dentro de um app pago pode ser código morto.
  2. Permissão concedida não é uso. O app pode pedir localização para uma função que você nunca abriu.
  3. Pontuação alta pede investigação, não desinstalação. Use o relatório para decidir onde olhar com mais cuidado.

Para confirmar envio real, você precisa de evidência de rede: um proxy de inspeção, um DNS com log ou um firewall local. A combinação "app com permissão de localização + domínio de rastreamento no código + tráfego observado para esse domínio" é o que transforma suspeita em fato.

Se você quiser entender a diferença entre esse tipo de análise e uma verificação de spyware de verdade, vale ler o nosso guia sobre o Zero Breach Toolkit e como verificar spyware tipo Pegasus no celular. Uma ferramenta procura indicadores de ataque conhecido; a outra mede a superfície de exposição dos apps legítimos.

Os Comandos adb Por Trás da Mágica

O NOIR não usa nada secreto. Tudo o que ele faz parte de comandos que você pode rodar na mão, e conhecer esses comandos ajuda a conferir o que a ferramenta diz. Um roteiro mínimo de auditoria manual:

# Lista só os apps instalados pelo usuário (-3 = terceiros)
adb shell pm list packages -3

# Mostra as permissões pedidas e concedidas de um app
adb shell dumpsys package com.exemplo.app | grep -E "permission|granted=true"

# Mostra o estado de app-ops do app (ex.: rodar em segundo plano)
adb shell cmd appops get com.exemplo.app

# Descobre onde está o APK no aparelho
adb shell pm path com.exemplo.app

E um script simples em Bash que reproduz a ideia de "permissão sensível + internet", app por app:

#!/usr/bin/env bash
# Lista apps de terceiros que têm INTERNET e alguma permissão sensível concedida
SENSIVEIS="ACCESS_FINE_LOCATION|READ_CONTACTS|READ_SMS|RECORD_AUDIO|CAMERA|READ_CALL_LOG"

for pkg in $(adb shell pm list packages -3 | sed 's/package://' | tr -d '\r'); do
  info=$(adb shell dumpsys package "$pkg")

  # Pula apps que não declaram acesso à internet
  echo "$info" | grep -q "android.permission.INTERNET" || continue

  # Filtra só as permissões sensíveis que foram de fato concedidas
  achadas=$(echo "$info" | grep -E "($SENSIVEIS): granted=true" \
    | sed -E 's/.*permission\.([A-Z_]+).*/\1/' | sort -u | tr '\n' ' ')

  [ -n "$achadas" ] && echo "$pkg -> $achadas"
done

O resultado é uma lista curta e muito reveladora. Na maioria dos aparelhos aparecem lanternas, calculadoras e apps de papel de parede com acesso a contatos ou localização, algo que nenhuma tela de configuração mostra de forma consolidada.

Extraindo URLs de um APK no computador

Se você quiser ver com os próprios olhos o que o NOIR faz na etapa de endpoints, dá para puxar o APK e procurar URLs no código compilado:

# Copia o APK do celular para o computador
APK=$(adb shell pm path com.exemplo.app | head -1 | sed 's/package://' | tr -d '\r')
adb pull "$APK" app.apk

# Extrai os arquivos dex e procura URLs dentro deles
unzip -o -q app.apk 'classes*.dex' -d app-dex
strings app-dex/classes*.dex | grep -Eo 'https?://[a-zA-Z0-9./_-]+' | sort -u > urls.txt

# Conta quantos domínios distintos apareceram
cut -d/ -f3 urls.txt | sort -u | wc -l

Não estranhe se aparecerem dezenas de domínios. Bibliotecas de terceiros trazem seus próprios endereços, e é exatamente por isso que a classificação automática do NOIR economiza tanto tempo.

Aplicando as Correções com Rollback

Quando você roda noir auto --apply, a ferramenta executa apenas ações de app-ops, que são as restrições finas do Android, como impedir um app de rodar em segundo plano. Antes de mudar qualquer coisa, ela consulta o modo atual e grava o comando de volta em rollback.txt. Toda saída e código de retorno vão para applied.txt.

O equivalente manual dessas ações é este:

# Impede o app de rodar em segundo plano
adb shell cmd appops set com.exemplo.app RUN_IN_BACKGROUND ignore

# Desfaz: volta a permitir
adb shell cmd appops set com.exemplo.app RUN_IN_BACKGROUND allow

# Revoga uma permissão de tempo de execução (ex.: localização precisa)
adb shell pm revoke com.exemplo.app android.permission.ACCESS_FINE_LOCATION

# Remove o app só para o usuário atual, mantendo os dados (-k)
adb shell pm uninstall -k --user 0 com.exemplo.app

# Desfaz a remoção acima: reinstala a partir da partição de sistema
adb shell cmd package install-existing com.exemplo.app

Atenção a dois cuidados. Primeiro, desinstalar com --user 0 não apaga o APK de sistema: uma atualização do fabricante ou uma restauração de fábrica pode trazer o app de volta. Segundo, remover app de sistema às cegas pode quebrar o aparelho. Há relatos em fóruns de quem removeu um componente ligado ao launcher e ficou com a tela inicial presa em carregamento. Teste sempre em um app não crítico e guarde os comandos de volta.

Se você já mexeu com debloat via adb em TV, o raciocínio é o mesmo do nosso post sobre o TV Vibehack para deixar a Android TV sem anúncios: primeiro listar, depois desativar com rollback, e só no fim pensar em remover.

Riscos e Limitações Que Você Precisa Conhecer

Nenhuma ferramenta de auditoria é neutra, e o NOIR tem pontos de atenção claros:

  • Depuração USB é uma porta aberta. Com ela ativa, qualquer computador autorizado tem acesso amplo ao aparelho. Desligue a depuração quando terminar e revogue as autorizações antigas em "Opções do desenvolvedor".
  • Projeto com uma semana de vida. Três versões no mesmo dia mostram energia, mas também mostram que a ferramenta ainda está mudando rápido. Baixe sempre da página oficial de releases e confira o arquivo SHA256SUMS.txt.
  • Foco em aparelhos chineses. As regras de classificação nasceram mirando fabricantes como a Xiaomi e serviços como Tencent e Amap. Funciona em qualquer Android, mas a classificação pode ser menos precisa para apps populares no Brasil.
  • O relatório tem dados seus. Ele lista pacotes e endpoints do seu aparelho. Revise antes de compartilhar em issue ou rede social.

E vale repetir: o projeto se posiciona como ferramenta de auditoria e autodefesa, para usar no seu próprio aparelho ou em aparelhos com autorização explícita. Rodar isso no celular de outra pessoa sem consentimento é invasão de privacidade, não segurança.

Perspectivas: Privacidade Auditável Vira Hábito

O NOIR chega numa fase em que a pergunta "o que meus apps fazem com meus dados?" deixou de ser assunto de pesquisador. Projetos como ele, junto de leis de proteção de dados como a LGPD e as etiquetas de segurança de dados da Play Store, empurram o mercado para um ponto em que o usuário consegue conferir, e não só confiar.

O próximo passo natural está no próprio roteiro do projeto: interface gráfica com Compose Multiplatform, regras de classificação em YAML que a comunidade possa compartilhar e exportação de bloqueio via DNS ou VPN no próprio aparelho. Se isso sair, a auditoria de privacidade no Android vai ficar tão rotineira quanto rodar um antivírus foi um dia. Enquanto isso, o melhor uso do NOIR é como uma lanterna: ele mostra onde olhar, e a decisão do que desligar continua sendo sua.

Bora pra cima! 🦅

📚 Quer Acompanhar o Que Vem Por Aí?

Este artigo cobriu o NOIR e como auditar a privacidade do Android com adb, mas o ecossistema muda toda semana e nem tudo vira artigo aqui.

No X eu compartilho o que estou testando, os bastidores dos projetos e as novidades que aparecem antes de virarem post.

Me Segue Lá

👉 Seguir @jeffbruchado no X

💡 Conteúdo diário sobre desenvolvimento, carreira e as ferramentas que eu realmente uso

Comentários (0)

Esse artigo ainda não possui comentários 😢. Seja o primeiro! 🚀🦅

Adicionar comentário