Skip to content

Releases: Alyhnte/ReaPlus

Reverse Engine Anything Plus v0.8.0

Choose a tag to compare

@Alyhnte Alyhnte released this 14 Oct 10:42

Reverse Engine Anything Plus v0.8.0

Protocol release: the MCP surface grows up — resources, prompts, toolset
profiles, and typed outputs — while new security boundaries (workspace root,
tokenless HTTP, audit log) lock the server down. Long jobs get async + progress
pilots. 58/58 default tests green.

Highlights

  • Resources + prompts: two static read-only resources
    (rea-plus://server-info, rea-plus://capabilities-safety) and three
    side-effect-free triage prompts (packer-triage, dotnet-malware-triage,
    android-triage). Full surface is now 171 tools + 2 resources + 3 prompts.
  • Toolset profiles: REA_TOOLSETS filters registration to a slice
    (minimal = 8, static = 98, android = 27, dotnet = 20, web = 26,
    debug = 50; comma-separated union). Unknown names fail startup instead of
    silently falling back to all.
  • Typed outputs: 120 tools declare outputSchema and 169 carry
    annotations
    ; structuredContent mirrors the text JSON on plain-object
    results. Per-tool status lives in docs/TOOLS.md, generated from the real
    compiled server (node scripts/generate-tool-reference.mjs --check).
  • Workspace root: with REA_WORKSPACE_ROOT set, rea_* path arguments,
    conduit open_target/debug_open paths, and user-visible derived writes
    (.unpacked, .extracted, HAR output) must resolve inside a root —
    junction, UNC, drive-relative, ADS, and reserved Windows names rejected.
  • Tokenless HTTP lockdown: without DBG_BRIDGE_TOKEN, HTTP registers only
    a 44-tool read-only allowlist (fail-closed, intersected with REA_TOOLSETS).
    REA_AUDIT_LOG writes append-only JSONL with no arguments, tokens, or paths;
    defaults are 120 req/min/IP and 16 concurrent requests.
  • Async job pilot (opt-in): with REA_ASYNC_JOBS=1, five job tools
    (rea_job_start/status/result/cancel/list) run whitelisted tools (today:
    rea_process_run) with a 2-concurrent queue; cancel kills the process tree.
  • Roots + progress pilots: REA_ROOTS=1 narrows the workspace from client
    roots on legacy stdio; rea_process_run streams paced progress and honors
    notifications/cancelled.

Fixed

  • Registry identity: package mcpName and server.json name are now
    io.github.Alyhnte/rea-plus; npm bin paths and repository URL are in
    canonical form; lockfile version is synced.
  • Jadx honesty: manifest/class/decompile results are validated before
    success is reported; missing tool or broken input returns an error envelope,
    never a fake ok:true. Real jadx flags verified against the installed binary.
  • Frida exception honesty: exceptions outside the agent's own breakpoint
    slot return false to the real flow instead of being swallowed as fake hits.
  • Stale docs: README badge and lane counts re-synced (547 its, 58 files);
    ROADMAP/CHANGELOG carry the real 120/169 numbers.

Added

  • src/server/workspaceRoot.ts + tests/workspace-root.test.mjs,
    tests/workspace-derived.test.mjs (conduit + derived-write coverage).
  • src/server/toolMetadata.ts, src/server/conduitMetadata.ts (central
    outputSchema/annotations registries) + tests/sdk-surface.test.mjs,
    tests/conduit-surface.test.mjs.
  • src/server/toolsets.ts + tests/toolsets.test.mjs.
  • src/server/registerResourcesPrompts.ts + tests/resources-prompts.test.mjs.
  • src/server/httpPolicy.ts + tests/http-policy.test.mjs.
  • src/server/roots.ts + tests/roots.test.mjs.
  • src/server/progress.ts + tests/progress-cancel.test.mjs.
  • src/server/asyncJobs.ts + tests/async-jobs.test.mjs.
  • scripts/generate-tool-reference.mjs + docs/TOOLS.md +
    tests/tool-reference.test.mjs (drift gate: generated reference must match).
  • .github/workflows/publish.yml (manual-only, dry-run by default; real
    publish needs an explicit PUBLISH approval).
  • Frida exception regression test (tests/frida-agent-exception.test.mjs)
    and jadx bridge honesty tests (tests/jadx-bridge.test.mjs).
  • tests/publish-workflow.test.mjs, tests/version-sync.test.mjs
    (single-authority version sync across package/lock/server/sources).

Verification

  • npx tsc --noEmit clean; npm run build clean.
  • node scripts/generate-tool-reference.mjs --check passes (171/2/3).
  • Focused protocol suites: 201/201 (sdk, async-jobs, conduit, http-policy,
    workspace, roots, progress, toolsets, resources-prompts, tool-reference,
    publish, version-sync, publish-workflow, frida-exception, jadx).
  • Default lane npm test: 58/58 PASS, 0 FAIL (Windows + Ubuntu CI shape).
  • node scripts/publish-kontrol.mjs OK; npm publish --dry-run OK
    (314 files, no login — real publish not attempted).
  • Live-debugger/Frida injection suites stay out of the default lane (VM/CI only).

Upgrade notes

  • Default surface is unchanged in count (171 tools) unless you opt in:
    REA_TOOLSETS slices it, REA_ASYNC_JOBS=1 adds 5 job tools (176 total).
  • Setting REA_WORKSPACE_ROOT newly constrains path arguments — unset means
    no restriction, so existing setups are unaffected until they opt in.
  • Tokenless HTTP now serves only the 44-tool read-only allowlist; set
    DBG_BRIDGE_TOKEN for the full surface over HTTP. Stdio is unchanged.
  • npm registry publish is still the open gate; until then
    npx -y github:Alyhnte/ReaPlus remains the supported one-command path.

Reverse Engine Anything Plus v0.7.4

Choose a tag to compare

@Alyhnte Alyhnte released this 12 Oct 23:14

Reverse Engine Anything Plus v0.7.4

Distribution release: rea-plus is now genuinely easy for other people to install,
and a packaging bug that would have stopped every package consumer at boot is fixed.

Highlights

  • One-command install, no clone: npx -y github:Alyhnte/ReaPlus builds and runs
    (cold start to tools/list verified at ~31s, 171 tools).
  • One-click client setup: Add-to-Cursor and Install-in-VS-Code badges in the README,
    plus ready-made configs for Claude Desktop/Code, Cursor, VS Code, Windsurf, Codex,
    and opencode under configs/.
  • Docker: docker build works today; this release also publishes
    ghcr.io/alyhnte/reaplus automatically.
  • New README: live badges, architecture diagram, per-client collapsibles, an
    environment-variable table, and an honest security model.

Fixed

  • Consumer boot crash (important): Playwright was a devDependency imported
    statically by product code, so installing the package and starting the server died
    with ERR_MODULE_NOT_FOUND. Playwright is now loaded lazily and is a documented
    optional extra; the server boots without it and browser tools return
    capability_unsupported. For browser tools: npm i playwright && npx playwright install chromium.
    (Found by an end-to-end tarball consumer simulation, now part of the release routine.)

Added

  • prepare script so git-based installs build dist/ automatically.
  • Dockerfile + .github/workflows/docker.yml (release → GHCR push; manual runs
    build-only by default).
  • smithery.yaml registry metadata; personal-path examples scrubbed from configs/.
  • docs/ROADMAP.md — the full prioritized roadmap table (distribution, MCP protocol,
    security, engines, domains, behavior, scale, tests, docs).

Verification

  • Tarball consumer simulation: fresh install → stdio initialize → tools/list = 171,
    with Playwright absent.
  • Cold npx from GitHub (empty npm cache): init in ~31s including the build, 171 tools.
  • Default test lane 43/43 locally; CI green on Ubuntu (Node 20 + 22) for this release.
  • Install deeplinks were generated programmatically and verified by decoding.

Upgrade notes

  • No tool or transport changes since v0.7.3. If you embed rea-plus as a dependency and
    used browser tools, add Playwright as shown above.
  • npm registry publish is the top roadmap item; until then the GitHub npx form above
    is the supported one-command path.

Reverse Engine Anything Plus v0.7.3

Choose a tag to compare

@Alyhnte Alyhnte released this 12 Oct 22:01

Reverse Engine Anything Plus v0.7.3

CI and portability patch on top of v0.7.2. The default test lane is now green on a
clean machine (Ubuntu CI, Node 20 + 22), not just on the author's Windows box — and
the product no longer contains any machine-specific install paths.

Highlights

  • Default lane: 43/43 test files pass on Windows (tools present), on Windows with a
    stripped PATH (tools absent), and on Ubuntu CI (Node 20 and 22).
  • Zero personal paths left in src/, tests/, or scripts/ (verified by grep).

Fixed

  • Portable fixtures: tests read the tracked corpus in tests/corpus/ via
    import.meta.url instead of absolute author-machine Temp paths. korpus-kur
    refreshes fixtures only when REA_KORPUS_ELF / REA_KORPUS_PE are set.
  • Honest presence probes: spawnSync does not throw when a binary is missing, so
    try/catch gates silently reported present. Probes (product mitm gate, test gates)
    now check r.error/status. This also removed a ~13s phantom proxy wait when
    mitmdump is absent.
  • Principled test gates: when wabt, upx, ilspycmd, dnfile, or Chromium is absent,
    tests assert the capability_unsupported gate (or skip visibly) instead of
    expecting author-machine tools. The UPX version is no longer pinned to 5.2.1.
  • Generalized tool discovery (product): REA_UPX_BIN, REA_WABT_BIN, and
    REA_AAPT2_BIN env overrides + PATH only; personal WinGet/C:\tools locations removed.
  • .NET CIL on Linux: the python search now tries python, python3, py in order
    (previously only python); CoreLib discovery prefers System.Private.CoreLib.dll
    and searches platform dotnet roots, with REA_CORELIB_DLL as an override.
  • Ghidra project dir lives under the OS temp dir instead of a personal path; the
    local-Ghidra suites require REA_GHIDRA_DIR explicitly (no machine default).
  • CLI tests spawn process.execPath instead of relying on node being on PATH.
  • Runner diagnostics: failure tails in CI logs are longer (the previous 5-line tail
    hid assertion details).

Verification

  • Local: tsc clean, build clean, npm test 43/43 with full tools and 43/43 with a
    stripped PATH; portable-fixture tests also pass from a different working directory.
  • CI: branch run green before merge; this release is tagged from a main commit whose
    CI is green on Node 20 + 22.

Upgrade notes

  • No tool or transport changes since v0.7.2. If you relied on the old built-in install
    locations for upx/wabt/aapt2, put them on PATH or set REA_UPX_BIN /
    REA_WABT_BIN / REA_AAPT2_BIN.
  • Supersedes v0.7.2, whose CI was red off the author machine (34/43). The v0.7.2
    notes describe the hardening release; v0.7.3 makes its test claims true everywhere.

Reverse Engine Anything Plus v0.7.2

Choose a tag to compare

@Alyhnte Alyhnte released this 12 Oct 21:23

Reverse Engine Anything Plus v0.7.2

A correctness and hardening release from a full end-to-end review of the codebase.
No tool was renamed and no tool was removed: the surface stays at 171 live tools
(30 frozen conduit + 141 rea), now with honest errors, validated inputs, and a
test lane that actually runs.

Highlights

  • npm start now starts the real server (dist/server.js); it previously pointed at a
    transport-less factory module and exited serving nothing.
  • Domain failures are reported as MCP errors (isError: true) instead of success.
  • Address inputs can no longer inject r2/rizin commands (;, ! shell escapes rejected).
  • Tools that returned ok: true without doing the work now do it for real — or say so.
  • npm test runs the real default suite: 43 files / 321 its, all green.

Fixed

  • Entry point: start script targets dist/server.js (same as the rea-plus bin).
  • Test script: npm test was pointing outside the repo (../conduit/...); it now runs
    scripts/run-tests.mjs. The old command survives as npm run test:golden.
  • CI honesty: the workflow claimed "all tests" while running 2 of 49 files. CI now runs
    npm test (default lane) and says so.
  • Error envelope: the rea tool wrapper had no try/catch and never set isError;
    thrown errors became protocol errors and { ok: false } results looked successful.
  • Missing runtime assets: the build copies frida-agent.js and the Ghidra Python
    scripts into dist/ (scripts/copy-assets.mjs); the published Frida engine no longer
    dies with engine_unavailable. The stale src/engines fallback path was corrected.
  • Version drift: one truth everywhere — package.json, server.json, and the server
    banner all report 0.7.2 (the v0.7.1 release still identified as 0.7.0 at runtime).
  • Publish safety: prepublishOnly builds first, so a fresh clone cannot publish a
    dist-less package.
  • Cutter decompile: the pdf fallback ran without analysis and returned ok with an
    empty body; it now runs aaa;pdf and an empty result is capability_unsupported.
  • Corpus setup: korpus-kur copied fixtures from author-machine Temp paths and crashed
    elsewhere; missing sources now keep the tracked corpus. The idempotency test measures
    the second run, as its name says.

Security

  • Command injection: address arguments are validated in the MCP schemas and again in
    the Cutter/R2Plus bridges (hex, decimal, or symbol names only).
  • cmd.exe shim: radare2's Windows shim rejects cmd metacharacters (%, &, |, ",
    …) instead of quoting around them, and shutdown tree-kills the process so r2.exe
    grandchildren are not orphaned.
  • SSRF: rea_jeb_sorgu only POSTs to loopback by default. Remote targets require the
    operator opt-in REA_JEB_ALLOW_REMOTE=1; link-local and cloud-metadata hosts are
    always blocked.
  • Unauthenticated HTTP: when DBG_BRIDGE_TOKEN is unset, the server still starts for
    local use but prints a loud warning that HTTP auth is disabled.

