Pular para o conteúdo principal

SDK iOS

Este guia adiciona proteção em runtime a um app iOS. Você precisa de macOS e Xcode para compilar e testar.

1. Adicione o Swift Package​

No Xcode: File -> Add Package Dependencies, e a URL:

https://github.com/moatgator-hq/sdk-ios.git

Ou no Package.swift:

Package.swift
.package(url: "https://github.com/moatgator-hq/sdk-ios.git", from: "0.1.0")

O alvo mínimo é iOS 13.

2. Inicie o SDK​

Inicie uma vez, o mais cedo possível:

App.swift
import Moatgator

@main
struct MyApp: App {
init() {
Moatgator.start(MoatgatorConfig(
apiKey: BuildSecrets.moatgatorKey, // console -> app -> Keys (scope: events:ingest)
pins: ["sha256/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="],
expectedBundleId: "com.acme.pay"
))
}
var body: some Scene { WindowGroup { ContentView() } }
}

Reaja a uma ameaça — a decisão é sua:

final class Guard: ThreatListener {
func onThreat(_ f: Finding) {
if f.threat == .jailbreak || f.threat == .hooking { PaymentGate.block() }
}
}
Moatgator.shared.addListener(Guard())

3. Fixe a chave pública do servidor (opcional, recomendado)​

O certificate pinning adiciona uma checagem por cima da validação TLS do sistema, então um ataque no meio do caminho com outro certificado é recusado. Fixe a chave pública (SPKI), não o certificado, para que renovar o certificado com a mesma chave continue funcionando:

# from the server's leaf certificate
openssl s_client -connect api.moatgator.com:443 </dev/null 2>/dev/null \
| openssl x509 -pubkey -noout \
| openssl pkey -pubin -outform der \
| openssl dgst -sha256 -binary | openssl base64

Liste dois pins (o atual e a próxima rotação) para uma troca de chave nunca trancar o app fora do ar.

4. Rode os testes​

Os detectores usam um probe injetável, então os testes de unidade rodam sem um iPhone:

swift test

Eles cobrem um aparelho de fábrica (nada dispara), jailbreak, hooking, depurador e adulteração com os sinais certos, e o formato do event.v1.

5. Teste num aparelho​

Compile para um iPhone de verdade (ou TestFlight). Num aparelho de fábrica o SDK não deve acusar nada; num aparelho com jailbreak, ou com o Frida anexado, ele acusa jailbreak/hooking com confiança alta. Acompanhe no console, em Ameaças.

Notas​

  • O SDK nunca derruba o app. Toda verificação é protegida e tolerante a falha.
  • Seguro para a App Store. O SDK usa API pública, ou resolve símbolos não públicos (ptrace, fork) em runtime, para não arriscar a revisão.
  • Nenhum dado pessoal. O aparelho vira um hash que gira; nenhuma permissão especial é necessária.