About this project

unidbg is an open-source Java-based project designed to emulate Android native libraries (ELF) and iOS binaries (Mach-O). It is primarily used for security research, reverse engineering, and dynamic analysis of mobile applications. Key capabilities include: - **Architecture Support**: Emulates ARM32 and ARM64 binary code. - **Multiple Backends**: Supports Unicorn, dynarmic, Apple M1 hypervisor (for fast ARM64 emulation on macOS), and Linux KVM on Raspberry Pi. - **AI-Assisted Debugging (MCP)**: Integrates the Model Context Protocol (MCP) to allow AI tools (like Cursor) to dynamically inspect registers, memory, disassembly, set breakpoints, trace instructions, and call native functions during emulation. - **Hooking Support**: Integrates inline hooking via Dobby, Android import hooking via xHook, and iOS hooking via fishhook, substrate, and whale. - **JNI Emulation**: Supports the JNI Invocation API, JavaVM, and JNIEnv, allowing the execution of JNI_OnLoad. - **Memory Leak Detection**: Tracks guest memory allocations and generates reports with both guest ARM backtraces and host Java stack traces. - **Worker Pool**: Offers a thread-safe emulator pool to reduce resource initialization overhead during concurrent task processing. - **Debugging & Tracing**: Features a console debugger, GDB stub, instruction tracing, and memory read/write tracing.