A collection of some useful Ghidra scripts. This is a collection created from github repos.
Ghidra scripts to support IOT exploitation. Some of the scripts are a port of devttyS0 IDA plugins
Most of scripts has a .md
file with its documentation.
Copy the script(s) (you like to use) to your ghidra_scripts
folder (usually located
at ~/ghidra_scripts
) or any other directory Ghidra is configured to search for
scripts.
In the Ghidra Script Manager click the "Script Directories" icon in the toolbar and add the checked out repository as a path. Scripts from this collection will appear in the respective category.
Script to find and support finding ARM ROP gadgets.
-
Gadgets
- Find double jumps.
- Move small value to r0.
- Get control of more or different registers.
- Move values between registers.
- Find strings or shellcode on the stack.
- Find custom gadgets based on regular expressions.
- Gadgets to call system with a string argument in r0.
-
Support
- Convert entire program to Thumb instructions.
- List summary of saved gadgets.
Find call chains between two user specified functions. Results are displayed in a png.
- Fixup code - defines all undefined data in the .text section as code and creates a function if it can.
- Fixup data - define uninitialized strings and pointers. Searches for function tables and renames functions based on their discovery.
Highlight function calls.
Display cross refs from the current function.
- Format Strings - Find functions that accept format strings as parameters.
- Leaf Functions - Identify potential leaf functions such as strcpy, strlen, etc.
Find references to items in the current function.
Scripts to find and support finding MIPS ROP gadgets.
-
Gadgets
- Double Jumps
- Epilogue
- Find custom gadgets
- Indirect Return
- li a0
- Prologue
- System Gadgets
-
Chain Builder
- Build ROP chain to call shellcode
- Build ROP chain to call system with controllable string.
-
Support
- Summary
Display all calls to a function and identify the source of the parameters it is called with taking variadic arguments into account if they are present.
Rename saved stack variables. (MIPS only)
Create fuzzy function signatures that can be applied to other projects.
Quickly search function names online.
RC4 decryption
Searches and reasemble ASCII stack string formed via repeated instructions
Reasemble an ASCII stack string formed via repeated instructions
Provides a YARA search
Color all calls that are involved (as incoming edges) in the call graph to the current address.
Pipe the data from a selection through a shell process and replacing the data with the decoded output piped back from the shell process.
Runs binwalk on the current program and bookmarks the findings
Yara search
Exports working ROMs from ROMs imported using Gekkio's GhidraBoy.
Automatically demangle swift function names.
Restores function names from a stripped Go binary.
This script calculates the Cyclomatic complexities for all functions of the current program. It can be used for finding the complex functions.
This script shows the frequently-called functions.
This script searches the function call passing a specific value.
This script is for testing Ghidra SymbolicPropagator.
Note that it only works for the analysis of KernelBase.dll
This scripts finds the potential vulnerable sscanf
function call patterns via a P-Code analysis.
Insipred by this ZDI blog post.
Batch imports FID database files from a user specified directory
Removes the unnecessary "Bad Instruction" bookmarks set during analysis of ARM binaries. Bookmarks are only removed if data or an instruction are present at the bookmark's address.
Overrides printf calls with the varargs parameter replaced by the format specifiers.This helps the decompiler with type propogation.
Displays a table of known FID_conflicts containing an action that allows the user to select the correct label. After the label has been selected all remaining FID_conflict labels are removed from the address and the selected label is demangled and re-applied if necessary.
Sets the mutability settings for data in read only memory blocks to constant.
Creates a function at each address in the selected function table
Creates null terminated strings in the current selection
Repairs Boost Any Class DataTypes
Repairs Boost Smart Pointer Class DataTypes
Repairs Boost Tuple Class DataTypes
shellcode_hashs was created inspired by a script of the same name in flare.
Find the name that matches the hash used in the shellcode.
Use the database created by flare script.
Since Ghidra could not import sqlite, I created a script to convert it to json.
Convert with the following command:
python sqlite2json.py
Search for shellcode
Finds XOR instructions whose source and destination operands are not equivalent.
It is registered in the bookmark.
Coloring of CALL and JMP instructions.
Deobfuscate stackstrings used by Godzilla Loader.
Find references to Cryptography functions
This script locates potentially dangerous functions that could introduce a vulnerability if they are used incorrectly.
Parse Objective C
todo
Fix a metacast output in iOS kernelcache
todo
Mark functions with their cumulative cyclomatic complexity