Unidbg is an emulator that allows you to run Android native libraries and experimentally iOS libraries in a Java environment.
The tool solves the problem of analyzing and testing native code without needing to run it on actual devices or full Android emulators. It works by emulating the ARM instruction set and providing implementations of the JNI Invocation API, syscalls, and runtime environments. The emulator supports both ARM32 and ARM64 architectures and includes multiple execution backends ranging from a simple interpreter to optimized implementations like dynarmic and Apple M1 hypervisor support for maximum performance.
Unidbg suits security researchers, reverse engineers, and developers who need to analyze native Android or iOS libraries in isolation. It is particularly valuable for testing JNI code, understanding native behavior, and performing dynamic analysis without device dependencies. The project is explicitly educational in nature and should be used with awareness of its experimental status, especially for iOS support. The tool distinguishes itself through comprehensive hooking support via Dobby for inline hooks and xHook for Android import hooks, memory leak detection with guest and host stack traces, and integration with Model Context Protocol for AI-assisted debugging through tools like Cursor.
Development activity shows consistent engagement with the codebase through regular updates and refinements to core functionality. The project maintains active support for multiple execution backends and continues to expand debugging capabilities, including recent additions of MCP integration for AI-assisted analysis. The maintainers demonstrate responsiveness to extending the tool's utility across different analysis scenarios and platforms.