mirror of
https://github.com/Heretek-AI/RE-AI.git
synced 2026-08-24 15:46:39 -04:00
[PR #3] [MERGED] feat(re-lief): categorize_strings tool + catalog-driven string bucketing #3
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/Heretek-AI/RE-AI/pull/3
Author: @BillyOutlast
Created: 6/5/2026
Status: ✅ Merged
Merged: 6/5/2026
Merged by: @BillyOutlast
Base:
main← Head:feat/categorize-strings📝 Commits (1)
f5e5e9efeat(re-lief): categorize_strings tool + catalog-driven string bucketing📊 Changes
16 files changed (+1219 additions, -31 deletions)
View changed files
📝
ANTI-TAMPER-TAXONOMY.md(+132 -0)📝
CHANGELOG.md(+18 -0)📝
data/drm-indicators.yaml(+290 -0)📝
docs/MCP_SERVERS.md(+10 -0)📝
docs/SKILLS.md(+3 -3)📝
servers/re-lief/README.md(+30 -0)➕
servers/re-lief/src/re_lief/categorizers.py(+160 -0)📝
servers/re-lief/src/re_lief/parsers.py(+168 -17)📝
servers/re-lief/src/re_lief/server.py(+78 -0)📝
skills/re-drm-fingerprint/SKILL.md(+8 -5)📝
skills/re-format-decode/SKILL.md(+1 -1)📝
skills/re-malware-triage/SKILL.md(+2 -2)📝
skills/re-static-triage/SKILL.md(+3 -2)📝
skills/re-vm-reverse/SKILL.md(+1 -1)➕
tests/test_re_lief_categorize_strings.py(+314 -0)📝
tests/test_servers_import.py(+1 -0)📄 Description
Summary
Adds a keyword-bucketed strings dump (
re-lief.categorize_strings) that turns the manual-grep step that today lives in the LLM's head into a catalog-driven, deterministic lookup.What changed
re-lief.categorize_strings— superset ofextract_strings(same{ascii, utf16le, totals, truncated}shape for backward compat) plus aby_categoryblock with 11 semantic categories (anti_debug,hwid,crypto,network,registry,process,file,fingerprint,activation,obfuscation,misc).data/drm-indicators.yaml::string_categoriessection. Two seed categories (anti_debug,hwid) inherit their keyword lists from existing catalog sections (anti_debug_indicators.checks[].nameandhwid_apis.high_signal[].api) via aseed_from:/seed_field:YAML pointer. Add a HWID API to the catalog → categorizer picks it up on next MCP-server reload, zero Python change.re-static-triage,re-malware-triage,re-drm-fingerprint,re-vm-reverse,re-format-decodehad their manual-grep step replaced with a call tore-lief.categorize_strings. No new workflow steps were added.ANTI-TAMPER-TAXONOMY.mdgains "Recognizing the patterns in arbitrary binaries" with Pattern A (encrypted-VM bytecode interpreter: 7 section-name co-occurrence + W^X .idata +.textvirt>>raw +.ecodelazy-decrypt stub + vendor-tagged PDB + late-bound export tail + 8+ HWID APIs) and Pattern B (hardware-fingerprinting routine in a third-party launcher activation library) in vendor-neutral category terms.tests/test_re_lief_categorize_strings.pycovering the result shape, theseed_from:inheritance, the bundledActivation64.dllhigh-signal hits, the legacyextract_stringswrapper, and theGameAssemblyfull-section vsskip_sectionspaths.Vendor neutrality
Every new file references only categories (encrypted-VM bytecode interpreter, hardware-fingerprinting routine, third-party launcher activation library). The literal vendor attribution strings remain only in the gitignored
Output/reports.tests/test_no_vendor_leakage.py(14 needles) passes with zero hits on the new content.Verification
pytest -q tests/test_re_lief_categorize_strings.py— 7 passed in 31s (dominated by the 530 MBGameAssemblywalk)pytest -q tests/test_no_vendor_leakage.py tests/test_skills_frontmatter.py tests/test_servers_import.py tests/test_smoke.py tests/test_plugin_manifest.py— 46 passed, 2 skipped./verify.sh— 7/7 checks passedThe 2 pre-existing
tests/test_re_kaitai_formats.pyfailures (kaitaistruct 0.10 vs 0.11 API mismatch) are unrelated to this PR; they also fail on the parent commit.🤖 Generated with Claude Code
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.