{"adoption": {"forks": 1182, "observed_at": "2026-08-28T04:09:11.540691+00:00", "stars": 5165}, "canonical_url": "https://ross.abutalabs.com/products/unidbg", "card": {"archived": false, "artifact_type": "library", "description": "Allows you to emulate an Android native library, and an experimental  iOS emulation", "domain": ["security", "reverse-engineering", "mobile-development", "developer-tools"], "enriched": true, "function": ["simulation", "reverse-engineering", "security", "mcp"], "health_score": 97, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["zhkl0228/unidbg"], "name": "zhkl0228/unidbg", "platform": ["cross-platform", "jvm", "cli"], "pushed_at": "2026-08-25T07:45:36+00:00", "repo": "zhkl0228/unidbg", "stars": 5165, "tags": ["android-native-emulation", "jni", "arm-emulator", "unicorn", "ios-emulation", "hooking", "ai-debugging", "debugging", "macos", "linux"], "topics": ["android", "emulator", "unicorn", "capstone", "keystone", "debugger", "ios", "emulation", "dynarmic", "hypervisor", "unidbg", "xhook", "fishhook", "whale", "kvm", "mcp"], "urls": [], "use_cases": ["emulate an Android native library without a device", "reverse engineer Android native code", "call JNI functions from an emulated ARM binary", "debug ARM assembly with breakpoints and tracing", "analyze iOS native libraries with fishhook and objc runtime", "let AI tools like Cursor assist with native code debugging via MCP"], "what_it_is": "A Java-based framework that emulates Android (and experimentally iOS) native libraries on non-ARM hosts, including JNI, syscalls, and ARM32/ARM64 instruction emulation. It includes hooking, debugging, tracing, and an MCP server for AI-assisted debugging.", "when_to_avoid": ["you need to emulate full Android apps with UI rather than native libraries", "you need production iOS emulation - it is experimental", "you are not comfortable working at the native/assembly level"], "when_to_choose": ["you need to run or analyze Android .so files without a rooted device or emulator", "you want to reverse engineer or fuzz native Android/iOS code from Java", "you need fast ARM emulation with backends like dynarmic or Apple hypervisor"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/unidbg", "repo": "zhkl0228/unidbg", "role": "main", "score": 79}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:11.540691+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:01:53.160739+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30ef7e882a78336feec1b886a43f90ba4ae578e57861eaac211938512de66c42", "fetched_at": "2026-08-28T04:09:11.540691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhkl0228/unidbg"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:11.540691+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:01:53.160739+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30ef7e882a78336feec1b886a43f90ba4ae578e57861eaac211938512de66c42", "fetched_at": "2026-08-28T04:09:11.540691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhkl0228/unidbg"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:01:53.160739+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30ef7e882a78336feec1b886a43f90ba4ae578e57861eaac211938512de66c42", "fetched_at": "2026-08-28T04:09:11.540691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhkl0228/unidbg"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:09:11.540691+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:11.540691+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:11.540691+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:01:53.160739+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30ef7e882a78336feec1b886a43f90ba4ae578e57861eaac211938512de66c42", "fetched_at": "2026-08-28T04:09:11.540691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhkl0228/unidbg"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:11.540691+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:11.540691+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:01:53.160739+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30ef7e882a78336feec1b886a43f90ba4ae578e57861eaac211938512de66c42", "fetched_at": "2026-08-28T04:09:11.540691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhkl0228/unidbg"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:11.540691+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:11.540691+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:11.540691+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:01:53.160739+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30ef7e882a78336feec1b886a43f90ba4ae578e57861eaac211938512de66c42", "fetched_at": "2026-08-28T04:09:11.540691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhkl0228/unidbg"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:11.540691+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:11.540691+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:01:53.160739+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30ef7e882a78336feec1b886a43f90ba4ae578e57861eaac211938512de66c42", "fetched_at": "2026-08-28T04:09:11.540691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhkl0228/unidbg"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:01:53.160739+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30ef7e882a78336feec1b886a43f90ba4ae578e57861eaac211938512de66c42", "fetched_at": "2026-08-28T04:09:11.540691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhkl0228/unidbg"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:01:53.160739+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30ef7e882a78336feec1b886a43f90ba4ae578e57861eaac211938512de66c42", "fetched_at": "2026-08-28T04:09:11.540691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhkl0228/unidbg"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:01:53.160739+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "30ef7e882a78336feec1b886a43f90ba4ae578e57861eaac211938512de66c42", "fetched_at": "2026-08-28T04:09:11.540691+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zhkl0228/unidbg"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 41}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2745, "days_push": 8, "days_rel": 181, "gap_med": 545, "n_releases_24m": 2}, "score": 79, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}