Sobre o projeto

unidbg é um projeto Java de código aberto projetado para emular bibliotecas nativas Android (ELF) e binários iOS (Mach-O). É usado principalmente para pesquisa de segurança, engenharia reversa e análise dinâmica de aplicativos móveis. Principais capacidades incluem: - **Suporte a Arquiteturas**: Emula código binário ARM32 e ARM64. - **Múltiplos Backends**: Suporta Unicorn, dynarmic, hypervisor Apple M1 (para emulação rápida de ARM64 no macOS) e Linux KVM em Raspberry Pi. - **Depuração Assistida por IA (MCP)**: Integra o Model Context Protocol (MCP) para permitir que ferramentas de IA (como Cursor) inspecionem dinamicamente registradores, memória, desmontagem, definam breakpoints, rastreiem instruções e chamem funções nativas durante a emulação. - **Suporte a Hooking**: Integra hooking inline via Dobby, hooking de importação Android via xHook, e hooking iOS via fishhook, substrate e whale. - **Emulação JNI**: Suporta a API de Invocação JNI, JavaVM e JNIEnv, permitindo a execução de JNI_OnLoad. - **Detecção de Vazamentos de Memória**: Rastreia alocações de memória do convidado e gera relatórios com backtraces ARM do convidado e stack traces Java do host. - **Pool de Trabalhadores**: Oferece um pool de emuladores thread-safe para reduzir a sobrecarga de inicialização de recursos durante o processamento de tarefas concorrentes. - **Depuração e Rastreamento**: Inclui um depurador de console, stub GDB, rastreamento de instruções e rastreamento de leitura/escrita de memória.