ghidra

Reverse engineer binaries using Ghidra's headless analyzer. Decompile executables, extract functions, strings, symbols, and analyze call graphs without GUI.

By mitsuhiko · 556 installs

npx skills add mitsuhiko/agent-stuff --skill ghidra

Source repository · Upstream listing

Ghidra Headless Analysis Skill Perform automated reverse engineering using Ghidra's analyzeHeadless tool. Import binaries, run analysis, decompile to C code, and extract useful information. Quick Reference Task Command Full analysis with all exports ghidra analyze.sh s ExportAll.java o ./output binary Decompile to C code ghidra analyze.sh s ExportDecompiled.java o ./output binary List functions ghidra analyze.sh s ExportFunctions.java o ./output binary Extract strings ghidra analyze.sh s ExportStrings.java o ./output binary Get call graph ghidra analyze.sh s ExportCalls.java o ./output binary Export symbols ghidra analyze.sh s ExportSymbols.java o ./output binary Find Ghidra path find ghidra.sh Prerequisites Ghidra must be installed. On macOS: brew install cask ghidra Java (OpenJDK 17+) must be available The skill automatically locates Ghidra in common installation paths. Set GHIDRA HOME environment variable if Ghidra is installed in a non standard location. Main Wrapper Script Wrapper that handles project creation/cleanup and provides a simpler interface to analyzeHeadless . Options: o, output <dir Output directory for results (default: current dir) s, script <name Post analysis script to run (can be repeated) a, script args <args Arguments for the last specified script script path <path Additional script search path p, processor <id Processor/architecture (e.g., x86:LE:32:default ) c, cspec <id Compiler spec (e.g., gcc , windows ) no analysis Skip auto analysis (faster, but less info) timeout <seconds Analysis timeout per file keep project Keep the Ghidra project after analysis project dir <dir Directory for Ghidra project (default: /tmp) project name <name Project name (default: auto generated) v, verbose Verbose output Built in Export Scripts ExportAll.java Comprehensive export runs all other exports and creates a summary. Best for initial analysis. Output files: {name} summary.txt Overview: architecture, memory sections, function counts {name} decompiled.c All functions decompiled to C {name} functions.json Function list with signatures and calls {name} strings.txt All strings found {name} interesting.txt Functions matching security relevant patterns ExportDecompiled.java Decompile all functions to C pseudocode. Output: {name} decompiled.c ExportFunctions.java Export function list as JSON with addresses, signatures, parameters, and call relationships. Output: {name} functions.json ExportStrings.java Extract all strings (ASCII, Unicode) with addresses. Output: {name} strings.json ExportCalls.java Export function call graph showing caller/callee relationships. Output: {name} calls.json Includes: Full call graph Potential entry points (functions with no callers) Most frequently called functions ExportSymbols.java Export all symbols: imports, exports, and internal symbols. Output: {name} symbols.json Common Workflows Analyze an Unknown Binary Analyze Firmware Quick Function Listing Find Specific Patterns Analyze Multiple Binaries Architecture/Processor IDs Common processor IDs for the p option: Architecture Processor ID x86 32 bit x86:LE:32:default x86 64 bit x86:LE:64:default ARM 32 bit ARM:LE:32:v7 ARM 64 bit AARCH64:LE:64:v8A MIPS 32 bit MIPS:BE:32:default or MIPS:LE:32:default PowerPC PowerPC:BE:32:default Find all available processors: Troubleshooting Ghidra Not Found Analysis Takes Too Long Out of Memory Edit the analyzeHeadless script or set: Wrong Architecture Detected Explicitly specify the processor: Tips 1. Start with ExportAll.java It gives you everything and the summary helps orient you 2. Check the interesting.txt file It highlights security relevant functions automatically 3. Use jq for JSON parsing The JSON exports are designed to be machine readable 4. Decompilation isn't perfect Use it as a guide, cross reference with disassembly 5. Large binaries take time Use timeout and consider no analysis for quick scans