noxis-verify::adversary::fold_constants walks maximal straight-line
Const(Int/Long)+Binary{Int,Long} runs, modeling the baseline attack
any deobfuscator runs first (and the one raised on the forum: two
adjacent literals and one op, foldable in your head). Each stack slot
carries its own provenance span, so several split constants placed
back to back without a separator are reported as separate findings
instead of merging into one run.
Two uses: an honest §7 measurement (answer: every Constants scheme,
mba included, folds under a generic evaluator - only pattern matchers
hardcoded to one opcode are defeated, documented already in
constants/forms.rs) and a correctness oracle (every scheme must fold
back to the exact source value, now pinned by a regression test).
Tests: bare_literals_are_not_folded,
every_constants_scheme_folds_back_to_the_source_value.
25 lines
692 B
TOML
25 lines
692 B
TOML
[package]
|
|
name = "noxis-verify"
|
|
description = "Проверка обфускации: утечки имён, секреты в строках, JVM-верификация, метрики"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
rust-version.workspace = true
|
|
license.workspace = true
|
|
|
|
[dependencies]
|
|
regex = { workspace = true }
|
|
serde = { workspace = true }
|
|
noxis-analysis = { workspace = true }
|
|
noxis-classfile = { workspace = true }
|
|
noxis-core = { workspace = true }
|
|
noxis-jar = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[dev-dependencies]
|
|
noxis-passes = { workspace = true }
|
|
|
|
[build-dependencies]
|
|
noxis-structure-check = { workspace = true }
|