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:Ghidra is listed as a recommended dependency in the Malimite Homebrew cask.
Install Malimite
- Homebrew
- Manual JAR
- From source
Install the cask
Run the following command to install Malimite via Homebrew: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.Launch Malimite
Run the wrapper script from your terminal: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 locatesupport/analyzeHeadless (or support/analyzeHeadless.bat on Windows) and invoke it as a subprocess.
Open Preferences
In the Malimite menu bar, go to File → Preferences (on macOS, Malimite → Preferences).
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
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.Verify the installation
After setting the Ghidra path, confirm everything is working:- Click Select File or drag an
.ipaor.appbundle onto the file path field. - Click Analyze File.
- Malimite launches Ghidra’s headless analyzer in the background. A progress indicator appears while the analysis runs.
- Once complete, the class tree and decompiled code view populate with results from the binary.
Troubleshooting
Ghidra path not set or not found
Ghidra path not set or not found
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:Java version error on launch
Java version error on launch
Malimite requires Java 11 or later. If you see an If the version is below 11, install a supported JDK. On macOS:If multiple Java versions are installed, make sure the
UnsupportedClassVersionError or similar error, check your active Java version:java on your PATH is version 11 or later. You can also launch the JAR explicitly with a full JDK path:Ghidra library setup fails with a permissions error
Ghidra library setup fails with a permissions error
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/:The Malimite window opens but analysis never completes
The Malimite window opens but analysis never completes
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.