Skip to main content

reverse-engineer-anything

Reverse engineer native, managed, Electron/JavaScript, packaged, firmware, and browser targets with REA, and build agent environments (AgentEnv bundles) of web applications from a live instance or a capture. Use shipped-artifact or requested runtime evidence to explain features, compare versions, decompile code, or guide a reconstruction. Skip REA for ordinary source-repository architecture analysis.

소스 정보

저장소
morluto/rea
최근 소스 활동
2026년 10월 29일 10:46
감지된 SKILL.md 언어
영어
스타
405,774
포크
101,625

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
8 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
reverse-engineer-anything
description
Reverse engineer native, managed, Electron/JavaScript, packaged, firmware, and browser targets with REA, and build agent environments (AgentEnv bundles) of web applications from a live instance or a capture. Use shipped-artifact or requested runtime evidence to explain features, compare versions, decompile code, or guide a reconstruction. Skip REA for ordinary source-repository architecture analysis.
metadata
{"version":"55"}
# REA Use REA when a claim depends on a shipped binary or package, decompilation, requested runtime evidence, or comparison with behavior not established by available source. For ordinary analysis of a complete source repository, use normal repository tools and do not run REA readiness or provider commands. ## Connect only when needed Installing this skill supplies instructions; it does not register the REA MCP server, install analysis engines, or add tools to an already-running agent. The exception is a Claude Code or Codex plugin install: the plugin bundles this skill and registers its own `rea` server, outside the state that `rea setup` and `rea doctor` manage. If REA tools are available and their registration is not known to be stale, proceed directly to the target. Do not run diagnostics or setup before every investigation. Use the connected server's actual tool list and input schemas; a skill installed from repository main may describe capabilities absent from an older npm release. Keep complete inline Evidence when that server does not advertise retained references. If tools are absent, a call is blocked by the client, or a required provider is unavailable, read [connection and recovery](references/connection-and-recovery.md). Diagnose the observed blocker, continue useful supported work, and resume the original task after repair. Client approval, shell PATH, registration and engine availability have different remedies; avoid repeating setup for all of them. If the host times out without a REA result, do not repeat the unchanged call or assume work stopped. Read the recovery guide's deadline distinction before retrying. If the MCP connection drops, retry that call once only when it is safe to repeat or known not to have started. If it may already have changed the target, or it fails again, tell the user and ask them to restart the MCP client. If REA could not start its connection, retry once, then tell the user and ask them to restart the MCP client. Do not retry a startup failure that returns the same unchanged result. For plugin installs, follow [plugin recovery](references/connection-and-recovery.md#rea-installed-as-a-client-plugin). For setup-owned registrations, run `rea doctor` when REA could not start or tools stay missing after that restart. For `cleanup_incomplete`, a retryable capacity limit, or `configuration_invalid`, follow the recovery guide's ladder before asking for a restart. Read that guide before a second repair attempt. Choose the installation owner before repairing registration. Plugin installs use [plugin recovery](references/connection-and-recovery.md#rea-installed-as-a-client-plugin); only setup-owned registrations use the guide's [registration repair plan](references/connection-and-recovery.md#repair-registration-when-needed). A plugin-only doctor result of `missing` does not call for `rea setup`. REA setup never installs or upgrades Node.js, npm, Homebrew, Java, Ghidra, IDA, JADX, Kuna, Binwalk, or Unblob. Use existing prerequisites; do not install unrelated software to repair MCP registration. For an unsupported client, use manual stdio registration with an existing installation’s absolute runtime and entry script, or continue through the CLI. A concrete CLI fallback for an operator-supplied JavaScript tree or ASAR is: ```bash npx -y rea-agents@latest analyze-javascript-application /absolute/path/to/app --json ``` No MCP registration or native engine is required. Read the returned Evidence, graph, limitations, and unknowns with the same care as an MCP result; the CLI returns the Evidence record directly. This fallback does not establish that MCP is configured. Native CLI tasks still require their selected engine. Prefer an existing `rea` CLI. When none is installed and REA package acquisition is within the authorized scope, use `npx -y rea-agents@latest` in its place from a trusted directory outside the target project, with absolute target paths. Managed setup binds the current installation directly; retain its runtime and package cache entry, or restore that installation before repairing its registration. For setup-owned registration, configuration repair starts with a read-only setup plan; show paths, backups and skill replacement before applying authorized changes. Preserve existing approval and target-execution boundaries. ## Route the target first Choose the first tool from the target the user supplied. Use `open_binary` for active-target native or archive workflows; target-free tools take their own explicit path or endpoint and do not need it. - ASAR or extracted JavaScript/Electron tree: `analyze_javascript_application`. - Archive/package member inventory (ZIP/APK/IPA/MSIX/AppX, DMG, or a PyInstaller executable): `open_binary` with the supplied local path; use `inspect_artifact` when its graph and findings help answer the question. A PyInstaller CArchive is the application layer; the bootloader is only the native prefix. Start with `detail: "summary"` for large inventories, then use retained inventory views for selected member fields/pages. A complete small inventory can cost less than extra calls and schemas. Runtime options are metadata, not files. Compact delivery still inventories and hashes members. See the [Python packaged applications guide](https://github.com/morluto/rea/blob/main/docs/python-packaged-applications.md). - Apple app plist, Interface Builder, asset catalog, or keyed archive resources: `open_bundle_resources`, then the selected resource tool. This does not require `CFBundleExecutable` or a deep provider. Resource sessions have no executable digest or binary snapshot; use `open_binary` for native code. - Android APK code, classes, methods, or incoming references: `inspect_android_package`, then focused Android tools when advertised. Archive member inventory still uses the archive route above. - Managed PE/CLI assembly: `inspect_managed_artifact`. - Firmware image: `inspect_firmware_regions` when advertised. Use `extract_firmware` when extraction is requested, with a caller-selected new absolute output directory. These tools use caller-supplied Binwalk/Unblob on Linux; see the [firmware guide](https://github.com/morluto/rea/blob/main/docs/firmware-analysis.md). - ESP32-family app or bootloader image (`0xE9` magic): `inspect_artifact` without a provider; see the ESP section of `references/native-and-artifacts.md`. - .NET NativeAOT PE/ELF: native Ghidra analysis. Native code can yield pseudocode; consult the NativeAOT workflow in `references/native-and-artifacts.md` for optional metadata recovery and its supported host/layout boundary. - Native program behavior, live calls, instrumentation, or command-run effects: choose the matching [native runtime workflow](references/runtime-observation.md#native-runtime-questions). `open_binary` and `trace_native_values` establish static facts; they do not observe execution. Runtime tools have distinct launch, attach, mutation and cleanup effects, and do not require a preliminary static session unless their own contract says so. - User-owned browser page already open: `list_browser_targets`. - Browser action the agent must perform (click, type, navigate): `capture_browser_scenario` with declared actions. See [runtime observation](references/runtime-observation.md) for connect/launch and the focused follow-up browser tools. - Agent environment (AgentEnv bundle) of a web application: read [environments](references/environments.md) before recording; it records with `capture_browser_scenario` and writes the bundle with `export_environment_bundle`. - Fiddler Everywhere traffic or a native `.saz` capture: read the [Fiddler workflow](references/runtime-observation.md#fiddler-everywhere-traffic-debugging). Inspect saved SAZ with `inspect_web_network_capture` and `format: "saz"`; connect Everywhere's separate MCP server for live traffic. - Retained HAR/SAZ/native mitmproxy/aioquic qlog capture: `inspect_web_network_capture`. Select original record ordinals when useful; inspect producer fields and byte/number sidecars without fetching recorded URLs or claiming live attribution. HAR/SAZ/qlog old-generation heap is `REA_CAPTURE_DECODER_OLD_GENERATION_MIB` (default 192 MiB, floor 8, maximum 16384), set where REA starts. Host memory and `NODE_OPTIONS` do not raise it. See [historical captures](https://github.com/morluto/rea/blob/main/docs/web-network-captures.md) for the exact upstream profile and credential exclusions. Qlog support starts with aioquic 1.5.0 JSON 0.3; stream coverage and endpoint loss declarations do not recover bodies or establish network loss. Prefer detail summary, then kind qlog trace/stream pages; select one trace, stream ID and direction for contribution/range pages. Facts retain all-recorded-events-before-selection scope. Other qlog layouts and PCAP correlation are unsupported. - User-owned Electron runtime already open: `list_electron_targets`. Before an electron-main Inspector attempt, check packaged fuses with `inspect_electron_fuses`; disabled `EnableNodeCliInspectArguments` means the app ignores `--inspect`. - Packet-field discovery: `inspect_packet_fields` searches installed protocols and field names/types before choosing fields for `inspect_packet_capture`. Query/page the relevant records; registrations do not establish observed traffic. - Recorded packet captures: `inspect_packet_capture` with selected TShark fields, display filters and decode-as rules. Requires Linux, util-linux prlimit and TShark 4.x on an absolute `PATH` entry or via the optional absolute `REA_TSHARK_COMMAND` override; see [capture guide](https://github.com/morluto/rea/blob/main/docs/packet-captures.md). Packet limits count input packets before filtering. Output defaults to 50 matching frames; use `match_offset` / `match_limit` for later pages, or explicit null limit for complete matching output. Preserve the source digest across pages. This does not perform live capture. For address/DNS/SNI/protocol summaries use `inspect_pcap_capture` with MCP detail summary, then retained kind pcap pages. Requires Wireshark 4.x tshark and capinfos, with Linux prlimit or Windows Job Objects; see [packet summaries](https://github.com/morluto/rea/blob/main/docs/pcap-analysis.md). Select an exact DNS question for address pages; page exhaustion does not prove network completeness. This reads recordings and does not acquire traffic. - Decoder discovery: `inspect_signal_decoders` searches installed decoder IDs or selected decoder help, including channels and options. Query and page the relevant details before choosing settings; this does not scan hardware. - Recorded logic/signal traces: `decode_signal_recording` with explicit decoder, channel and protocol settings. On Linux with util-linux prlimit, supply sigrok-cli 0.7.2 through `REA_SIGROK_COMMAND`; see [recording guide](https://github.com/morluto/rea/blob/main/docs/signal-recordings.md). Output defaults to 50 literal lines; select annotation classes and page with `line_offset` / `line_limit`, or explicit null for all remaining output. Window counts are display lines, not annotations or samples. Preserve source digests across pages. This reads existing files; it does not acquire hardware signals. - Explicit local WebAssembly artifact: `inspect_wasm_artifact`. Supply WABT 1.0.42 through `REA_WABT_BIN_DIRECTORY`; retain exact byte/tool identity and decoded WAT. Select JavaScript glue and candidate paths explicitly and preserve URL/path ambiguity. No implicit fetch or target execution; WAT is not original source. See the [WASM guide](https://github.com/morluto/rea/blob/main/docs/wasm-artifacts.md). - Explicit local Android APK (or ZIP/AAB) signing: `inspect_apk_signature`. Prefer its summary or selected signer/digest/lineage page; retain complete Evidence and use `inspect_analysis_view` kind `apk-signature` for follow-ups. Reports which schemes are present (v1 JAR, v2, v3, v3.1), each signer's certificate SHA-256 fingerprint (v1 included, from its PKCS#7 block), v3 key-rotation lineage, source stamp, and whether each signed digest still matches the bytes (self-consistency). This is identity and integrity, not a trust or authenticity verdict. See the [APK signature guide](https://github.com/morluto/rea/blob/main/docs/apk-signature.md). - Explicit local EVM bytecode carrier: `inspect_evm_interface` with caller-selected `raw` or `hex` encoding. The owned worker deadline is `timeout_ms` (default 30000 ms, range 1..2147483647, next call). It does not raise the fixed byte, address-space, or CPU allowances. Preserve carrier/decoded digests and treat selectors, argument strings and mutability as inferred candidates; this performs no chain lookup or target execution. For the complete inferred interface without hex or duplicate stdout, discover support and select `detail: "summary"`; complete Evidence stays retained under its original identity. Use the returned `parent_evidence_id` for exact function or `bytecode_hex`/stdout/stderr pages. Candidate coverage does not establish interface completeness. See the [EVM bytecode guide](https://github.com/morluto/rea/blob/main/docs/evm-bytecode.md). - Embedded Go compiler, module or build-setting metadata: `inspect_go_binary` with the explicit local file. This built-in target-free inspection requires no Go installation or disassembler. Preserve raw module bytes and source ranges; absent metadata does not prove a binary is not Go, and unparsed text records remain explicit. See the [Go binary guide](https://github.com/morluto/rea/blob/main/docs/go-binaries.md). - Embedded CUDA/HIP code objects: `inspect_gpu_code_objects`; inventory targets first, then decode selected payloads and query retained GPU Evidence. - Bundled GGUF or safetensors model declarations: `inspect_model_artifact` with the explicit local file. Default header hashing leaves full-file identity unknown; `hash: "full"` additionally reads all weights for SHA-256. MCP returns retained summaries; optional `view` selects one page in the initial call. Use `inspect_analysis_view` kind `model-artifact` for batched metadata keys, tensor names or type totals, selected fields and pages. Preserve header-scoped indices and array preview omissions; do not infer model behavior from declared architecture or tensor types. See the [model file guide](https://github.com/morluto/rea/blob/main/docs/model-artifacts.md). - Unity IL2CPP names, member owners and string literals from `global-metadata.dat`: `inspect_il2cpp_metadata` with the explicit local file; MCP defaults to compact counts. Query sections, images, types, methods, fields, properties, events, parameters or string_literals through `inspect_analysis_view` with the returned `parent_evidence_id`, using exact filters, batch indices and selected fields. Parameters accept `method_indices`, avoiding a scan of all parameter pages. Missing collections in historical Evidence remain unknown. Versions 24, 27, 29, 31 and 39; no Unity, IL2CPP binary or disassembler is run. Unrecognized magic (possibly encrypted) and other versions are unsupported. Optional matching `binary_path` enables static native addresses and type references; query `method_addresses` with indices or addresses/states, preserving every shared-body method and both artifact identities. Without a linked binary native counts remain unknown. Byte-pattern fallback is inferred; no runtime behavior or same-build pairing is proved. See the [IL2CPP metadata guide](https://github.com/morluto/rea/blob/main/docs/il2cpp-metadata.md). - Embedded cargo-auditable Rust dependency metadata: `inspect_rust_binary` with the explicit local ELF, PE, or thin Mach-O file. This built-in target-free inspection requires no Rust installation or disassembler. Preserve package order, dependency indices, and the section file range. A missing `.dep-v0` section is null metadata, not proof the binary has no dependencies. A rustc commit hash is an inference from a read-only `/rustc/<40-hex>/` path. For selected crates, use `view: {collection: "packages", names: [...], fields: ["name", "version", "source"]}` on the first call; explicitly include `dependencies` for direct index references. Use `detail: "summary"` for counts and ranges, or retained `inspect_analysis_view` Rust package/edge pages for subsequent filters. Keep the complete parent Evidence accessible; CLI compact delivery requires `--evidence_output`. See the [Rust binary guide](https://github.com/morluto/rea/blob/main/docs/rust-binaries.md). - PE Authenticode certificate table: `inspect_pe_certificates` with the explicit local PE32/PE32+ file. This built-in target-free inspection requires no Windows SDK. Preserve WIN_CERTIFICATE ranges, types, payload SHA-256, and PKCS#7 signer/X.509 identity fields, including `subject_key_identifier_hex` when the signer uses that form. A missing security directory is observed absence of that table, not proof the image is unsigned in every catalog sense. Signatures are not verified. See the [PE certificate guide](https://github.com/morluto/rea/blob/main/docs/pe-certificates.md). - PE import and delay-load tables: `inspect_pe_imports` with the explicit local PE32/PE32+ file. This built-in target-free inspection requires no Windows SDK. Preserve DLL names, named and ordinal functions, ILT/IAT RVAs, delay-load descriptors, and the pefile import hash of the standard import table. A missing import directory is observed absence of that table, not proof the image never imported APIs through another table. Bound snapshots and loaded IAT contents remain unobserved. See the [PE import guide](https://github.com/morluto/rea/blob/main/docs/pe-imports.md). - PE TLS callbacks and load configuration: `inspect_pe_load_config` with the explicit local PE32/PE32+ file. This built-in target-free inspection requires no Windows SDK. Preserve callback VAs as strings with their RVA, file offset and section, and the size-covered security cookie, SafeSEH, CFG, EH-continuation and XFG fields. Guard-flag mitigation claims are inferred linker declarations, not proof of enforcement. A missing directory is observed absence of that declaration. See the [PE load configuration guide](https://github.com/morluto/rea/blob/main/docs/pe-load-config.md). - ELF note tables: `inspect_elf_notes` with the explicit local ELF32/ELF64 file. This built-in target-free inspection requires no disassembler. Preserve PT_NOTE and SHT_NOTE ranges, owners, types, descriptor SHA-256, and GNU build-id or ABI-tag fields. A missing table is observed absence of those declarations, not proof the image never carried notes. See the [ELF notes guide](https://github.com/morluto/rea/blob/main/docs/elf-notes.md). - Apple `.ips` crash reports: `inspect_apple_ips` with the explicit local file. This built-in target-free inspection requires no Xcode, atos, or pwntools. Preserve first-line metadata, `bug_type` as a string, process and exception facts, lossless integer registers, usedImages UUIDs, and documented classification matches. Only `bug_type` `"309"` yields a crash body; other types, including `"288"` stackshots, return no crash result. Opened Mach-O and dSYM UUID joins remain unobserved. See the [Apple IPS guide](https://github.com/morluto/rea/blob/main/docs/apple-ips.md). - Linux kernel module metadata: `inspect_kernel_module` with the explicit local ELF32/ELF64 relocatable file. This built-in target-free inspection requires no Linux host or `modinfo`. Preserve `.modinfo` key order and duplicate keys, `__versions` CRC hex, section file ranges, and the appended signature trailer's PKCS#7 SHA-256. A missing section is observed absence when section names are known, not proof the module never carried that metadata. `struct module` is not decoded. The signature is not validated. gzip, xz, and zstd containers are unsupported; decompress into a separate file with an external codec utility, then inspect the decompressed `ET_REL` image. See the [kernel module guide](https://github.com/morluto/rea/blob/main/docs/kernel-modules.md). - CPython 3.7–3.13 `.pyc` header, nested marshal code objects and bytecode identity: `inspect_python_pyc` with the explicit local file. This built-in target-free inspection requires no Python installation. Preserve magic, PEP 552 hash or mtime/size, nested names, and bytecode SHA-256. Bytecode is not decompiled, and a decoded header does not prove the matching `.py` is present. See the [CPython pyc guide](https://github.com/morluto/rea/blob/main/docs/python-pyc.md). - Erlang BEAM IFF container: `inspect_erlang_beam` with the explicit local `.beam` file. This built-in target-free inspection requires no Erlang installation. Preserve chunk names, atom order, export/import/lambda tables, and the Code header. For selected facts, prefer `detail: "summary"` plus a `beam` view (collection, names/indices, fields and paging), retaining the full Evidence. CLI summary requires `--evidence_output`. Missing table counts stay null; decoded empty tables count zero. Bytecode is not executed. See the [Erlang BEAM guide](https://github.com/morluto/rea/blob/main/docs/erlang-beam.md). - Explicit local SQLite database snapshot: `inspect_sqlite_database`. Inspect with Node.js 24.x >=24.15 or 26+ providing native SQLite limits. Read schema first (compact inventory by default), or select an exact ordinary table and `columns` when rows are needed. Defaults are selected-table schema and 20 rows; request `schema_scope: "database"` for the complete stored schema. Preserve both database and existing sibling WAL identity; row samples report truncation and have unspecified order. Use a quiescent snapshot rather than assuming a live database/WAL pair was copied atomically. See the [SQLite guide](https://github.com/morluto/rea/blob/main/docs/sqlite-databases.md). - Explicit Linux ELF file for offline layout, symbols, relocations or static mitigation evidence: `inspect_binary_layout`. This target-free operation uses caller-supplied pwntools without opening a disassembler database. Preserve its raw locations and inference/coverage limits; see the [offline binary guide](https://github.com/morluto/rea/blob/main/docs/binary-diagnostics.md). - Supplied Linux x86-64 ELF core: `inspect_recorded_crash`. Read every recorded thread, raw note and source-bound register without opening a live target. Historical PIDs do not select live processes. Request `include_debugger_context` only when core-only mapping candidates help; see the [recorded crash guide](https://github.com/morluto/rea/blob/main/docs/recorded-crashes.md). - PE resource type/name/language trees and static icon group references: `inspect_pe_resources` with an explicit path. This portable operation requires
GitHub에서 보기
이 SKILL.md는 매우 커서 SkillsMP가 여기에는 첫 섹션만 미리 보여줍니다. GitHub에서 보기