mirror of
https://github.com/morluto/rea.git
synced 2026-11-05 06:45:22 +00:00
Open
opened 2026-10-31 01:04:51 +00:00 by bsakaguchi
·
0 comments
No Branch/Tag specified
main
codex/procedure-reference-stacked
release-please--branches--main--components--rea-agents
release-please--branches--main--components--rea-agents--release-notes
codex/kuna-independent-retry
codex/byte-search-overlay-coverage
codex/open-failure-target-receipt
codex/kuna-xref-evidence
codex/ghidra-ambiguous-procedure-recovery
codex/function-source-bundle
codex/trace-function-integration-prototype
codex/snapshot-source-closure
codex/recorded-evidence-array-pages
codex/evidence-recovery-redesign
codex/trace-feature-address-scope
codex/call-discovery-scope
codex/ghidra-literal-candidate-evidence
codex/decompile-directory-independent-retry
codex/retry-provenance-base
codex/value-flow-capability-experiment
codex/ghidra-containing-instruction
cursor/readme-discord-button-ef9f
dependabot/github_actions/actions/setup-node-7.1.0
dependabot/github_actions/actions/upload-artifact-7.0.2
dependabot/npm_and_yarn/npm-minor-and-patch-d8d97ce6df
codex/kuna-1989
fix/8559-native-ui-fixture-ownership
fix/8555-go-verifier-mcp-ownership
codex/provider-capability-recovery
fix/8642-rizin-target-stdin
codex/ghidra-memory-effect-scope
codex/ghidra-annotation-entry-selector
codex/ghidra-readonly-recovery
codex/ghidra-regex-verifier-recovery
codex/evidence-discovery-view-guidance
fix/8545-bulk-append-overflow
fix/8428-navigation-refusal-alternatives
codex/address-context-recovery
codex/matching-member-limitations
codex/unknown-scope-contract
codex/evidence-view-guidance
feat/8373-native-trace-views
codex/ghidra-snapshot-verifier-binding
codex/elf-export-visibility
codex/evidence-view-recovery
codex/native-reference-cli-help
codex/provider-candidate-observation-scope
codex/kuna-session-verification
codex/ghidra-switch-lifetime-guidance
codex/pseudocode-paging-discovery
codex/clarify-evidence-view-support
codex/kuna-xrefs-selector-recovery
codex/context-capacity-recovery
codex/evidence-closure-large-links
codex/same-function-evidence-identity
codex/ghidra-verifier-inspected-jdk
codex/audit-guided-workflows
codex/crash-prompt-retained-dossiers
codex/analysis-view-error-recovery
codex/kuna-verifier-target-selection
codex/ghidra-selected-project-call-coverage
codex/docs-native-analysis-scope
codex/ghidra-java-socket-boundary
codex/ghidra-retained-snapshot-verifier
codex/ghidra-search-inventory-facts
fix/8284-zero-argument-parameter-bindings
fix/8198-ui-action-handler-offset
fix/8257-elf-entry-label-identity
fix/8304-deferred-output-schema-projection
fix/8277-call-path-computed-target-uncertainty
fix/pr-8089-conflicts
fix/ci-static-duplicate-export
dependabot/npm_and_yarn/lint-staged-17.6.0
dependabot/github_actions/actions/download-artifact-8.0.2
dependabot/npm_and_yarn/write-file-atomic-8.0.0
dependabot/npm_and_yarn/canonicalize-5.1.0
dependabot/github_actions/actions/cache/restore-6.1.0
dependabot/npm_and_yarn/toon-format/toon-4.4.0
dependabot/github_actions/actions/deploy-pages-5.0.1
codex/review-fixes-pr-2403
codex/review-fixes-pr-2400
codex/process-terminal-width
codex/test-brittleness-cleanup
verify/7167-browser-connect-macos
fix/7167-browser-connect
feat/native-matching-allowance-setting
feat/browser-scenario-dry-run
test/managed-caller-parameters-20261024
codex/parser-fortythird-boundaries
fix/6926-pinvoke-platform-decorations-20261023
fix/6889-har-body-encoding-20261023
fix/6888-sqlite-schema-budget-20261023
fix/dependency-security-gates-6708
cursor/evidence-overwrite-rebase-b4ac
feat/4057-verify-native-exports
fix/windows-acl-observer-overhead-20261022
cursor/erlang-beam-restack-4476
cursor/pe-certificate-review-bf32
fix/6116-javascript-application-fs-errors
fix/6061-unmapped-runtime-script-unknown
feat/browser-scenario-summary
fix/pe-certificates
codex/verify-3407
cursor/rebase-5699
cursor/rebase-5352
cursor/rebase-5600
cursor/fix-cli-schema-omission-10a8
codex/audit-hopper-shutdown-reasons-20261021
fix/demangle-swift-omitted-record
fix/nib-boolean-value-types
cursor/cancellation-partial-observation-a5ac
fix/ib-object-limit-reasons
fix/electron-fuse-limit-advice
fix/kuna-doctor-dangling-cache
fix/fixed-budget-refusal-advice
fix/js-ipc-listener-dedup
fix/js-return-member-provenance
fix/dmg-integrity-retry-advice
fix/ida-doctor-readiness
fix/kuna-version-probe-output-drain
fix/legacy-swift-runtime-name-matching
fix/dylib-lazy-load-commands
fix/browser-scenario-startup-cancel
fix/swift-nested-punycode-classification
fix/compare-unselected-scopes
fix/objc-method-budget-coverage
fix/dmg-mounted-root-observations
audit/ci-tests-20261019-round2
release/6.7.0
fix/wabt-cleanup-retry-resolution
fix/electron-fuse-elf-pe-architecture
fix/native-plist-descriptor-ownership
fix/kuna-caller-cleanup-ownership
experiment/atomic-codemode-20261016
review/first-contributor-3776
fix/call-resolution-full-read-cycles
fix/member-mutation-selection-repeat
experiment/atomic-re-tools-20261015
perf/member-mutation-lazy-origins
perf/static-network-mutation-index
fix/hopper-startup-lifecycle
audit/3050-windows-proof-20261015
feat/windows-window-capture-2183
audit/3049-windows-proof-20261015
audit/3735-macos-fixtures-20261015
fix/batch-decompile-null-pseudocode
fix/kuna-inventory-honors-jobs
experiment/browser-codemode-tool-design-20261015
fix/hopper-clean-runtime-argv
codex/review-2049-27f1b367
review-fixes/pr-2787-routing
fix/3360-scoped-this-emitters
fix/3367-replaced-global-effects
fix/3838-compact-any-value-items
test/hopper-download-probe-20261015
codex/windows-runtime-creation-red-green-20261015
codex/windows-readonly-root-red-green-20261015
codex/windows-root-share-red-green-20261015
codex/exp-1685-win-mcp-startup
codex/bug-sweep-20261015
investigate/2190-windows-package-phases
investigate/3543-macos-cli-deadline
perf/3281-reverse-tools-feedback-quality
fix/3406-hopper-doctor-fixture
fix/3341-wrapper-require-test-context
fix/3301-owned-uninstall-fixtures
fix/3164-compiler-input-ownership
fix/pcap-cleanup-stdout-newline-20261014
perf/interface-builder-summary
codex/review-fixes-pr-1977
fix/ghidra-effective-jvm-platform
fix/docs-turkish-rust-link-20261013
fix/main-maintenance-ci-20261010
fix/recover-binary-session-process-effects
codex/review-fixes-pr-2457
codex/ci-required-cancellation-gate
fix/main-format-baseline-20261013
fix/setup-preserve-entry-fields
cursor/restore-main-checks-1ffc
fix/ghidra-bridge-hashmap-import
codex/shared-ci-jadx-json-default-20261013
codex/shared-ci-ghidra-test-groups-20261013
codex/shared-ci-java-fixture-format-20261013
codex/fix-intrinsic-invocation-boundaries
test/release-preflight-reusable-jobs
test/js-parameter-provenance-expectation
fix/linux-hopper-verification-current
test/2419-ghidra-elf-probe-size
followup/pr-1544-native-ida
codex/fold-pr-2230-contribution
docs/readme-responsible-use
fix/issue-2064
fix/issue-2050
fix/issue-2053
fix/issue-1968
fix/issue-1945
experiment/codemode-bridge-20261011
fix/tool-effects-negative-wording-1904-20261012
fix/1842-electron-interop-provenance
feat/recover-javascript-multi-input
refactor/website-i18n-prep
fix/nativeaot-pe-virtual-extent
fix/browser-verifier-ci-hang
fix/pe-resources-input-selection
docs/beginner-friendly-guides
docs/beginner-setup-guide
fix/javascript-analysis-worker-1563
fix/1649-ghidra-duplicate-names
fix/javascript-export-keys-integration-1369
test/maintenance-boundary-contracts-20261011
review/javascript-export-keys-1369
review/process-live-progress-1483
test/javascript-1495-growth-ratio
fix/ci-escape-timing
docs/normalized-terminal-geometry-1450
release/6.3.0
archive/release-6.3.0-pr1381
release/6.2.0
fix/electron-preload-dynamic-override
fix/javascript-self-referential-bundler-edges
release/6.1.0
cursor/grok-client-cherry-pick-0b56
feat/signature-posture
feat/dyld-shared-cache
feat/artifact-integrity-policy
feat/pkg-inventory
release/6.0.0
chore/sync-release-5.0.0
release/5.0.0
cursor/cloud-agent-node-787e
fix/javascript-xhr-open-endpoints
review/pr-711-realpath-fallback-wording
cleanup/replay-confinement
codex/test-suite-performance
codex/issue-foundations
codex/address-open-issues-2026-07-20
agent/javascript-vite-rollup-esbuild-adapters
agent/process-cleanup
agent/triage-integration
agent/unknown-commands-registry
feat/mcp-identity-metadata
morlvps/issue_cleanup
codex/installer-redesign
morl/roadmap-investigation-core
morl/roadmap-investigation-docs
release-please--branches--main--components--rea
rea-agents-6.8.0
rea-agents-6.7.0
rea-agents-6.6.0
experiment/atomic-codemode-wait-runtime-20261016
rea-agents-6.5.0
rea-agents-6.4.0
rea-agents-6.3.0
rea-agents-6.2.0
rea-agents-6.1.0
rea-agents-6.0.0
rea-agents-5.0.0
rea-agents-4.1.0
rea-agents-4.0.1
rea-agents-4.0.0
rea-agents-3.2.1
rea-agents-3.2.0
rea-agents-3.1.0
rea-agents-3.0.0
rea-agents-2.7.0
rea-agents-2.6.0
rea-agents-2.5.1
rea-agents-2.5.0
rea-agents-2.4.0
rea-agents-2.3.0
rea-agents-2.2.0
rea-agents-2.1.0
rea-agents-2.0.0
rea-agents-1.7.0
rea-agents-1.6.0
rea-agents-1.5.0
rea-agents-1.4.0
rea-agents-1.3.0
rea-agents-1.2.0
rea-agents-1.1.0
rea-agents-1.0.0
rea-agents-0.5.0
rea-agents-0.4.0
rea-agents-0.3.0
rea-0.2.1
rea-0.2.0
Labels
Clear labels
area: bridge
area: bridge
area: build
area: build
area: build
area: cli
area: domain
area: evidence
area: mcp
area: native
area: providers
area: runtime
area: server
area: setup
area: tests
bug
design
documentation
enhancement
enhancement
enhancement
experiment
help wanted
i18n
invalid
P0: critical
P1: high
P2: medium
P2: medium
P2: medium
P3: low
performance
provider-request
pull-request
Mirrored from GitHub Pull Request
question
roadmap
triage
No labels
area: bridge
area: bridge
area: build
area: build
area: build
area: cli
area: domain
area: evidence
area: mcp
area: native
area: providers
area: runtime
area: server
area: setup
area: tests
bug
design
documentation
enhancement
enhancement
enhancement
experiment
help wanted
i18n
invalid
P0: critical
P1: high
P2: medium
P2: medium
P2: medium
P3: low
performance
provider-request
pull-request
question
roadmap
triage
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set.
Reference
morluto/rea#5212
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
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/morluto/rea/pull/2418
Author: @ltfish
Created: 10/13/2026
Status: 🔄 Open
Base:
main← Head:feat/angr-provider📝 Commits (10+)
8322837feat(angr): add angr MCP analysis provider8af09a8feat(angr): expose knowledge-base edits and decompilation flavor190abecfix(angr): verify targets by digest, end owned servers on failed close, degrade on unlisted call edges1d335f0fix(angr): share the regex worker, derive effects from transport, carry loader optionscf733a3fix(angr): roll back failed annotations, settle cancelled edits, keep project and provenance state982892afix(angr): restore annotation edits the server applied while the reply was loste57cb7dfix(angr): roll back annotations when the refreshed dossier failsaeb8812fix(angr): refuse unrepresentable target loader selections5925211test(angr): align loader controls with explicit slice refusalbadc7edfix(angr): preserve shared-state and edit failure semantics📊 Changes
68 files changed (+6797 additions, -54 deletions)
View changed files
📝
.agents/skills/reverse-engineer-anything/SKILL.md(+17 -1)📝
AGENTS.md(+2 -2)📝
README.md(+3 -2)📝
THIRD_PARTY_NOTICES.md(+1 -0)➕
docs/angr-provider.md(+118 -0)📝
docs/architecture.mermaid(+6 -0)📝
docs/index.md(+1 -1)📝
docs/installation.md(+11 -11)📝
docs/native-investigation.md(+2 -1)📝
docs/readme/README_ar.md(+1 -1)📝
docs/readme/README_de.md(+1 -1)📝
docs/readme/README_el.md(+1 -1)📝
docs/readme/README_es.md(+1 -1)📝
docs/readme/README_fa.md(+1 -1)📝
docs/readme/README_fr.md(+1 -1)📝
docs/readme/README_id.md(+1 -1)📝
docs/readme/README_it.md(+1 -1)📝
docs/readme/README_ja.md(+1 -1)📝
docs/readme/README_ko.md(+1 -1)📝
docs/readme/README_ml.md(+1 -1)...and 48 more files
📄 Description
Summary
This PR adds angr as a new native binary analysis provider for REA.
This adapter provides two environment variables:
REA_ANGR_PYTHONspecifies the Python whereangr[llm]is installed;REA_ANGR_MCP_CONFIGspecifies the path to a JSON configuration file, where you may specify the angr MCP mode (stdio vs http).This adapter exposes basic static analysis features in angr via MCP, which includes CFG recovery, string listing, function listing, call graph query, data cross-referencing (xrefs), disassembly listing, and decompilation (C pseudocode generation).
This PR directly addresses some aspects of https://github.com/morluto/rea/issues/2258. Additionally, angr parses Go symbols when loading Go binaries (requested by https://github.com/morluto/rea/issues/2297).
angr supports decompiling Rust binaries to Rust pseudocode and Go binaries to Go pseudocode. We will expose it to REA in a later PR.
Problem and expected behavior
angr is a widely used open-source framework for binary analysis.
It would be nice for REA to support it as a native binary analysis provider.
Change and scope
Details.
An MCP-client adapter in
src/angrthat implements the following components:AngrConfiguration, which readsREA_ANGR_PYTHONorREA_ANGR_MCP_CONFIG.REA_ANGR_PYTHONspecifies an absolute path to a Python interpreter withangr[llm]installed.REA_ANGR_MCP_CONFIGspecifies the path to a JSON configuration file where you may configure to use either the stdio mode or the http mode for the angr MCP server. We restrict the MCP HTTP endpoint tolocalhost,127.0.0.1, and[::1].AngrMcpConnection, which uses the pinned MCP client SDK (StdioClientTransportorStreamableHTTPClientTransport) and decodes FastMCP's structured results.AngrSessionClient, which serializes requests, connects on first use, verifies the upstream tool catalog, callsload_binaryandget_cfgonce, checks that the server reports the selected target path (realpath-compared), and closes the project it loaded. Failed close retains the project id ascleanupResources.AngrOperationRunner, which maps operations to upstream tools and REA result types.The current version PR does not ship or install angr with REA.
We can create a new PR if you want to automatically install angr whenever REA needs to analyze native binaries.
Not included.
binary_overview, typed references, comments, referenced strings and names, locals, or basic-block successors: angr's MCP server does not yet report them, and the dossier marks those facets as unknown rather than empty. We can create a new PR later to expose such information.rea setupinstallation of angr. Doctor validates the registration only; the angr installation and its MCP extra are checked at analysis start.Scope decision. New provider; We request the maintainer scope decision in this PR.
The adapter exposes no target execution, injection, mutation, or protection recovery, and the upstream server's edit tools are never called.
Contract and boundary impact
src/angr/is the angr protocol interpretation;AnalysisProviderRegistry(src/composition/binary.ts) is the earliest changed stage. Shared contracts are unchanged.--provider angrandopen_binary.provider_id: "angr"do not need any schema changes. The product catalog has a newangrprovider entry with the declared operations.angr[llm](FastMCP). Declines non-executable formats. No host restriction beyond angr's own.provider.id = "angr", the live analysis profile (mode, transport,auto_load_libs, CFG options, registration digest), raw upstream observations with theirproject_id, and partial Evidence on failure after completed upstream replies. Relationship coverage ispartialwith the indirect-call limitation.scripts/lib/catalog-core.mjsandcatalog-builders.mjsadd theangrprovider to the generated catalog; no new packaged files (the adapter is compiled intodist/).rea setuppublishes a validREA_ANGR_PYTHONorREA_ANGR_MCP_CONFIGinto agent registrations through the existing doctor inspection path. Authored skill text in.agents/skills/reverse-engineer-anything/SKILL.mdgains an angr paragraph.Expected effects:
python -m angr.mcp; attached mode connects to a caller-started loopback server.)Evidence and regression coverage
src/angr/AngrConfiguration.test.ts: interpreter shortcut expansion, direct andmcpServersregistrations, rejection of remote endpoints, URL credentials, owned HTTP, malformed and absent files; FastMCP result decoding and tool-error surfacing.src/angr/AngrProvider.test.ts: availability codes (not_configured,executable_missing, available), target support matrix, live profile that does not persist the interpreter path.src/angr/AngrDoctor.test.ts: registration environment for setup, credential redaction, invalid and unconfigured states.tests/composition/angrProvider.test.ts: discovery without connecting, one project per session with verified close, dossier body ranges and relationships, single call-graph fetch, invalid selectors as input errors versus provider-derived selectors as protocol errors, wrong loaded file and missing upstream tools, cancellation draining with retained partial Evidence, incomplete cleanup retained for retry.tests/conformance/angr/providerContracts.test.ts: every operation serializes against its advertised output contract; capabilities advertise no UI or mutation effects.tests/fixtures/angrMcp.ts: recording producer at the connection seam, rejecting unmodeled tools.scripts/verify-real-angr.mjs(npm run verify:angr): real-provider verification through the production CLI and MCP server.main,open_binarywithprovider_id: "angr"fails with provider selection errors; the adapter is new.rea function fauxware main --provider angr --jsonreturns a dossier whoseprocedure.bodyis{"available": true, "ranges": [{"start": "0x40071d", "end": "0x4007d4"}], "total_bytes": 184, ...}, 47 assembly lines, angr pseudocode,callers: [__libc_start_main],callees: [puts, read, authenticate, accepted, rejected], andrelationship_coverage.status: "partial".rea providers --jsonlistsangrwithavailability.status: "available"anddiagnostics.live_connection_probed: false.10.0.4.dev0, FastMCP 4.0.10) with an x86-64 ELF fixture; no angr release, macOS, Windows, PE, Mach-O, or non-x86 run yet. The simulated producer does not establish real angr behavior beyond the tested behaviors. angr's MCP server records only data xrefs, soxrefsexcludes call sites (documented, with guidance toprocedure_callers).For evidence-bearing changes:
Validation performed
npm run test:local -- src/angr/*.test.ts tests/composition/angrProvider.test.ts tests/conformance/angr/providerContracts.test.ts— 5 files, 26 tests passed.npm run test:local(dirty import graph) — 424 files, 5494 tests passed, 3 skipped.npm run check:fast— typecheck and lint passed.npm run docs:check— passed, including README link parity across the 18 translated READMEs.npm run verify:test-discovery— all 1003 test files discovered exactly once.REA_ANGR_PYTHON=.../angr-venv/bin/python node scripts/verify-real-angr.mjs --target binaries/tests/x86_64/fauxware --procedure main— passed (headless stdio): production CLI function Evidence; MCP open,analyze_function,list_procedures,list_strings,procedure_address,procedure_assembly,procedure_callees,procedure_callers,search_procedures,procedure_pseudo_code,read_function_instructions,search_strings,xrefs; invalid address and unresolvable procedure rejected asinvalid_request; CLI/MCP parity of procedure identity, pseudocode, and assembly; original binary digest unchanged.REA_ANGR_MCP_CONFIG={"url":"http://127.0.0.1:8765/mcp","mode":"attached"}against a caller-startedpython -m angr.mcp --transport http --port 8765— passed; owned project ids absent from the server'slist_projectsafter close.rea doctor --provider angr --json—angr-registrationhealthy withregistrationEnvironment: {"REA_ANGR_PYTHON": ...}; no process launched.Compatibility, safety, and release
REA_ANGR_PYTHONandREA_ANGR_MCP_CONFIG; existing providers and selection behavior are unchanged. With automatic selection, a configured angr becomes one more candidate, so hosts with several configured engines may seeambiguousand need an explicit--provider, which is the existing rule.feat(angr)subject. Catalog gains a provider; packagefilesunchanged.Author readiness
Human owner: @ltfish
Before merge
type(scope): outcome.Summary by CodeRabbit
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.