Skip to content

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

5 Commits

Folders and files

Repository files navigation

Fusion Base

Pipeline de injeção automática de camada de telemetria em AAB/APK.

Organizado em Clean Architecture para facilitar evolução (novos injetores, ofuscação, bloqueio, suporte a mais frameworks etc.).

Arquitetura

src/fusionbase/
├── domain/            # Entidades, Value Objects e Ports (interfaces)
│   ├── __init__.py    # InjectionMapping, BuildRequest, BuildResult...
│   └── ports.py
├── application/       # Casos de uso
│   └── use_cases.py   # ProtectAppUseCase
├── infrastructure/    # Implementações concretas
│   ├── apktool_unpacker.py
│   ├── manifest_mapper.py
 # Mapeamento automático
│   ├── smali_injector.py
│   ├── apktool_repackager.py
│   └── apksigner.py
└── interfaces/        # Entrada (CLI)
    └── cli.py         # Composition Root + argparse

Regras de dependência

  • domain não depende de nada externo
  • application depende apenas de domain
  • infrastructure implementa os ports do domain
  • interfaces compõe tudo (Composition Root)

Instalação

cd fusion-base
pip install -e .

Uso

fusion-base run \
  --input app-release.aab \
  --output app-protected.aab \
  --elastic-url https://elastic.example.com/telemetry \
  --keystore release.jks \
  --ks-pass env:KEYSTORE_PASSWORD \
  --key-alias upload

Pré-requisitos

  • Python 3.9+
  • apktool
  • bundletool (para AAB)
  • apksigner (Android SDK build-tools)

Evolução futura

Pontos naturais de extensão:

Necessidade Onde estender
Novo tipo de injeção Novo InjectorPort + implementação
Ofuscação Novo passo no ProtectAppUseCase
Envio real ao Elastic Substituir stub em SmaliInjector
Suporte a mais frameworks Regras em ManifestInjectionMapper
API HTTP Novo adapter em interfaces/
Bloqueio Nova política no domínio + injector

Limitações atuais (MVP)

  • Telemetria só faz Log.i (stub)
  • Injeção principal apenas em Application.onCreate; outros pontos falham de forma explícita
  • Sem ofuscação ainda
  • Sem testes automatizados de instalação

Garantias da injeção Smali

  • Localiza a classe Application em smali/ e nos diretórios de múltiplos dex (smali_classesN/).
  • Insere a chamada de telemetria depois de .locals ou .registers, preservando a sintaxe necessária para remontagem pelo Apktool.
  • É idempotente: uma segunda execução retorna already_applied sem duplicar a chamada.
  • Retorna um resultado explícito para classe/método ausente ou método inválido.
  • O pipeline é fail-closed: não remonta nem assina o APK quando a injeção obrigatória não foi comprovada.

O CI remonta uma fixture multidex com Apktool e publica cobertura e JUnit como artefatos. Instalação, assinatura e confirmação de execução em dispositivo ainda dependem do trabalho E2E planejado no roadmap.

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages