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