mirror of
https://github.com/morluto/rea.git
synced 2026-10-12 02:19:24 +00:00
* fix(ghidra): clear wrong no-return flags before serving a session Auto-analysis can flag ordinary functions as no-return (stream readers, __cxa_guard_acquire, ...). Their callers then end at the call and the decompiler truncates them. Run a postScript before the bridge that clears the flag on functions containing a real RET and re-disassembles the call sites that were terminators. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> * fix(ghidra): refit in place and scope no-return call-site repair Keep function types by refitting the owning functions with fixupFunctionBody instead of removing and recreating them. Only redo call sites whose callee was actually cleared (including thunks to it), skip sites followed by a function start or x86 padding so real end calls do not run on, and always log the result. Co-Authored-By: Claude Sonnet 5.5 <[email protected]> * fix(ghidra): constrain no-return repair to admitted return evidence --------- Co-authored-by: Claude Sonnet 5.5 <[email protected]> Co-authored-by: morluto <[email protected]>
312 lines
18 KiB
JSON
312 lines
18 KiB
JSON
{
|
|
"name": "rea-agents",
|
|
"mcpName": "io.github.morluto/rea",
|
|
"version": "6.3.0",
|
|
"description": "Reverse engineer anything from your terminal or agent with one CLI and MCP server.",
|
|
"license": "MIT",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/morluto/rea.git"
|
|
},
|
|
"homepage": "https://github.com/morluto/rea#readme",
|
|
"bugs": {
|
|
"url": "https://github.com/morluto/rea/issues"
|
|
},
|
|
"keywords": [
|
|
"reverse-engineering",
|
|
"binary-analysis",
|
|
"agents",
|
|
"agent-skills",
|
|
"cli",
|
|
"mcp-server",
|
|
"model-context-protocol",
|
|
"static-analysis",
|
|
"disassembler",
|
|
"decompiler",
|
|
"mcp",
|
|
"hopper"
|
|
],
|
|
"publishConfig": {
|
|
"access": "public"
|
|
},
|
|
"type": "module",
|
|
"bin": {
|
|
"rea": "scripts/rea.mjs",
|
|
"rea-agents": "scripts/rea.mjs"
|
|
},
|
|
"engines": {
|
|
"node": "^22.19.0 || ^24.11.0 || >=26.0.0"
|
|
},
|
|
"packageManager": "[email protected]",
|
|
"files": [
|
|
"dist",
|
|
"install.sh",
|
|
"bridge/hopper_bridge.py",
|
|
"bridge/native/NativeUIChildren.swift",
|
|
"bridge/native/ReaNativeUI.swift",
|
|
"bridge/native/rea_lldb_tracer.py",
|
|
"bridge/process/ProcessRunTokenReader.swift",
|
|
"bridge/process/ProcessRunTokenReaderMain.swift",
|
|
"bridge/ghidra/ReaGhidraBridge.java",
|
|
"bridge/ghidra/ReaGhidraExtensions.java",
|
|
"bridge/ghidra/ReaGhidraPrepareCom.java",
|
|
"bridge/ghidra/ReaGhidraNoReturnFix.java",
|
|
"bridge/android/ReaJadxBridge.java",
|
|
"bridge/mitmproxy/capture.py",
|
|
"scripts/rea.mjs",
|
|
"scripts/electron-active-hook.cjs",
|
|
"scripts/electron-active-hook-boundaries.cjs",
|
|
"scripts/hopper-demo-x11.py",
|
|
"scripts/prepack.mjs",
|
|
"scripts/prepare.mjs",
|
|
"skills",
|
|
"README.md",
|
|
"LICENSE",
|
|
"native/windows/build/manifest.json",
|
|
"native/windows/build/rea-windows-x64.node",
|
|
"scripts/verify-windows-native-artifact.mjs",
|
|
"bridge/pwntools/layout.py",
|
|
"bridge/pwntools/layout_impl.py",
|
|
"third_party/pwntools/README.md",
|
|
"third_party/evmole/README.md",
|
|
"third_party/evmole/LICENSE",
|
|
"bridge/pwntools/decoder_runtime.py",
|
|
"bridge/pwntools/recorded_crash.py",
|
|
"bridge/pwntools/recorded_crash_impl.py",
|
|
"bridge/pwndbg/launch.py",
|
|
"bridge/pwndbg/launch_impl.py",
|
|
"bridge/pwndbg/core_context.py",
|
|
"third_party/pwndbg/README.md",
|
|
"third_party/pwndbg/LICENSE.md"
|
|
],
|
|
"scripts": {
|
|
"deps:check": "node scripts/check-dependency-install.mjs",
|
|
"metadata:generate": "node scripts/run-exclusive.mjs artifacts node scripts/generate-package-metadata.mjs",
|
|
"metadata:check": "node scripts/generate-package-metadata.mjs --check",
|
|
"mcp-registry:check": "node scripts/verify-mcp-registry-metadata.mjs",
|
|
"mcp-catalog:generate": "node scripts/check-dependency-install.mjs && node scripts/run-exclusive.mjs artifacts turbo run artifacts:mcp-catalog",
|
|
"mcp-catalog:check": "node scripts/check-dependency-install.mjs && node scripts/run-exclusive.mjs artifacts turbo run mcp-catalog:check:built",
|
|
"prebuild": "npm run deps:check",
|
|
"build": "node scripts/run-exclusive.mjs artifacts turbo run artifacts:skills --force",
|
|
"precheck": "npm run deps:check",
|
|
"check": "node scripts/run-exclusive.mjs artifacts turbo run typecheck lint format:check knip metadata:check && npm run verify:architecture-guards",
|
|
"precheck:fast": "npm run deps:check",
|
|
"check:fast": "turbo run typecheck lint --output-logs=errors-only",
|
|
"precheck:changed": "npm run deps:check",
|
|
"check:changed": "npm run check:fast && npm run test:changed",
|
|
"precheck:test": "npm run deps:check",
|
|
"check:test": "node scripts/run-exclusive.mjs artifacts turbo run typecheck lint format:check knip metadata:check test:run",
|
|
"precheck:pr": "npm run deps:check",
|
|
"check:pr": "node scripts/run-exclusive.mjs artifacts turbo run typecheck lint format:check knip metadata:check test:run && npm run docs:check && npm run jscpd && npm run scan:todos",
|
|
"precheck:ci": "npm run deps:check",
|
|
"check:ci": "node scripts/run-exclusive.mjs artifacts turbo run typecheck lint format:check knip metadata:check jscpd scan:todos && npm run verify:architecture-guards",
|
|
"build:cached": "node scripts/check-dependency-install.mjs && node scripts/run-exclusive.mjs artifacts turbo run artifacts:skills",
|
|
"format": "oxfmt .",
|
|
"format:check": "oxfmt --check .",
|
|
"lint": "oxlint && npm run verify:module-boundaries",
|
|
"lint:fix": "oxlint --fix && npm run verify:module-boundaries",
|
|
"knip": "knip",
|
|
"jscpd": "jscpd src/ tests/",
|
|
"scan:todos": "node scripts/scan-todos.mjs",
|
|
"start": "node scripts/rea.mjs mcp",
|
|
"test": "npm run test:with-build",
|
|
"test:with-build": "npm run test:prepare && vitest run",
|
|
"test:run": "vitest run",
|
|
"test:local": "node scripts/run-development-tests.mjs local",
|
|
"test:fast": "vitest run --project domain --project services --project adapters --project composition --project conformance --project evaluation",
|
|
"pretest:boundary": "npm run test:prepare",
|
|
"test:boundary": "vitest run --project boundary --project process-boundary --project mcp-boundary --project process-global",
|
|
"pretest:mcp": "node scripts/check-dependency-install.mjs && node scripts/run-exclusive.mjs artifacts turbo run artifacts:skills artifacts:mcp-catalog",
|
|
"test:mcp": "vitest run --project mcp-boundary",
|
|
"pretest:acceptance": "npm run build:cached",
|
|
"test:acceptance": "vitest run --project acceptance",
|
|
"test:changed": "node scripts/run-development-tests.mjs changed",
|
|
"pretest:integration": "npm run test:prepare",
|
|
"test:integration": "vitest run --project boundary --project process-boundary --project mcp-boundary --project process-global --project acceptance",
|
|
"pretest:coverage": "npm run test:prepare",
|
|
"test:coverage": "vitest run --coverage.enabled --coverage.provider=v8",
|
|
"test:ci": "npm run test:coverage -- --reporter=default --reporter=junit --outputFile.junit=test-results.xml",
|
|
"pretest:ci:shard": "npm run test:prepare",
|
|
"test:ci:shard": "npm run test:ci:shard:run",
|
|
"test:ci:shard:run": "vitest run --coverage.enabled --coverage.provider=v8 --coverage.thresholds.lines=0 --coverage.thresholds.functions=0 --coverage.thresholds.branches=0 --coverage.thresholds.statements=0 --reporter=default --reporter=blob",
|
|
"test:ci:merge": "vitest --merge-reports --coverage.enabled --coverage.provider=v8",
|
|
"pretest:verbose": "npm run test:prepare",
|
|
"test:verbose": "vitest run --reporter=verbose",
|
|
"test:watch": "vitest --project domain --project services --project adapters --project composition --project conformance --project evaluation --changed",
|
|
"pretest:watch:all": "npm run test:prepare",
|
|
"test:watch:all": "vitest --changed",
|
|
"typecheck": "tsc --noEmit",
|
|
"verify:test-temp-hygiene": "npm run test:prepare && node scripts/verify-test-temp-hygiene.mjs",
|
|
"verify:hopper": "npm run verify:fixtures && npm run build:cached && node scripts/verify-real-hopper.mjs",
|
|
"verify:hopper:deadlines": "npm run verify:fixtures && npm run build:cached && node scripts/verify-real-hopper-deadlines.mjs",
|
|
"verify:hopper:fat": "npm run build:cached && node scripts/verify-real-hopper-fat.mjs",
|
|
"verify:hopper:fat64": "npm run build:cached && node scripts/verify-real-hopper-fat.mjs --fat64",
|
|
"verify:apple-dispatch": "npm run build:cached && node scripts/verify/apple/dispatch.mjs",
|
|
"verify:native-ui": "npm run build:cached && node scripts/verify-native-ui.mjs",
|
|
"verify:keyed-archive": "npm run build:cached && node scripts/verify/apple/keyed-archive.mjs",
|
|
"verify:macos-bundle": "npm run build:cached && node scripts/verify/apple/macos-bundle.mjs",
|
|
"verify:legacy-simulator": "npm run build:cached && node scripts/verify/apple/legacy-simulator.mjs",
|
|
"verify:architecture-guards": "node scripts/verify/architecture-guards.mjs",
|
|
"verify:adb": "npm run build:cached && node scripts/verify-adb.mjs",
|
|
"verify:ghidra": "npm run build:cached && node scripts/verify-real-ghidra.mjs",
|
|
"verify:ghidra:swift": "npm run build:cached && node scripts/verify-real-ghidra-swift.mjs",
|
|
"verify:ida": "npm run build:cached && node scripts/verify-real-ida.mjs",
|
|
"verify:ghidra:switch": "npm run build:cached && node scripts/verify-real-ghidra-switch.mjs",
|
|
"verify:ghidra:dos": "npm run build:cached && node scripts/verify-real-ghidra-dos.mjs",
|
|
"verify:ghidra:com": "npm run build:cached && node scripts/verify-real-ghidra-com.mjs",
|
|
"verify:ghidra:aarch64-jump-table": "npm run build:cached && node scripts/verify-real-ghidra.mjs --aarch64-jump-table",
|
|
"verify:interface-builder": "npm run build:cached && node scripts/verify/apple/interface-builder.mjs",
|
|
"verify:ghidra:cross-format": "npm run build:cached && node scripts/verify-real-ghidra.mjs --cross-format",
|
|
"verify:ghidra:windows": "npm run build:cached && npm run build:ghidra-windows-fixture && node scripts/verify-real-ghidra-windows.mjs",
|
|
"verify:browser": "npm run build:cached && node scripts/verify-real-browser.mjs",
|
|
"verify:browser:dom": "node scripts/verify-browser-dom-destinations.mjs",
|
|
"verify:browser:network": "npm run build:cached && node scripts/verify-browser-network.mjs",
|
|
"verify:electron": "npm run build:cached && node scripts/verify-real-electron.mjs",
|
|
"verify:inspector": "npm run build:cached && node scripts/verify/inspector/runtime-observation.mjs",
|
|
"verify:javascript-runtime": "npm run build:cached && node scripts/verify/javascript/runtime-observation.mjs",
|
|
"verify:javascript:digests": "npm run build:cached && node scripts/verify/javascript/digests.mjs",
|
|
"verify:javascript:output": "npm run build:cached && node scripts/verify/javascript/output.mjs",
|
|
"verify:application-workflows": "npm run build:cached && node scripts/verify/javascript/application-workflows.mjs",
|
|
"verify:managed": "npm run build:cached && node scripts/verify/managed/conformance.mjs",
|
|
"verify:firmware": "npm run build:cached && node scripts/verify/firmware/analysis.mjs",
|
|
"fixtures:firmware": "node scripts/fixtures/firmware/generate.mjs",
|
|
"verify:android": "npm run build:cached && node scripts/verify/android/analysis.mjs",
|
|
"fixtures:android": "node scripts/fixtures/android/fetch.mjs",
|
|
"verify:agent": "npm run build:cached && node scripts/verify-agent-experience.mjs",
|
|
"verify:hopper:linux": "npm run verify:fixtures && npm run build:cached && node scripts/verify-real-hopper-linux.mjs",
|
|
"verify:setup:linux": "npm run build:cached && node scripts/verify-linux-setup-e2e.mjs",
|
|
"build:fixtures": "node scripts/build-conformance-fixtures.mjs",
|
|
"build:ghidra-windows-fixture": "node scripts/create-ghidra-windows-fixture.mjs",
|
|
"verify:fixtures": "npm run build:fixtures && node scripts/verify-conformance-fixtures.mjs",
|
|
"verify:readiness": "npm run build:cached && npm run verify:fixtures && node scripts/verify-reconstruction-readiness.mjs",
|
|
"verify:package": "npm run build:cached && node scripts/verify-package.mjs",
|
|
"verify:package:windows": "npm run build:cached && node scripts/verify-windows-package.mjs",
|
|
"verify:qwen-client": "npm run build:cached && node scripts/verify-qwen-client.mjs",
|
|
"verify:gemini-client": "npm run build:cached && node scripts/verify-gemini-client.mjs",
|
|
"verify:opencode-client": "npm run build:cached && node scripts/verify-opencode-client.mjs",
|
|
"verify:grok-client": "npm run build:cached && node scripts/verify-grok-client.mjs",
|
|
"verify:omp-client": "npm run build:cached && node scripts/verify-omp-client.mjs",
|
|
"verify:copilot-client": "npm run build:cached && node scripts/verify-copilot-client.mjs",
|
|
"verify:claude-client": "npm run build:cached && node scripts/verify-claude-client.mjs",
|
|
"verify:pi-client": "npm run build:cached && node scripts/verify-native-agent-client.mjs pi",
|
|
"verify:hermes-client": "npm run build:cached && node scripts/verify-native-agent-client.mjs hermes",
|
|
"verify:deepseek-client": "npm run build:cached && node scripts/verify-deepseek-client.mjs",
|
|
"probe:windows-capabilities": "npm run build:cached && node scripts/windows-capabilities.mjs",
|
|
"verify:published": "node scripts/verify-published-package.mjs",
|
|
"config:print": "node scripts/print-mcp-config.mjs",
|
|
"evidence:generate": "node scripts/check-dependency-install.mjs && node scripts/run-exclusive.mjs artifacts turbo run artifacts:managed-evidence",
|
|
"evidence:check": "node scripts/check-dependency-install.mjs && node scripts/run-exclusive.mjs artifacts turbo run evidence:check:built",
|
|
"predocs:dev": "npm run docs:generate",
|
|
"docs:dev": "vitepress dev docs",
|
|
"predocs:build": "npm run docs:generate",
|
|
"docs:build": "vitepress build docs",
|
|
"docs:preview": "vitepress preview docs",
|
|
"docs:generate": "node scripts/check-dependency-install.mjs && node scripts/run-exclusive.mjs artifacts npm run docs:prepare",
|
|
"docs:check": "node scripts/check-dependency-install.mjs && node scripts/run-exclusive.mjs artifacts turbo run docs:check:built",
|
|
"docs:check:built": "node scripts/generate-package-metadata.mjs --check && node scripts/generate-skill-metadata.mjs --check && node scripts/generate-product-catalog.mjs --check && node scripts/generate-completion-ledger.mjs --check && node scripts/check-doc-facts.mjs && node scripts/generate-error-schema.mjs --check",
|
|
"docs:error-schema": "node scripts/check-dependency-install.mjs && node scripts/run-exclusive.mjs artifacts turbo run artifacts:error-schema",
|
|
"prepack": "node scripts/prepack.mjs",
|
|
"prepare": "node scripts/prepare.mjs",
|
|
"verify:asset-catalog": "npm run build:cached && node scripts/verify/apple/asset-catalog.mjs",
|
|
"verify:native-calls": "npm run build:cached && node scripts/verify-native-calls.mjs",
|
|
"verify:native-ui:permissions": "npm run build:cached && node scripts/verify-native-ui.mjs --allow-permission-denial",
|
|
"test:focused": "node scripts/run-development-tests.mjs focused",
|
|
"build:windows-native": "node scripts/build-windows-native.mjs",
|
|
"verify:windows-native:artifact": "node scripts/verify-windows-native-artifact.mjs",
|
|
"prepublishOnly": "npm run verify:windows-native:artifact",
|
|
"verify:windows-native": "node scripts/verify-windows-native.mjs",
|
|
"verify:ghidra:windows:package": "node scripts/verify-packaged-ghidra-windows.mjs",
|
|
"build:ghidra:nativeaot": "node scripts/build-ghidra-nativeaot.mjs",
|
|
"build:fixtures:nativeaot": "node scripts/generate-nativeaot-fixtures.mjs",
|
|
"verify:ghidra:nativeaot": "npm run build:cached && node scripts/verify-real-ghidra-nativeaot.mjs",
|
|
"verify:browser:scripts": "npm run build:cached && node scripts/verify-browser-scripts.mjs",
|
|
"verify:browser:modules": "npm run build:cached && node scripts/verify-browser-modules.mjs",
|
|
"verify:test-discovery": "node scripts/verify-test-discovery.mjs",
|
|
"verify:javascript:recovery": "node scripts/verify/javascript/recovery.mjs",
|
|
"verify:module-boundaries": "node scripts/verify-module-boundaries.mjs",
|
|
"verify:browser:source-maps": "npm run build:cached && node scripts/verify-browser-source-maps.mjs",
|
|
"verify:browser:runtime": "npm run build:cached && node scripts/verify-browser-runtime.mjs",
|
|
"verify:web:network-captures": "npm run build:cached && node scripts/verify-web-network-captures.mjs",
|
|
"verify:binary:layout": "npm run build:cached && node scripts/verify-binary-layout.mjs",
|
|
"verify:evm:interface": "npm run build:cached && node scripts/verify-evm-interface.mjs",
|
|
"verify:recorded:crash": "npm run build:cached && node scripts/verify-recorded-crash.mjs",
|
|
"mcp-catalog:check:built": "node scripts/generate-mcp-tool-catalog.mjs --check",
|
|
"compile": "node scripts/clean-build-output.mjs && tsc -p tsconfig.build.json",
|
|
"artifacts:mcp-catalog": "node scripts/generate-mcp-tool-catalog.mjs",
|
|
"artifacts:skills": "node scripts/generate-skill-metadata.mjs",
|
|
"artifacts:product-catalog": "node scripts/generate-product-catalog.mjs",
|
|
"artifacts:managed-evidence": "node scripts/generate-completion-ledger.mjs",
|
|
"artifacts:error-schema": "node scripts/generate-error-schema.mjs",
|
|
"test:prepare": "node scripts/check-dependency-install.mjs && node scripts/run-exclusive.mjs artifacts turbo run artifacts:mcp-catalog artifacts:product-catalog artifacts:managed-evidence",
|
|
"evidence:check:built": "node scripts/generate-completion-ledger.mjs --check",
|
|
"docs:prepare": "node scripts/generate-package-metadata.mjs && turbo run artifacts:product-catalog artifacts:managed-evidence artifacts:error-schema"
|
|
},
|
|
"lint-staged": {
|
|
"*.{cjs,cts,js,jsx,mjs,mts,ts,tsx}": [
|
|
"oxfmt",
|
|
"oxlint --fix"
|
|
],
|
|
"*.{json,md,yml,yaml}": "oxfmt --no-error-on-unmatched-pattern"
|
|
},
|
|
"dependencies": {
|
|
"@babel/parser": "8.0.4",
|
|
"@babel/types": "8.0.4",
|
|
"@clack/prompts": "1.7.0",
|
|
"@electron/asar": "4.2.0",
|
|
"@jridgewell/trace-mapping": "0.3.31",
|
|
"@lydell/node-pty": "1.1.0",
|
|
"@modelcontextprotocol/client": "2.3.1",
|
|
"@modelcontextprotocol/server": "2.3.1",
|
|
"@xterm/addon-serialize": "0.14.0",
|
|
"@xterm/headless": "6.0.0",
|
|
"@zip.js/zip.js": "2.15.0",
|
|
"ajv": "8.20.0",
|
|
"ajv-formats": "3.0.1",
|
|
"canonicalize": "3.0.0",
|
|
"cross-spawn": "7.0.6",
|
|
"diff": "9.0.0",
|
|
"har-schema": "2.0.0",
|
|
"ignore": "7.0.6",
|
|
"incur": "0.6.1",
|
|
"isomorphic-git": "1.38.7",
|
|
"jsonc-parser": "3.3.1",
|
|
"lossless-json": "4.3.1",
|
|
"parse5": "8.0.1",
|
|
"pino": "10.4.0",
|
|
"playwright-core": "1.58.2",
|
|
"plist": "5.0.0",
|
|
"semver": "7.8.5",
|
|
"smol-toml": "1.9.0",
|
|
"stream-json": "3.7.0",
|
|
"write-file-atomic": "7.0.0",
|
|
"ws": "8.21.0",
|
|
"zod": "4.4.3",
|
|
"evmole": "0.9.3",
|
|
"yaml": "2.9.0"
|
|
},
|
|
"overrides": {
|
|
"vitepress": {
|
|
"vite": "6.4.4"
|
|
}
|
|
},
|
|
"devDependencies": {
|
|
"@fast-check/vitest": "0.5.0",
|
|
"@types/cross-spawn": "6.0.6",
|
|
"@types/node": "26.6.4",
|
|
"@types/semver": "7.7.1",
|
|
"@types/write-file-atomic": "4.0.3",
|
|
"@types/ws": "8.18.1",
|
|
"@vitest/coverage-v8": "5.0.3",
|
|
"husky": "9.1.7",
|
|
"jscpd": "5.0.12",
|
|
"knip": "6.39.0",
|
|
"lint-staged": "16.4.0",
|
|
"oxfmt": "0.72.0",
|
|
"oxlint": "1.87.0",
|
|
"turbo": "2.11.7",
|
|
"typescript": "7.0.2",
|
|
"vitepress": "1.6.4",
|
|
"vitest": "5.0.3"
|
|
}
|
|
}
|