Repository navigation
Releases: yuatemycat/SuperGhidra
Releases · yuatemycat/SuperGhidra
Release list
Release v0.3.0: Adaptive Hybrid Acceleration & PDB/ARM64 Subsystem Upgrade
Summary
This pull request implements the targeted subsystem fixes triaged during the architectural audit under isolated multi-agent swarm ownership. It resolves four core limitations across acceleration, binary formats, instruction lifters, and external integrations without breaking existing root import shims or SMT soundness invariants.
Detailed triage specifications are archived in docs/specs/SWARM_ISSUES_TRIAGE.md.
Addressed Issues
1. Issue #12: Adaptive Small-Binary Hybrid Dispatcher (superghidra/acceleration/gpu_adrp_scanner.py)
- Problem: On small binary payloads (< 5 MB), WGPU staging buffer mapping and command submission latency (~0.8–1.0 ms) caused GPU scanning to be slower than CPU NumPy SIMD.
-
Fix: Added an adaptive 5 MB threshold (
ADAPTIVE_GPU_THRESHOLD_BYTES = 5 * 1024 * 1024). Inautomode, payloads under 5 MB automatically route throughNumPyAdrpEngine.scan(), while payloads$\ge 5$ MB use parallel WGPU compute shaders. Explicitbackend="wgpu"force override is respected. -
Tests:
tests/acceleration/test_adaptive_threshold.py.
2. Issue #13: PDB Type-Stream (TPI/IPI) CodeView Leaf Record Serialization (superghidra/formats/synthetic_symbol_exporter.py)
- Problem: Exported PDBs included the MSF 7.0 container and GSI hash stream for public symbols, but omitted standard CodeView leaf type records in the TPI/IPI streams.
- Fix: Implemented serialization for standard CodeView leaf types:
LF_POINTER(0x1002),LF_PROCEDURE(0x1008),LF_ARGLIST(0x1201),LF_FIELDLIST(0x1203),LF_MEMBER(0x150D), andLF_STRUCTURE(0x1505). Populated the 56-byteTPI_HEADER(ti_min=0x1000) and updateddwarf_pdb_preindexer.pywith off-heap SQLite ingestion for composite type records. - Tests:
tests/formats/test_pdb_tpi_export.py.
3. Issue #14: ARM64 Cryptographic Extension Instruction Lifter (superghidra/lifters/pcode_lifter_bridge.py)
- Problem: Cryptographic instructions in ARMv8-A binaries produced
UNIMPLEMENTEDduring zero-JVM lifting. - Fix: Added P-code decoding for all 12 ARMv8-A crypto instructions:
- AES:
AESE,AESD,AESMC,AESIMC. - SHA-1:
SHA1C,SHA1P,SHA1M,SHA1H,SHA1SU0,SHA1SU1. - SHA-256:
SHA256H,SHA256H2,SHA256SU0,SHA256SU1.
Lifts each instruction to a descriptiveCALLOTHERusercall intrinsic node with target vector register indices. Insuperghidra/lifters/smt_pcode_verifier.py, unmodeledCALLOTHERopcodes strictly returnUNKNOWNto prevent unsound false-positive SMT equivalence proofs.
- AES:
- Tests:
tests/lifters/test_arm64_crypto_lifting.py.
4. Issue #15: Interactive Ghidra GUI Overlay Sync Bridge (superghidra/integrations/ghidra_gui_overlay_sync.py)
- Problem: Reverse engineers working in the interactive Ghidra GUI had no automated method to visualize and merge external agent mutations (
ghidra_overlay.json,.ghidra-delta.jsonl). - Fix: Implemented
OverlaySyncBridgeand thepython -m superghidra overlay-syncCLI command. Generates standalone Ghidra Python scripts utilizing Ghidra FlatProgramAPI (createLabel,setComment) inside atomic transactions (startTransaction/endTransaction). Maintained non-breaking root shimghidra_gui_overlay_sync.py. - Tests:
tests/integrations/test_ghidra_gui_overlay_sync.py.
Benchmark Telemetry
Empirical measurements gathered via headless benchmark harness (scratch/benchmark_swarm_fixes.py):
| Subsystem / Benchmark Target | Measured Workload | Dispatched Backend | Latency | Measured Throughput |
|---|---|---|---|---|
| GPUAdrpScanner (Issue #12) | 1.0 MB binary block | numpy (auto) |
0.701 ms | 1,427.1 MB/s |
| GPUAdrpScanner (Issue #12) | 5.0 MB binary block | wgpu (auto) |
1.649 ms | 3,032.3 MB/s |
| GPUAdrpScanner (Issue #12) | 20.0 MB binary block | wgpu (auto) |
4.986 ms | 4,011.6 MB/s |
| PDB TPI Serialization (Issue #13) | 100 structs, 400 fields | Python MSF 7.0 | 1.11 ms | 360,652.8 records/s |
| ARM64 Crypto Lifter (Issue #14) | 12,000 crypto insns | Python P-Code | 47.89 ms | 250,580.5 insns/s |
| Overlay Sync Script (Issue #15) | 5,000 mutations | FlatProgramAPI | 2.91 ms | 1,715,560.1 mutations/s |
Kingfisher Review Verification Checklist
- Cryptographic Privacy & SMT Soundness:
- No committed credentials, tokens, or encryption keys.
- SMT verifier explicitly returns
UNKNOWNforCALLOTHERcrypto opcodes, preserving mathematical soundness invariant (Invariant 5).
- Repository & Test Suite Integrity:
- Full test suite passing locally:
715 passed, 21 skipped, 45 subtests passed in 63.00s. - Zero broken downstreams or missing imports.
- Full test suite passing locally:
- Documentation & Tone Rules (AGENTS.md Compliance):
- Zero ASCII box-drawing characters or decorative Unicode box art.
- Zero promotional buzzwords (
seamless,cutting-edge,blazing,state-of-the-art,game-changing). - Numbers accompanied by concrete benchmarks.
- API Compatibility & Non-Breaking Shims:
- Added root import shim
ghidra_gui_overlay_sync.pywithsys.modulesaliasing. - All existing root compatibility shims remain untouched.
- Added root import shim
- Test Coverage:
- 4 new test suites added covering all new functionality:
tests/acceleration/test_adaptive_threshold.py(7 tests)tests/formats/test_pdb_tpi_export.py(6 tests)tests/lifters/test_arm64_crypto_lifting.py(15 tests)tests/integrations/test_ghidra_gui_overlay_sync.py(13 tests)
- 4 new test suites added covering all new functionality: