{"adoption": {"forks": 293, "observed_at": "2026-08-28T04:05:45.157872+00:00", "stars": 1859}, "canonical_url": "https://ross.abutalabs.com/products/jnitrace", "card": {"archived": false, "artifact_type": "cli-tool", "description": "A Frida based tool that traces usage of the JNI API in Android apps.", "domain": ["reverse-engineering", "security", "android-tools", "developer-tools"], "enriched": true, "function": ["reverse-engineering", "tracing", "developer-tools", "security"], "health_score": 20, "homepage": null, "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["chame1eon/jnitrace"], "name": "chame1eon/jnitrace", "platform": ["windows", "cli", "python"], "pushed_at": "2023-07-18T20:38:50+00:00", "repo": "chame1eon/jnitrace", "stars": 1859, "tags": ["frida", "jni", "dynamic-analysis", "android", "native-libraries", "tracer", "linux", "macos"], "topics": ["android", "jni", "reverse-engineering", "sre", "frida", "tracer", "jni-api"], "urls": [], "use_cases": ["trace JNI calls in an Android app's native library", "dynamically analyze how native code uses the Android Runtime", "reverse engineer obfuscated native libraries on Android", "monitor RegisterNatives and other JNI method usage", "reduce noise when tracing large JNI-heavy apps with include/exclude filters", "capture backtraces of JNI calls during app execution"], "what_it_is": "jnitrace is a Frida-based command-line tool that dynamically traces JNI API calls made by native libraries in Android apps. It works like frida-trace or strace but specifically for the JNI, helping reverse engineers follow interactions between native code and the Android Runtime.", "when_to_avoid": ["you need static analysis of native binaries without running them", "your target device cannot run a Frida server", "you are analyzing non-Android native code"], "when_to_choose": ["you need to understand what JNI API calls an Android app's native libraries make", "you already use Frida and want a strace-like tool for JNI", "manual static reverse engineering of native code is too slow"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/jnitrace", "repo": "chame1eon/jnitrace", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:45.157872+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:15:58.831279+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4258f5dee457479b635b04820944d45adb2ee2642462207e4401fedadef0bc1d", "fetched_at": "2026-08-28T04:05:45.157872+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chame1eon/jnitrace"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:45.157872+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:15:58.831279+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4258f5dee457479b635b04820944d45adb2ee2642462207e4401fedadef0bc1d", "fetched_at": "2026-08-28T04:05:45.157872+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chame1eon/jnitrace"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:15:58.831279+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4258f5dee457479b635b04820944d45adb2ee2642462207e4401fedadef0bc1d", "fetched_at": "2026-08-28T04:05:45.157872+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chame1eon/jnitrace"}], "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:05:45.157872+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:45.157872+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:45.157872+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:15:58.831279+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4258f5dee457479b635b04820944d45adb2ee2642462207e4401fedadef0bc1d", "fetched_at": "2026-08-28T04:05:45.157872+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chame1eon/jnitrace"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:45.157872+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:45.157872+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:15:58.831279+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4258f5dee457479b635b04820944d45adb2ee2642462207e4401fedadef0bc1d", "fetched_at": "2026-08-28T04:05:45.157872+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chame1eon/jnitrace"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:45.157872+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:45.157872+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:45.157872+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:15:58.831279+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4258f5dee457479b635b04820944d45adb2ee2642462207e4401fedadef0bc1d", "fetched_at": "2026-08-28T04:05:45.157872+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chame1eon/jnitrace"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:45.157872+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:45.157872+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:15:58.831279+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4258f5dee457479b635b04820944d45adb2ee2642462207e4401fedadef0bc1d", "fetched_at": "2026-08-28T04:05:45.157872+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chame1eon/jnitrace"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:15:58.831279+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4258f5dee457479b635b04820944d45adb2ee2642462207e4401fedadef0bc1d", "fetched_at": "2026-08-28T04:05:45.157872+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chame1eon/jnitrace"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:15:58.831279+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4258f5dee457479b635b04820944d45adb2ee2642462207e4401fedadef0bc1d", "fetched_at": "2026-08-28T04:05:45.157872+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chame1eon/jnitrace"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:15:58.831279+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4258f5dee457479b635b04820944d45adb2ee2642462207e4401fedadef0bc1d", "fetched_at": "2026-08-28T04:05:45.157872+00:00", "kind": "readme", "missing": false, "url": "https://github.com/chame1eon/jnitrace"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2599, "days_push": 1142, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}