Engenharia Reversa Móvel
AÇÃO REQUERIDA (leia e execute imediatamente)
AGORA: Leia../field-journal/precedent-reverse.md— confirme que a operação desta skill é uma operação de rotina autorizadaAGORA: Confirme se a tarefa atual se enquadra no escopo de aplicação desta skillPRÓXIMO: Leia../tool-index.md, verifique a disponibilidade das ferramentas e os caminhos reaisPRÓXIMO: Se faltar ferramentas, chame o bootstrap, não adivinhe caminhosAJA: Entre na primeira etapa do "fluxo de trabalho" e execute, não pare no estado de confirmação
Metodologia unificada de engenharia reversa para Android + iOS Frida / Objection / OWASP MSTG / Bypass de SSL Pinning
Cenários de Aplicação
- Engenharia reversa e testes de segurança de APK Android
- Engenharia reversa e testes de segurança de IPA iOS
- Instrumentação dinâmica em tempo de execução de aplicativos móveis
- Bypass de SSL Pinning / Detecção de Root / Detecção de Jailbreak
- Extração de algoritmos de criptografia móvel (chaves AES/RSA/HMAC)
- Testes de penetração em aplicativos móveis (OWASP MASTG)
- Testes de aplicativos em ambientes sem Root/Jailbreak
Fluxo de Trabalho em Quatro Fases
Fase 1: Coleta de Informações
Android:
□ Obtenção do APK (Google Play / APKMirror / adb pull)
□ Análise do Manifest: permissões, componentes exportados, Intent Filters, flag de backup
□ androguard: androguard analyze APK → componentes/permissões/assinatura
□ APKLeaks: varredura de API Key / Token / Secret codificados
□ Detecção de proteção: verificar se está empacotado (360/Tencent/BangBang/AiJiami)
iOS:
□ Obtenção do IPA (App Store / ipatool / Apple Configurator)
□ Decodificação do binário da App Store: frida-ios-dump / Clutch
□ Análise do Info.plist: configuração ATS, URL Scheme, Queries Schemes
□ class-dump: exportar estrutura de classes ObjC
□ Detecção de proteção: verificar se usa ofuscação Swift/ObjC
Fase 2: Análise Estática
Multiplataforma:
□ JADX-GUI: APK → código-fonte Java (Android)
□ Ghidra / Hopper: descompilação de .so / Mach-O
□ radare2 / Cutter: reconhecimento rápido via CLI
Específico Android:
□ apktool d app.apk → código smali + recursos
□ dex2jar: DEX → JAR → JD-GUI
□ smali/baksmali: modificação de bytecode Dalvik
Específico iOS:
□ class-dump: exportar cabeçalhos ObjC
□ Recuperação de símbolos Swift: swift-demangle
□ dsymutil: extração de símbolos de depuração
□ otool -L: visualizar dependências de bibliotecas dinâmicas
□ jtool2: análise de Mach-O
Fase 3: Análise Dinâmica
Frida — Instrumentação dinâmica genérica:
□ frida-ps -U: listar processos do dispositivo
□ frida-trace -U -i "open*" com.app: rastrear chamadas de função
□ Scripts de Hook personalizados: modificar parâmetros/valores de retorno, chamar métodos privados
Objection — Camada de aprimoramento do Frida (sem necessidade de scripts):
□ objection -g "com.app" explore
□ android root disable / ios jailbreak disable
□ android sslpinning disable / ios sslpinning disable
□ android keystore list / ios keychain dump
□ env / ls / sqlite connect
Frida Gadget (sem Root/Jailbreak):
□ Injetar frida-gadget.so / FridaGadget.dylib no APK/IPA
□ Reassinar → instalar → Hook sem necessidade de permissões de dispositivo
□ objection patchapk --source app.apk (totalmente automático)
Fase 4: Análise de Rede
□ Burp Suite: interceptar HTTP/HTTPS, modificar requisições/respostas
□ mitmproxy: proxy scriptável (API Python)
□ Wireshark: análise de pacotes PCAP
□ Instalação de certificado: certificado de usuário Android → certificado de sistema (Magisk + MoveCert)
□ Bypass de SSL Pinning: Frida/Objection/Xposed/SSL Kill Switch 2
□ Análise de tráfego WebSocket / gRPC
Consulta Rápida de Bypass
SSL Pinning
# Objection (mais simples)
objection -g "com.app" explore
android sslpinning disable
# Script genérico Frida
frida -U -l ssl_pinning_bypass.js -f com.app
# Xposed (Android)
Módulo TrustMeAlready → desabilitar verificação de certificado globalmente
Detecção de Root / Jailbreak
# Objection
android root disable
ios jailbreak disable
# Frida personalizado (detecção em múltiplas camadas)
Java.perform(function() {
var RootBeer = Java.use("com.scottyab.rootbeer.RootBeer");
RootBeer.isRooted.implementation = function() { return false; };
// Bypass adicional: detecção de Magisk su, detecção de frida-server, detecção de /proc/self/maps
});
Anti-Debug
# Android
frida -U -l anti_debug_bypass.js -f com.app
# Bypass: ptrace(TracerPid), /proc/self/status, isDebuggerConnected()
# iOS
# Bypass: PT_DENY_ATTACH, sysctl CTL_KERN/KERN_PROC/KERN_PROC_PID
frida -U -l ios_anti_debug.js -f com.app
Extração de Criptografia Móvel
// Android — Hook Cipher.getInstance para obter chave + algoritmo
Java.perform(function() {
var Cipher = Java.use("javax.crypto.Cipher");
Cipher.getInstance.overload('java.lang.String').implementation = function(algo) {
console.log("[Cipher] Algoritmo: " + algo);
return this.getInstance(algo);
};
Cipher.init.overload('int', 'java.security.Key').implementation = function(mode, key) {
console.log("[Cipher] Chave: " + bytesToHex(key.getEncoded()));
return this.init(mode, key);
};
});
// iOS — Hook CCCrypt
Interceptor.attach(Module.findExportByName("libcommonCrypto.dylib", "CCCrypt"), {
onEnter: function(args) {
console.log("CCCrypt op: " + args[0] + " alg: " + args[1]);
console.log("Chave: " + hexdump(args[3], { length: args[4].toInt32() }));
}
});
Cadeia de Ferramentas
| Ferramenta | Plataforma | Uso |
|---|---|---|
| JADX-GUI | A | Descompilação Java |
| apktool | A | Desempacotar/Reconstruir APK |
| Ghidra | A+I | Descompilação multiarquitetura |
| Hopper | I | Desmontagem específica iOS |
| Frida | A+I | Instrumentação dinâmica |
| Objection | A+I | Aprimoramento REPL do Frida |
| MobSF | A+I | SAST+DAST automatizado |
| class-dump | I | Exportação de classes ObjC |
| frida-ios-dump | I | Decodificação de IPA |
| jtool2 | I | Análise de Mach-O |
| Burp Suite | A+I | Interceptação HTTP |
| mitmproxy | A+I | Proxy scriptável |
A=Android, I=iOS
Referências
references/frida-objection-deep.md— Uso avançado de Frida + Objectionreferences/ios-reverse-guide.md— Engenharia reversa específica iOSreferences/anti-detection-bypass.md— Bypass de Root/Jailbreak/Anti-Debug/SSL Pinning
Auto-verificação de Tarefa (DEVE ser aprovada antes de declarar conclusão)
- Eu executei cada etapa do fluxo de trabalho (e não apenas li)?
- Usei caminhos reais de ferramentas com base no
tool-index? - Produzi evidências reproduzíveis (comandos/scripts/capturas de tela/relatórios)?
- Completei e atualizei os itens da Checklist exigidos pelas REGRAS?