{"adoption": {"forks": 379, "observed_at": "2026-08-28T04:03:58.351239+00:00", "stars": 1202}, "canonical_url": "https://ross.abutalabs.com/products/nmmp", "card": {"archived": false, "artifact_type": "library", "description": "dex-vm used to protect the android classes.dex file", "domain": ["security", "mobile-development", "android-tools", "reverse-engineering"], "enriched": true, "function": ["security", "compiler", "interpreter", "reverse-engineering"], "health_score": 44, "homepage": null, "language": "C", "license": null, "license_family": "other", "maturity": "active", "member_repos": ["maoabc/nmmp"], "name": "maoabc/nmmp", "platform": ["cpp", "c", "cli", "windows"], "pushed_at": "2025-08-22T18:55:49+00:00", "repo": "maoabc/nmmp", "stars": 1202, "tags": ["dex-vm", "apk-hardening", "obfuscation", "dex2c", "ndk", "anti-decompilation", "dalvik-bytecode", "android", "linux", "macos"], "topics": ["android", "ndk"], "urls": [], "use_cases": ["protect android apk from decompilation", "convert dex bytecode to native code", "harden android app against reverse engineering", "obfuscate classes.dex with a custom virtual machine", "protect aab and aar artifacts", "randomize dalvik opcodes to break decompilers"], "what_it_is": "nmmp is an APK/AAB/AAR hardening tool that converts Dalvik bytecode from classes.dex into native C code executed by a custom dex virtual machine, making decompilation significantly harder. It consists of nmm-protect (a Java tool that transforms dex data into C structs with randomized opcodes and generates an NDK project) and nmmvm (the C-based dex-vm interpreter).", "when_to_avoid": ["you only need name obfuscation - ProGuard/R8 is simpler", "you cannot ship native libraries or use the Android NDK", "you require a certified commercial-grade anti-tampering solution with support"], "when_to_choose": ["you need to protect selected Java/Kotlin methods in an Android app from static analysis", "you want an open-source dex-to-native protection without commercial packers", "you need to harden apk, aab, or aar builds via a command-line pipeline"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/nmmp", "repo": "maoabc/nmmp", "role": "main", "score": 40}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.351239+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:20:36.617647+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "142f6f38028d26c49fbb89e69e40d1bd6aef2f2787280059a7d0d7d74d98fe04", "fetched_at": "2026-08-28T04:03:58.351239+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maoabc/nmmp"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.351239+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:20:36.617647+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "142f6f38028d26c49fbb89e69e40d1bd6aef2f2787280059a7d0d7d74d98fe04", "fetched_at": "2026-08-28T04:03:58.351239+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maoabc/nmmp"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:20:36.617647+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "142f6f38028d26c49fbb89e69e40d1bd6aef2f2787280059a7d0d7d74d98fe04", "fetched_at": "2026-08-28T04:03:58.351239+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maoabc/nmmp"}], "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:03:58.351239+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.351239+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.351239+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:20:36.617647+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "142f6f38028d26c49fbb89e69e40d1bd6aef2f2787280059a7d0d7d74d98fe04", "fetched_at": "2026-08-28T04:03:58.351239+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maoabc/nmmp"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.351239+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.351239+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:20:36.617647+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "142f6f38028d26c49fbb89e69e40d1bd6aef2f2787280059a7d0d7d74d98fe04", "fetched_at": "2026-08-28T04:03:58.351239+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maoabc/nmmp"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.351239+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.351239+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.351239+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:20:36.617647+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "142f6f38028d26c49fbb89e69e40d1bd6aef2f2787280059a7d0d7d74d98fe04", "fetched_at": "2026-08-28T04:03:58.351239+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maoabc/nmmp"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.351239+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:58.351239+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:20:36.617647+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "142f6f38028d26c49fbb89e69e40d1bd6aef2f2787280059a7d0d7d74d98fe04", "fetched_at": "2026-08-28T04:03:58.351239+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maoabc/nmmp"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:20:36.617647+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "142f6f38028d26c49fbb89e69e40d1bd6aef2f2787280059a7d0d7d74d98fe04", "fetched_at": "2026-08-28T04:03:58.351239+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maoabc/nmmp"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:20:36.617647+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "142f6f38028d26c49fbb89e69e40d1bd6aef2f2787280059a7d0d7d74d98fe04", "fetched_at": "2026-08-28T04:03:58.351239+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maoabc/nmmp"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:20:36.617647+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "142f6f38028d26c49fbb89e69e40d1bd6aef2f2787280059a7d0d7d74d98fe04", "fetched_at": "2026-08-28T04:03:58.351239+00:00", "kind": "readme", "missing": false, "url": "https://github.com/maoabc/nmmp"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 38, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1930, "days_push": 376, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 40, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}