Honesty (no more fake ok)

  • rea_dotnet_metadata checked only the MZ magic, so every native PE counted as
    ".NET" (and unpack routing believed it). It now verifies the real CLR data directory
    in-process; external readers are reported, not required.
  • rea_pwn_elf_layout returned ok: true with a "queued" summary and did nothing.
    It now returns capability_unsupported until pwntools is actually wired.
  • stdout_sha256_kısa was FNV-1a despite the name; it is now a real SHA-256 prefix.
  • Fake PTY removed: process capture always used pipes while sometimes claiming a PTY
    channel, and rea_process_compare diffed pipe against itself. The channel is honestly
    pipe, and compare returns capability_unsupported until a real PTY exists.
  • rea_net_capture ignored the given URL and captured traffic to its own decoy
    server. It now requests the given localhost URL through the proxy; the decoy remains
    only for data: inputs and is labeled in the summary.

Robustness

  • Frida timeouts: agent RPCs (callAgent, describe) are bounded by
    DBG_BRIDGE_FRIDA_TIMEOUT_MS (default 30s); a wedged agent no longer hangs a tool call.
  • Frida cleanup: a failed inject detaches and unregisters the half-open session
    instead of leaking it (the attach path had no cleanup at all).
  • Checkpoint safety: re-open and re-attach clear the previous target's checkpoints,
    so rewind cannot write one process's memory/registers into another.
  • Session overwrite race: concurrent re-open on x64dbg/cdb/Frida no longer orphans
    the overwritten debugger process.

