Files
apk-reverse/skills
dabao1955 eca9c19ee4 Fourth audit pass: seccomp as anti-instrumentation, and the anti-debug sweep
Two focused audits: the seccomp article under the lens of seccomp as the thing
that blocks your tools (not just a sandbox fact), and a corpus-wide sweep for
anti-debug material against the detection file that owns the topic.

The seccomp audit's strongest finding was repo-internal: advanced-unpacking
claimed seccomp filters were among the 5.10-gated layers "closed" on the 4.14
reference device -- while the repo's own extension notes observed Seccomp: 2
active on that very device, and the hardening file says "any modern kernel".
The contradiction is resolved in favour of the measurement: seccomp is now
named as the one syscall-layer mechanism NOT closed there. The hardening row
gains the full decision set (TRACE hands a syscall to your tracer; KILL_PROCESS
is the action that impersonates a detector), the bionic-installs-at-init timing
with its unverified-network marker (the cnb.cool mirror carries frameworks/base,
libcore and art but not system/seccomp or bionic -- the URLs to retry are
recorded at the claim), the external-tracer-exempt mechanism note (a filter
evaluates the installing process's own syscalls, so "they seccomp-blocked my
attach" is structurally wrong), and Seccomp_filters>1 as the target-installed-
filter signal.

The detection funnel gains the fourth cause its environment table lacked: the
process's own filter denying the agent's syscall -- Seccomp: 2 is the normal
state of every zygote-forked app, and the discriminator is a SIGSYS/SYS_SECCOMP
tombstone naming YOUR syscall, vanishing in the control run. This also finally
interprets the Seccomp field anti_detect_probe.js has been capturing all along.
Snowblind (2024) lands as a named pattern only -- recognition strings in the
third-party-builds marker table and a Step-2C rationale row; the filter+handler
implementation stays out on the stated line: recovery changes the analyst's
observation channel, weaponization makes the target's policy stop applying.
svc_scan.py learns syscall 277; seccomp-tools joins the toolchain table as an
offline filter reader with unverified grades.

The anti-debug sweep's verdict was the opposite shape, stated plainly: on this
topic the corpus is the shallow party and the repo is the owner -- TracerPid,
loader discipline, Frida-detection specifics are all already covered deeper,
and no corpus-driven table was manufactured. What it did add: the
explain-the-target half of SELinux policy reading (wildcard grants, attribute
memberships, missing type transitions -- why the app reaches what you thought
was closed, with the read/inject boundary drawn), the magiskpolicy one-liner
for the measured frida-server denial, and the three kernel-observation gate
knobs (kptr_restrict, dmesg_restrict, perf_event_paranoid) in the ladder rule.

Gates re-run: routing coherent, 414 section references zero dangling, repo
clean (after check_repo caught a broken string literal this pass introduced --
the gate did its job), pytest 751 passed / 194 skipped / 25 xfailed.
2026-10-19 22:08:14 +08:00
..