3 Commits
Author SHA1 Message Date
Tsingshui c3f9ee8d3c Refresh the reference comparison: 8.0x geometric mean, and fix the scenario the scrub broke
Re-ran the documented comparison end to end (11/11 scenarios valid, randomized
interleave, median of N, threads=8):

  findrefs 6 queries        117-191 ms vs 830-1978 ms   7.1x - 11.5x
  getclass early/late/miss   45/77/62 ms vs 124/259/245 ms   2.7x / 3.4x / 4.0x
  manifest                   13 ms vs 268 ms             20.3x
  classes                    98 ms vs 2318 ms            23.7x
  geometric mean                                         8.0x

Up from 5.4-5.8x at the start of the session; getclass early, the only scenario that
used to lose (0.6x), is now 2.7x. Parity is unchanged: classes 567192/567192 and the
same handful of known reference-side row differences.

The rank-and-file fix: replacing the application-specific query during the privacy pass
left one scenario asking for a literal that does not occur in this archive (0/0 rows,
reported INVALID), and the scenario builder's first_class() helper called a function
that does not exist in this script. The scenario now uses a neutral literal with equal
row counts on both sides (okhttp, 126/126), and first_class() runs subprocess directly.
2026-09-12 01:41:30 +08:00
Tsingshui cd3fa39221 Correctness: vendored patches, DEX 041, robustness and parity fixes
Found by an independent review and by differential testing against the
reference implementation (a reference, not ground truth):

- droidsaw-dex vendored with a class-scoped parse: getclass 0.6x -> 1.4x,
  10-scenario geometric mean 5.8x -> 6.8x; 2070-class equivalence evidence
- DEX 041: getclass was completely broken (0x78-byte header), container memory
  1.34 GB -> 3.4 MB, single-member naming, standard-header view for the
  decompiler
- manifest: unknown value types no longer fail the whole document, resource-map
  chunk validation, exact radix multiples instead of rounded ones
- ZIP: duplicate-entry handling, declared-size-driven allocations bounded
- scanner: per-class_def type-id resolution; no rasc-only rows in the ~770k
  rows checked against the reference
2026-09-11 23:55:38 +08:00
Tsingshui 1142911389 Initial commit: rasc, native Rust APK/DEX analysis CLI (CLI-only) 2026-09-11 23:54:58 +08:00