Pular para o conteúdo principal

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:

app/build.gradle.kts
dependencies {
implementation("com.moatgator:sdk:0.1.0")
}
observação

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():

App.kt
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:

app/build.gradle.kts
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.