RadarTopicsBuildersWeeklyReads
Open Source Radar
zhkl0228/

unidbg

GitHub

unidbg is a Java-based emulator framework for Android native libraries with experimental iOS support. It provides JNI/VM emulation, hooks, various backends, memory leak detection, and MCP AI-assisted debugging features.

5.1kstars
1.2kforks
419issues
Apache-2.0license
2019since
Star historydaily snapshots by VibeCrowd

Collecting history — the radar snapshots this repo daily. The trend line appears after 3 days of data (1 so far).

Alternatives & relatedmatched by topic overlap
Reviewgenerated from repository data · Aug 5, 2026

What it is

Allows you to emulate an Android native library, and an experimental iOS emulation. This is an educational project to learn more about the ELF/MachO file format and ARM assembly.

How it works

Features include: MCP (Model Context Protocol) debugging integration, JNI_OnLoad emulation, JavaVM/JNIEnv emulation, syscall instruction emulation, ARM32/ARM64 support, inline hooks via Dobby, Android import hooks via xHook, iOS fishhook and Whale hooks, Unicorn backend with a console debugger and tracing, iOS objc/swift runtime, dynarmic backend, Apple M1 hypervisor backend, Linux KVM backend for Raspberry Pi B4, and memory leak detection with guest/backtrace reporting.

Getting started

The repository provides MCP quick start and tools to run custom MCP tools, attach a debugger, and start an MCP server for AI-assisted analysis. Examples show how to attach a debugger, set breakpoints, and run MCP tooling:

Debugger debugger = emulator.attach();
debugger.addBreakPoint(address);
McpToolkit toolkit = new McpToolkit();
toolkit.addTool(new McpTool() {
    @Override public String name() { return "encrypt"; }
    @Override public String description() { return "Run encryption"; }
    @Override public String[] paramNames() { return new String[]{"input"}; }
    @Override public void execute(String[] params) {
        String input = params.length > 0 ? params[0] : "default";
        // call encryption with input
    }
});
toolkit.run(emulator.attach());
McpToolkit toolkit = new McpToolkit();
toolkit.addTool(new McpTool() {
    @Override public String name() { return "dumpClass"; }
    @Override public String description() { return "Dump an ObjC class definition by name"; }
    @Override public String[] paramNames() { return new String[]{"className"}; }
    @Override public void execute(String[] params) {
        String className = params.length > 0 ? params[0] : "AppDelegate";
        IClassDumper classDumper = ClassDumper.getInstance(emulator);
        System.out.println("dumpClass(" + className + "):\n" + classDumper.dumpClass(className));
    }
});
toolkit.run(emulator.attach());

Low-level API: Debugger.addMcpTool() + Debugger.run(DebugRunnable) for full control.

Recent releases

Latest releases include:

  • v0.9.9 (2026-03-05)
  • v0.9.8 (2024-09-05)
  • v0.9.7 (2022-07-30)
  • v0.9.6 (2022-01-31)
  • v0.9.5 (2021-09-21)

Traction

Stars: 5105 Forks: 1170 Open issues: 419

License

Apache-2.0

What it does (concrete capabilities)

  • Emulates Android native libraries and experimental iOS emulation.
  • Supports MCP (Model Context Protocol) debugging for AI-assisted tooling.
  • Emulates JNI Invocation API, JavaVM, and JNIEnv.
  • Emulates syscalls and supports ARM32/ARM64 architectures.
  • Inline hooking (Dobby) and Android import hooks (xHook).
  • iOS hooks via fishhook, substrate, and whale; Unicorn backend with basic debugger and trace features.
  • Backends for Apple M1 hypervisor and Linux KVM (Raspberry Pi B4).
  • Memory leak detection with guest backtrace and host stack trace.
  • Memory tracking usage example shown with MemoryTracker and try-with-resources.

Examples and tests

Examples mention tests under src/test and include utilities demonstrating JNI/dispatch, and memory leak checks.

Relationships

Unidbg is an educational project focusing on ELF/MachO formats and ARM assembly understanding, with APIs for emulation, debugging, and memory tracking.

SharePost on XLinkedIn
All trending reposRevenue-verified startups →