{"adoption": {"forks": 202, "observed_at": "2026-08-28T04:06:19.861124+00:00", "stars": 2158}, "canonical_url": "https://ross.abutalabs.com/products/jar-analyzer", "card": {"archived": false, "artifact_type": "application", "description": "Jar Analyzer - 一个 JAR 包 GUI 分析工具，内置 AI 助手协助分析，支持 JAR DIFF 分析，方法调用关系搜索，方法调用链 DFS 算法分析，模拟 JVM 的污点分析验证 DFS 结果，字符串搜索，Java Web 组件入口分析，CFG 程序分析，JVM 栈帧分析，自定义表达式搜索等", "domain": ["security", "reverse-engineering", "developer-tools"], "enriched": true, "function": ["reverse-engineering", "security", "gui", "search-engine", "mcp"], "health_score": 100, "homepage": "https://jar-analyzer.github.io", "language": "Java", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["jar-analyzer/jar-analyzer"], "name": "jar-analyzer/jar-analyzer", "platform": ["cross-platform", "jvm", "cli"], "pushed_at": "2026-08-26T16:58:29+00:00", "repo": "jar-analyzer/jar-analyzer", "stars": 2158, "tags": ["jar-analysis", "static-analysis", "bytecode-analysis", "call-graph", "taint-analysis", "vulnerability-research", "java-security", "decompiler", "cfg", "ai-assistant", "java", "desktop"], "topics": ["java-asm", "java-decompiler", "static-analysis", "vulnerability", "jar", "java-bytecode", "java-gui", "program-analysis", "bytecode", "java-debugger", "java-security", "java-vulnerability", "web-vulnerability"], "urls": [], "use_cases": ["analyze java jar file call chains", "find method call relationships in a jar", "static analysis of java bytecode for vulnerabilities", "diff two jar versions", "search strings inside java jars", "analyze java web component entry points", "build call graph and cfg for java methods", "taint analysis to find gadget chains"], "what_it_is": "A free, open-source GUI tool for analyzing Java JAR files, offering method call relationship search, DFS call chain analysis, taint analysis, CFG and JVM stack frame inspection, string search, and JAR diff. It also includes a built-in AI assistant and MCP service for hybrid manual/AI-assisted analysis.", "when_to_avoid": ["you need dynamic runtime debugging rather than static analysis", "your target is not Java/JVM bytecode", "you prefer a headless CLI-only pipeline without a GUI"], "when_to_choose": ["you need precise, reproducible static analysis of large Java codebases that exceeds LLM context windows", "you must keep proprietary code local and offline", "you want interactive GUI exploration of call chains, CFGs, and stack frames", "you are doing Java security auditing or vulnerability research"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/jar-analyzer", "repo": "jar-analyzer/jar-analyzer", "role": "main", "score": 94}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.861124+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:50:22.528020+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d3f5514f665fb2f09ba3fcaeb176100d8525aa582fa5dd3b198f549f8347b72", "fetched_at": "2026-08-28T04:06:19.861124+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jar-analyzer/jar-analyzer"}, {"content_hash": "96d6df5718ea37ffd04eaa14f6379ddd5deac5be498e586fff1beb5a0a270146", "fetched_at": "2026-08-29T10:30:16.565856+00:00", "kind": "homepage", "missing": false, "url": "https://jar-analyzer.github.io"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.861124+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:50:22.528020+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d3f5514f665fb2f09ba3fcaeb176100d8525aa582fa5dd3b198f549f8347b72", "fetched_at": "2026-08-28T04:06:19.861124+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jar-analyzer/jar-analyzer"}, {"content_hash": "96d6df5718ea37ffd04eaa14f6379ddd5deac5be498e586fff1beb5a0a270146", "fetched_at": "2026-08-29T10:30:16.565856+00:00", "kind": "homepage", "missing": false, "url": "https://jar-analyzer.github.io"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:50:22.528020+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d3f5514f665fb2f09ba3fcaeb176100d8525aa582fa5dd3b198f549f8347b72", "fetched_at": "2026-08-28T04:06:19.861124+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jar-analyzer/jar-analyzer"}, {"content_hash": "96d6df5718ea37ffd04eaa14f6379ddd5deac5be498e586fff1beb5a0a270146", "fetched_at": "2026-08-29T10:30:16.565856+00:00", "kind": "homepage", "missing": false, "url": "https://jar-analyzer.github.io"}], "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:06:19.861124+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.861124+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.861124+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:50:22.528020+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d3f5514f665fb2f09ba3fcaeb176100d8525aa582fa5dd3b198f549f8347b72", "fetched_at": "2026-08-28T04:06:19.861124+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jar-analyzer/jar-analyzer"}, {"content_hash": "96d6df5718ea37ffd04eaa14f6379ddd5deac5be498e586fff1beb5a0a270146", "fetched_at": "2026-08-29T10:30:16.565856+00:00", "kind": "homepage", "missing": false, "url": "https://jar-analyzer.github.io"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.861124+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.861124+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:50:22.528020+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d3f5514f665fb2f09ba3fcaeb176100d8525aa582fa5dd3b198f549f8347b72", "fetched_at": "2026-08-28T04:06:19.861124+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jar-analyzer/jar-analyzer"}, {"content_hash": "96d6df5718ea37ffd04eaa14f6379ddd5deac5be498e586fff1beb5a0a270146", "fetched_at": "2026-08-29T10:30:16.565856+00:00", "kind": "homepage", "missing": false, "url": "https://jar-analyzer.github.io"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.861124+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.861124+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.861124+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:50:22.528020+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d3f5514f665fb2f09ba3fcaeb176100d8525aa582fa5dd3b198f549f8347b72", "fetched_at": "2026-08-28T04:06:19.861124+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jar-analyzer/jar-analyzer"}, {"content_hash": "96d6df5718ea37ffd04eaa14f6379ddd5deac5be498e586fff1beb5a0a270146", "fetched_at": "2026-08-29T10:30:16.565856+00:00", "kind": "homepage", "missing": false, "url": "https://jar-analyzer.github.io"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.861124+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:19.861124+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:50:22.528020+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d3f5514f665fb2f09ba3fcaeb176100d8525aa582fa5dd3b198f549f8347b72", "fetched_at": "2026-08-28T04:06:19.861124+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jar-analyzer/jar-analyzer"}, {"content_hash": "96d6df5718ea37ffd04eaa14f6379ddd5deac5be498e586fff1beb5a0a270146", "fetched_at": "2026-08-29T10:30:16.565856+00:00", "kind": "homepage", "missing": false, "url": "https://jar-analyzer.github.io"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:50:22.528020+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d3f5514f665fb2f09ba3fcaeb176100d8525aa582fa5dd3b198f549f8347b72", "fetched_at": "2026-08-28T04:06:19.861124+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jar-analyzer/jar-analyzer"}, {"content_hash": "96d6df5718ea37ffd04eaa14f6379ddd5deac5be498e586fff1beb5a0a270146", "fetched_at": "2026-08-29T10:30:16.565856+00:00", "kind": "homepage", "missing": false, "url": "https://jar-analyzer.github.io"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:50:22.528020+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d3f5514f665fb2f09ba3fcaeb176100d8525aa582fa5dd3b198f549f8347b72", "fetched_at": "2026-08-28T04:06:19.861124+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jar-analyzer/jar-analyzer"}, {"content_hash": "96d6df5718ea37ffd04eaa14f6379ddd5deac5be498e586fff1beb5a0a270146", "fetched_at": "2026-08-29T10:30:16.565856+00:00", "kind": "homepage", "missing": false, "url": "https://jar-analyzer.github.io"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:50:22.528020+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "3d3f5514f665fb2f09ba3fcaeb176100d8525aa582fa5dd3b198f549f8347b72", "fetched_at": "2026-08-28T04:06:19.861124+00:00", "kind": "readme", "missing": false, "url": "https://github.com/jar-analyzer/jar-analyzer"}, {"content_hash": "96d6df5718ea37ffd04eaa14f6379ddd5deac5be498e586fff1beb5a0a270146", "fetched_at": "2026-08-29T10:30:16.565856+00:00", "kind": "homepage", "missing": false, "url": "https://jar-analyzer.github.io"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 75, "rhythm": 99}, "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": 1061, "days_push": 7, "days_rel": 7, "gap_med": 20.0, "n_releases_24m": 33}, "score": 94, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}