rea/tests/conformance/ghidra
N0zoM1z0 5bcb6645b5
feat(ghidra): admit explicit DOS COM analysis (#702)
* feat(ghidra): admit explicit DOS COM analysis

Carry caller-selected COM interpretation through CLI, MCP and target
identity, seed real-mode entry/context before Ghidra analysis, and verify
complete loaded bytes, source mappings and measured register context.
Keep original binaries unchanged and PSP/runtime coverage explicit.

Assisted-by: Nitori (gensokyo-skills:nitori-reverse-engineering)

* fix(verification): validate COM package selection before allocating fixtures
2026-10-06 16:26:40 +08:00
..
README.md chore(ghidra): align supported release to 12.1.4 2026-09-29 17:36:46 +08:00
ReaSwitchEvidenceProbe.java fix(ghidra): recover evidenced switch cases and default targets (#579) 2026-10-05 22:54:17 +08:00
cross-format.c feat(native): add investigation features (#486) 2026-09-30 00:41:05 +08:00
dos-com-fixture.mjs feat(ghidra): admit explicit DOS COM analysis (#702) 2026-10-06 16:26:40 +08:00
dos-mz-fixture.mjs feat(ghidra): add DOS MZ analysis and complete function extents (#556) 2026-10-05 20:09:45 +08:00
inventory.c feat(native): add inspection primitives, dispatch traces and approved UI observation (#500) 2026-10-04 16:02:36 +08:00
relative-switch.S feat(native): add inspection primitives, dispatch traces and approved UI observation (#500) 2026-10-04 16:02:36 +08:00
switch-fixture.mjs fix(ghidra): recover evidenced switch cases and default targets (#579) 2026-10-05 22:54:17 +08:00

README.md

Ghidra conformance corpus

These source-owned fixtures are compiled at verification time; generated binaries and Ghidra projects are never committed.

  • inventory.c produces separate x86-64 debug and stripped ELF executables. It covers imports, an external puts function, linker thunks, source symbols, direct calls, a targetless callback call, two referenced strings, and a multi-block branch.
  • cross-format.c is freestanding so the verifier can produce AArch64 ELF, x86-64 PE, and x86-64 Mach-O targets from the same semantics. It preserves an exported entry, direct and indirect calls, a volatile string reference, and a multi-block branch across loaders.

scripts/verify-real-ghidra.mjs uses cc, clang, and lld-link by default; REA_CC, REA_CLANG, and REA_LLD_LINK can select alternate commands. The verifier requires an exact bring-your-own Ghidra 12.1.4 installation through GHIDRA_INSTALL_DIR and validates header classification before starting the provider.

Conformance compares semantic facts: provider/profile identity, function classification, resolved call edges, typed references, strings/xrefs, and CFG topology. It only requires provider pseudocode and assembly to be non-empty, bounded, and address-bearing; it never compares their text with Hopper. The callback fixture also proves that an unresolved targetless flow is not silently promoted to a direct callee. Every target runs in a separate owned project and must leave no process, socket, project, or runtime root after close.