Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/LaurieWired/Malimite/llms.txt

Use this file to discover all available pages before exploring further.

Prerequisites

Before installing Malimite, make sure the following are available on your system:
  • Java 11 or later — Malimite is a Java application and requires JDK or JRE 11+. Confirm your version by running java -version.
  • Ghidra — Malimite uses Ghidra’s headless analyzer as its decompilation backend. Download Ghidra from ghidra-sre.org.
On macOS, you can install both Java and Ghidra via Homebrew:
brew install --cask ghidra
Ghidra is listed as a recommended dependency in the Malimite Homebrew cask.

Install Malimite

1

Install the cask

Run the following command to install Malimite via Homebrew:
brew install --cask malimite
Homebrew downloads the precompiled JAR, places it under $(brew --prefix)/libexec/malimite/, and creates a malimite wrapper script in $(brew --prefix)/bin/ that runs the JAR with java -jar.
2

Launch Malimite

Run the wrapper script from your terminal:
malimite
The main window opens. Continue to set the Ghidra path before running your first analysis.

Set the Ghidra path

Malimite requires a Ghidra installation path before it can analyze any file. It uses this path to locate support/analyzeHeadless (or support/analyzeHeadless.bat on Windows) and invoke it as a subprocess.
1

Open Preferences

In the Malimite menu bar, go to File → Preferences (on macOS, Malimite → Preferences).
2

Set the Ghidra installation directory

In the Ghidra Path field, enter or browse to the root of your Ghidra installation — the directory that contains the support/ folder. For example:
  • macOS (Homebrew): /opt/homebrew/Caskroom/ghidra/<version>/ghidra_<version>_PUBLIC
  • Manual install: /path/to/ghidra_11.x.x_PUBLIC
3

Save

Click Save. Malimite writes the path to malimite.properties in the working directory and validates that analyzeHeadless is reachable. If the path requires elevated permissions to write the required JSON library into Ghidra’s patch/ directory, Malimite prompts you to retry with admin privileges.
If the Ghidra path is not set when you click Analyze File, Malimite shows a warning and opens the Preferences dialog automatically. Analysis cannot proceed without a valid Ghidra path.

Verify the installation

After setting the Ghidra path, confirm everything is working:
  1. Click Select File or drag an .ipa or .app bundle onto the file path field.
  2. Click Analyze File.
  3. Malimite launches Ghidra’s headless analyzer in the background. A progress indicator appears while the analysis runs.
  4. Once complete, the class tree and decompiled code view populate with results from the binary.
If the analysis window opens and the class tree is populated, your installation is working correctly.

Troubleshooting

Malimite looks for support/analyzeHeadless (or support/analyzeHeadless.bat on Windows) relative to the path you configured. Make sure you selected the root of the Ghidra installation directory — not the support/ subfolder itself, and not a parent directory above the Ghidra release folder.To verify the path is correct, check that the file exists:
ls /your/ghidra/path/support/analyzeHeadless
Malimite requires Java 11 or later. If you see an UnsupportedClassVersionError or similar error, check your active Java version:
java -version
If the version is below 11, install a supported JDK. On macOS:
brew install openjdk@21
If multiple Java versions are installed, make sure the java on your PATH is version 11 or later. You can also launch the JAR explicitly with a full JDK path:
/path/to/java11+/bin/java -jar Malimite-1-1.jar
When you first set a Ghidra path, Malimite attempts to download a required JSON library into the Ghidra Ghidra/patch/ directory. If that directory is not writable by your user, Malimite prompts you to retry with admin privileges using sudo.If you decline the prompt or the sudo attempt also fails, you can install the library manually. Download the JAR from Maven Central and place it in <ghidra-root>/Ghidra/patch/:
curl -o json-20210307.jar \
  https://repo1.maven.org/maven2/org/json/json/20210307/json-20210307.jar
sudo cp json-20210307.jar /your/ghidra/path/Ghidra/patch/
Malimite communicates with the Ghidra script over a local socket. Check that:
  • No firewall or security policy is blocking loopback connections on the dynamically assigned port.
  • Ghidra itself is functional — try opening the same binary in the Ghidra GUI to confirm Ghidra is not reporting errors.
  • The binary is a supported format (Mach-O ARM64 or x86_64). See Supported formats for details.

Build docs developers (and LLMs) love