Skip to content

CLI enhancements, Ghidra improvements, and docs overhaul#104

Open
patacca wants to merge 25 commits intomainfrom
new_features
Open

CLI enhancements, Ghidra improvements, and docs overhaul#104
patacca wants to merge 25 commits intomainfrom
new_features

Conversation

@patacca
Copy link
Copy Markdown
Collaborator

@patacca patacca commented Mar 13, 2026

Summary

  • CLI (quokka-cli): Accept multiple files/dirs as input, add -o/--output template option with path specifiers, add --overwrite flag, and resolve relative output paths against the input binary directory
  • Ghidra extension: Emit valid C for c_str types and headers via new CTypeRenderer, add Gradle install task for GUI-installed extensions, generate version from build.gradle, rewrite README with install methods and headless arg syntax
  • Documentation: Comprehensive overhaul — generalize all docs for Ghidra support, rewrite features page with IDA/Ghidra comparison table, fix inaccurate API references across tutorials and type docs, refresh usage/contributing/installation pages
  • Tests: Add Ghidra integration tests to full CI builds, add offline tests for output templates, Ghidra install, and commit regeneration
  • Infra: Add refresh_quokka_lfs.sh script to re-export all LFS .quokka files, update IDA SDK to 9.3, install liblzma in warm-cache CI job
  • CI: Fix the current CI by installing the required liblzma dependency on the runners

patacca added 22 commits March 13, 2026 12:00
apply_changes treated commit()'s 0-success return as failure,
regenerate() did not forward disassembler to generate(), and
FileExistsError crashed with unhandled traceback. Add --overwrite
flag and tests for all code paths.
Promote quokka-cli to primary export method, document quokka-apply CLI,
fix deprecated API usage (data_references -> data_refs_from,
code_references -> code_refs_to, calls -> callees, string -> strings),
correct CMake option name and build instructions, and fix minor typos.
Replace bloated HTML/SVG checkmark table with a clean markdown
table comparing IDA and Ghidra export capabilities. Add colored
green/red icons via custom CSS.
- Replace get_block() calls with dict-style func[addr] (method doesn't exist)
- Replace block.get_instruction() with block[addr] (method doesn't exist)
- Fix commit() overwrite default: False -> True to match source
- Fix inst.string -> inst.strings (singular form doesn't exist)
- Fix AARCH64 -> ARM64 and remove non-existent RISCV enum value
- Add missing ExporterMode import in program.md example
- Document TypedefType class, is_typedef property, aliased_type, resolve()
- Fix incorrect API references (Chunk->Function, func.calls->func.callees,
  read_data->read_type_value, inst.parent->inst.block, edge "type"->"condition")
- Add missing INVALID FunctionType, IDA-only warnings for commit/regenerate
- Fix tutorial claims (prog.strings, chunks terminology, read_bytes semantics)
- Use GitHub-compatible admonition syntax in root README
Update DataType to BaseType, read_data to read_type_value,
and correct StructureType/UnionType dict key documentation.
Script args must follow the script name on the -postScript line.
Also add CLI as preferred headless method, document extension
install requirement, and remove hardcoded paths.
…all task

Detect QuokkaExporter in both the Ghidra install dir (Gradle) and user
settings dir (GUI install). Add `installExtension` Gradle task. Warn on
duplicate installs that can cause class-loading conflicts.
Replace DataType.toString() (Ghidra debug format) with proper
C declarations: CTypeRenderer for per-type c_str, DataTypeWriter
for the full headers field.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants