Files
apk-reverse/.gitignore
T
inliver233 ca38fa393d Merge PR #7 "Pass stage2" (dabao1955/stage2)
Absorbs four public reverse-engineering write-ups into the skill, and completes
the xvmp IR-virtualizer work started in the hardware pass. 20 files, +1151/-151.

What it adds:

  * references/native-vm-recovery.md -- the recovery procedure for a native VM:
    VM-existence signals, separating stacked CFF/VM dispatchers, register
    anchoring with triple verification, nested-VM segment stacks, STORE-backward
    operand slicing with byte provenance, and the clean-re-VM validation loop.
    Absorbed, so every step is labelled inferred in the file itself.
  * pitfalls P43-P46, including the Go stack-ABI one (a watchpoint hit whose
    argument is not in x0-x7 because the frame holds it) and the observer whose
    crash silently disarms every observer installed after it.
  * vm_handler_slice.py: a nested-dispatch diagnostic (a block repeating 4+ times
    inside one segment is a second dispatcher running under the first), plus the
    fix for a latent bug this pass's own review found -- diagnostics() had been
    measuring len() of the (run, closed) tuples since the open-tail change, which
    is always 2, quietly disabling the spin-loop note on the real code path.
  * evidence for a completed workbench toolchain and a measured end-to-end run,
    recorded in EXTENSION-sampling-crash.md SS5-SS6 and EXTENSION-absorption-kx.md.

Verified on the merged tree, not on the PR branch alone:

  * check_repo.py, check_refs.py, check_commands.py, check_routing.py and
    check_budget.py pass with zero problems; flake8 and mypy are clean;
  * pytest: 772 passed, 172 skipped, 25 xfailed;
  * the code change was reproduced independently of the PR's own tests:
    nested_loop_segments() flags the repeat-inside-one-segment shape in both the
    (run, closed) and the legacy bare-run form, and diagnostics() now reports
    avg_segment_len over the run -- 5.0 on a fixture whose tuples are length 2,
    where the pre-fix code reported 2.0.

One defect fixed during the merge: the PR's own record says the local copies of
the absorbed write-ups under `.ref/` are "git-ignored in effect", but .gitignore
had no such rule -- it rested on nobody having run `git add -A` yet. The rule is
now explicit, with the reason stated beside it, the same way this file handles
tools/ and the user's own input material.
2026-10-16 18:34:59 +08:00

62 lines
1.4 KiB
Plaintext

# build artifacts
*.class
*.jar
!skills/apk-reverse/scripts/dexpatch/*.java
# working data -- never commit samples or outputs
*.apk
*.aab
*.dex
*.odex
*.vdex
*.oat
*.so
*.jks
*.keystore
*.pk8
*.pem
*.p12
# local scratch
_tmp/
out/
work/
audit_out/
# local extension-pass workspace: toolchains, device archives, dumped images, scratch notes.
# Nothing under tools/ belongs to the repository -- the skill's own evidence record lives in
# docs/tool-verification/ and carries no target identity or vendored binaries.
tools/
# local input material (the reporting sample and the analysis notes it came with)
存在问题和例子/
# Local copies of the third-party write-ups an absorption pass reads. They are someone else's
# text, not content of this repository: what ships is the absorbed method under an `inferred`
# label, plus the anonymized source line in docs/tool-verification/EXTENSION-absorption-*.md.
# One `git add -A` is all it would take to commit them, so the rule is explicit here rather than
# resting on "nobody has added them yet".
.ref/
# sandbox installs made while testing `npx skills add .` against this repo
.claude/
.agents/
*.log
*.jsonl
*.pcap
*.png
*.jpg
# python / editors
__pycache__/
*.pyc
.venv/
.vscode/
.idea/
.DS_Store
# local input material -- the same rule as 存在问题和例子/: the reports these passes are based on
# are the user's material, not content of this repository
新的建议和思路/
朋友全面审查和建议/