Tests & verification

  • New tests/fixes-regression.test.mjs (12 its) locks these fixes in; it was red on the
    unfixed code and is green now.
  • New test runner (scripts/run-tests.mjs): per-file 90s cap, process-tree kill on
    timeout, and it never hangs on inherited pipes.
  • Default lane: 43/43 files pass. Live-injection/debugger, packet-capture, browser,
    e2e, and local-Ghidra suites are excluded by default and run via npm run test:live
    (VM or dedicated CI job) — they spawn or inject into real processes.
  • Verified end to end over HTTP: initialize reports rea-plus 0.7.2, tools/list
    returns 171 tools, an injection attempt (0x10;!calc) is rejected by schema
    validation, and a gated domain result comes back with isError: true.

Known limitations

  • Destructive-tool MCP annotations are deferred: the bundled SDK v2 surface does not
    expose a verifiable annotations field.
  • Some provider tools remain thin (e.g. jadx manifest/class fields, browser scenario
    recording); they are tracked in the review report for a follow-up release.
  • The local-Ghidra suites (ghidra-full, ghidra-prof2) need a machine-local Ghidra
    install and are not part of the default lane.

Upgrade notes

  • No breaking changes to tool names or transports. Two behavior changes to know:
    domain failures now surface as isError: true (clients that treated them as success
    will see errors), and rea_process_compare returns capability_unsupported on every
    platform until a real PTY lands.
  • Rebuild after upgrading: npm ci && npm run build (build now also copies assets).

