NoAddr/yaps
PUSHAN-style static devirtualizer for Tigress-like VM obfuscation, using VPC-sensitive CFG recovery over Ghidra SLEIGH p-code.
- Repository: https://github.com/NoAddr/yaps
- Commit:
d449bbc6890c09ea16b5909466570a04b365b898 - Generated: 2026-11-13T23:45:29+00:00
- Scorer 0.1.0, scoring prov-4+qual-2+sec-2, report schema v2
Scores
| Pillar | Score | Signal | Confidence | Coverage |
|---|---|---|---|---|
| AI provenance (estimated AI-generated share) | 0 | none-detected | 40% | 100% |
| Code quality | 61 | weak | 90% | 100% |
| Security | 82 | adequate | 85% | 100% |
AI provenance
No AI attribution or AI-consistent velocity signals detected.
- Explicitly attributed share (lower bound): 0.0%
- Unattributed share in AI-consistent velocity bursts: 0.0%
- Estimated AI-generated share: 0.0%
| Month | Lines added | Attributed to AI |
|---|---|---|
| 2026-06 | 24,627 | 0% |
AI provenance describes how code was produced; it is not a quality judgment. Unless attribution is explicit, these are signals consistent with AI generation, not proof. Squash/rebase workflows, imported code, and rewritten history reduce accuracy.
Code quality
Code quality is weak: test-to-source ratio 0.44, no CI test run detected; 34% of function code in complex or long functions; 7% duplicated lines. Weakest area: complexity.
| Area | Score |
|---|---|
| Complexity (lizard) | 36 |
| Duplication | 66 |
| Code smells (Opengrep) | 100 |
| Tests and CI | 52 |
| Documentation | 65 |
| Type safety | n/a |
| Process (Scorecard review/maintenance) | n/a |
- Functions: 698; mean complexity 5.2, 90th percentile 11; 43 complex and 11 long functions
- Duplicated lines: 6.9% of 11,801 compared
- Tests: 7,525 test lines for 17,102 source lines (ratio 0.44); CI test commands: none detected; 100% of recent source commits also change tests
- Docs missing or thin: contributing, changelog
Most complex functions:
- yaps::semantics::AbstractState::EvaluateConcreteOrSymbolic in src/analysis/abstract_state.cpp: complexity 110, 359 lines
- yaps::transform::RunPointerSlotForwardingPass in src/transform/passes/memory.cpp: complexity 63, 179 lines
- yaps::analysis::detail::OrdinaryCallSummarizer::ExecuteProbeItem in src/analysis/ordinary_call_summarizer.cpp: complexity 60, 235 lines
- yaps::decompile::SimplifyExpr in src/decompile/expr.cpp: complexity 51, 100 lines
- yaps::ir::ToString in src/ir/pcode_normalizer.cpp: complexity 47, 51 lines
Security
Security posture is adequate: no high-impact findings. Weakest area: posture.
| Area | Score |
|---|---|
| Secrets (gitleaks, tree + history) | 100 |
| Static analysis (Opengrep) | 100 |
| Vulnerable dependencies (OSV) | n/a |
| CI workflows (zizmor) | n/a |
| Posture (policy, updates, signing, lockfiles) | 0 |
| OpenSSF Scorecard | n/a |
- Posture checks passed: lockfiles; missing: security policy, dependency updates, signed commits
Static signals only: the scorer never runs the project's code. Secret findings are pattern matches that were not verified, and secret values are never stored.
Repository profile
- Source lines: 17,102; test lines: 7,525
| Language | Lines |
|---|---|
| C++ | 23,291 |
| C | 1,243 |
| PowerShell | 93 |