SDK Android
Este guia adiciona proteção em runtime a um app Android e envia o primeiro evento real para o console. Leva cerca de dez minutos.
1. Adicione a dependência
O SDK é uma biblioteca Android (AAR). Adicione ao módulo do app:
dependencies {
implementation("com.moatgator:sdk:0.1.0")
}
Enquanto o SDK é privado, adicione pelo pacote moatgator-hq/sdk-android ou por um .aar local. Peça acesso a nós.
2. Inicie o SDK
Inicie uma vez, o mais cedo possível — no Application.onCreate():
import com.moatgator.sdk.Moatgator
import com.moatgator.sdk.MoatgatorConfig
import com.moatgator.sdk.Threat
class App : Application() {
override fun onCreate() {
super.onCreate()
Moatgator.start(this, MoatgatorConfig(
apiKey = BuildConfig.MOATGATOR_KEY, // console -> app -> Keys (scope: events:ingest)
expectedSigningCertSha256 = setOf("b12e8e59..."), // apksigner verify --print-certs app-release.apk
allowedInstallers = setOf("com.android.vending"), // optional: only the Play Store
))
Moatgator.addListener { finding ->
if (finding.threat == Threat.HOOKING || finding.threat == Threat.TAMPER) {
PaymentGate.block() // your decision, not ours
}
}
}
}
Mantenha a chave fora do controle de versão: leia de uma propriedade do Gradle ou do ambiente e exponha pelo BuildConfig.
3. Pegue o hash do seu certificado de assinatura
O SDK acusa um build assinado com outra chave (um app reempacotado). Fixe o seu certificado real:
apksigner verify --print-certs app/build/outputs/apk/release/app-release.apk
# Signer #1 certificate SHA-256 digest: b12e8e59...
Coloque esse valor em expectedSigningCertSha256.
4. Ligue a ofuscação de strings (opcional, recomendado)
O plugin do Gradle cifra os literais de string do app no build, para URLs e chaves não ficarem em texto puro no .dex:
plugins {
id("com.android.application")
id("com.moatgator.protect")
}
Ele roda só no release, depois que o código compila e antes do R8. O decifrador fica no SDK; o app se comporta exatamente igual.
5. Confira o build antes de publicar
O verify-build confirma, sem rede, que o pacote está pronto para a Play Store e que a proteção está montada — SDK ligado, biblioteca nativa em todas as ABIs, bibliotecas de 64 bits alinhadas a 16 KB (exigência do Android 15+) e assinatura v2+:
npx moatgator verify-build app/build/outputs/bundle/release/app-release.aab
Sai com código 4 se algo impedir a publicação. Coloque no CI logo depois do passo de build.
6. Veja funcionando
Rode o app num emulador ou num aparelho com root e observe o console. Em menos de um minuto você deve ver eventos em Ameaças e na página do app, e o score de segurança sobe conforme o SDK começa a enviar eventos reais.
Num emulador Android 14, uma execução nova acusa o emulador com a maior confiança; com o app Magisk instalado, root em 95%; e um build de release reassinado acusa adulteração em 98% — enquanto o original fica limpo.
Notas
- O SDK nunca derruba o app. Toda verificação é protegida; uma falha vira "não sei", nunca uma exceção.
- Nenhum dado pessoal. O aparelho vira um hash que gira; a única permissão é
INTERNET. - Intervalo de reverificação. Por padrão o SDK verifica de novo a cada 60 segundos, porque a instrumentação costuma entrar depois da inicialização. Ajuste com
recheckIntervalMs. - Depois: aperte sua política uma detecção por vez, e leve os alertas para sua equipe.