Reverse Engine Anything Plus v0.7.1

Choose a tag to compare

@Alyhnte Alyhnte released this 12 Oct 19:31

Fixed

  • Release notes file tracked in repo (docs/release-v0.7.0.md)

Commit

2d6e25f

Reverse Engine Anything Plus v0.7.0

Choose a tag to compare

@Alyhnte Alyhnte released this 12 Oct 17:50

Added

  • rea_unpack_hunt: guided flow for unknown packers (upx -> dotnet -> OEP dump recipe)
  • WSL guide for Linux-only tools (binwalk/unblob manual steps)
  • 171 live tools, 49 test files green

Updated

  • Version 0.7.0 everywhere
  • README + VERIFY counts synced

Commit

780cf91

Reverse Engine Anything Plus v0.6.0

Choose a tag to compare

@Alyhnte Alyhnte released this 12 Oct 17:18

Added

  • rea_behavior_full: single-call behavior report (API + syscall names + file/registry profiles)
  • Syscall table (22 Windows x64 entries), file/registry profilers
  • PDB path reader (CodeView RSDS), DWARF summary (CU + subprograms), typedef spreader
  • rea_scan_repo: repo scan with 4-way queue + mtime cache (.git/node_modules/dist skipped)
  • Golden corpus: 5 fixtures (ELF, PE, APK, WASM, JS) + setup script
  • npm publish prep: files list, .npmignore, publish check script (no publish yet)
  • 7 new MCP tools, 170 live total, 48 test files green

Fixed

  • Version 0.6.0 everywhere
  • Removed committed pycache + ignore rule

Commit

0631c1d

Reverse Engine Anything Plus v0.5.1

Choose a tag to compare

@Alyhnte Alyhnte released this 12 Oct 16:28

Fixed- README + VERIFY counts synced to code (163 tools, 43 files, 339 its)

Reverse Engine Anything Plus v0.5.0

Choose a tag to compare

@Alyhnte Alyhnte released this 12 Oct 16:27

Added- Flutter/Dart scan, Apple Mach-O/plist/bundle, Harmony HAP reader, PE info/imports/sections- Go pclntab/vendor, WASM sections/imports, EVM stats/selectors, DOS-COM/PSP- Managed workflow + readiness/coverage scoring- Hopper request/scan, IDA idb/FLIRT, JEB query, crash parse/summary- FS journal, storage/console capture, JS require/export graph- 6 CLI commands, 5 skill-pack recipes- rea_investigate: auto plan (sniff+score+fallback) in 1 call- 163 live tools, 43 test files green## Updated- Version 0.5.0 everywhere

Reverse Engine Anything Plus v0.4.0

Choose a tag to compare

@Alyhnte Alyhnte released this 12 Oct 15:54

Added

  • Frida API tracer with arguments (live proven)
  • UPX info/unpack, ILSpy C# decompile, auto unpack router
  • mitmdump HAR capture (localhost) + behavior timeline
  • Catalog 24 (upx, ilspycmd, mitmproxy)
  • 128 live tools, 32 test files green

Updated

  • Version 0.4.0 everywhere (package, server, health)
  • README refreshed to match (tools, catalog, tests)

Commit

a50624d