Skip to content

Commit d0d2eef

Browse files
committed
Added processor check to MIPS only scripts before running them.
1 parent ebe5eab commit d0d2eef

10 files changed

+52
-8
lines changed

LeafBlowerFormatString.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Identify potential POSIX functions in the current program such as
1+
# Identify potential POSIX functions in the current program such as sprintf, fprintf, sscanf, etc.
22
#@author fuzzywalls
33
#@category TNS
44
#@menupath TNS.Leaf Blower.Find format string functions

MipsRopDouble.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
#@menupath TNS.Mips Rops.Double Jumps
55

66

7-
from utils import mipsrop
7+
from utils import mipsrop, utils
8+
9+
utils.allowed_processors(currentProgram, 'MIPS')
810

911
mips_rop = mipsrop.MipsRop(currentProgram)
1012
doubles = mips_rop.find_doubles()

MipsRopFind.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55

66

77
import re
8-
from utils import mipsrop
8+
from utils import mipsrop, utils
9+
10+
utils.allowed_processors(currentProgram, 'MIPS')
911

1012
op1 = None
1113
op2 = None

MipsRopIret.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
#@menupath TNS.Mips Rops.Indirect Return
55

66

7-
from utils import mipsrop
7+
from utils import mipsrop, utils
8+
9+
utils.allowed_processors(currentProgram, 'MIPS')
810

911
move_t9 = mipsrop.MipsInstruction('.*move', 't9', '[sav][012345678]')
1012

MipsRopLia0.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
#@menupath TNS.Mips Rops.Li a0
55

66

7-
from utils import mipsrop
7+
from utils import mipsrop, utils
8+
9+
utils.allowed_processors(currentProgram, 'MIPS')
810

911
li_a0 = mipsrop.MipsInstruction('.*li', 'a0', '0x.*')
1012

MipsRopStackFinder.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
#@menupath TNS.Mips Rops.Stack Finder
55

66

7-
from utils import mipsrop
7+
from utils import mipsrop, utils
8+
9+
utils.allowed_processors(currentProgram, 'MIPS')
810

911
sf_saved_reg = mipsrop.MipsInstruction('.*addiu', '[sva][012345678]', 'sp')
1012

MipsRopSummary.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44
#@menupath TNS.Mips Rops.Summary
55

66

7-
from utils import mipsrop
7+
from utils import mipsrop, utils
88

9+
utils.allowed_processors(currentProgram, 'MIPS')
910

1011
mips_rop = mipsrop.MipsRop(currentProgram)
1112
mips_rop.summary()

MipsRopSystem.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
#@menupath TNS.Mips Rops.System Calls
55

66

7-
from utils import mipsrop
7+
from utils import mipsrop, utils
8+
9+
utils.allowed_processors(currentProgram, 'MIPS')
810

911
set_a0 = mipsrop.MipsInstruction('.*addiu', 'a0', 'sp')
1012

RenameVariables.py

+4
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,12 @@
44
#@keybinding
55
#@menupath TNS.Rename Variables
66

7+
from utils import utils
78
from ghidra.program.model.symbol import SourceType
89

10+
11+
utils.allowed_processors(currentProgram, 'MIPS')
12+
913
func_man = currentProgram.getFunctionManager()
1014
code_man = currentProgram.getCodeManager()
1115

utils/utils.py

+27
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,15 @@ def get_processor(current_program):
5353

5454

5555
def find_function(current_program, function_name):
56+
"""
57+
Find a function, by name, in the current program.
58+
59+
:param current_program: Current program loaded in Ghidra.
60+
:type current_program: ghidra.program.model.listing.Program
61+
62+
:param function_name: Function to search for.
63+
:type function_name: str
64+
"""
5665
listing = current_program.getListing()
5766
if listing:
5867
return listing.getGlobalFunctions(function_name)
@@ -70,3 +79,21 @@ def address_to_int(address):
7079
:rtype: int
7180
"""
7281
return int(address.toString(), 16)
82+
83+
84+
def allowed_processors(current_program, processor_list):
85+
"""
86+
Function to prevent scripts from running against unsupported processors.
87+
88+
:param current_program: Current program loaded in Ghidra.
89+
:type current_program: ghidra.program.model.listing.Program
90+
91+
:param processor_list: List of supported processors.
92+
:type processor_list: list(str)
93+
"""
94+
curr_processor = get_processor(current_program)
95+
96+
if curr_processor not in processor_list:
97+
print '%s is not a valid processor for this script. Supported ' \
98+
'processors are: %s' % (curr_processor, processor_list)
99+
exit(1)

0 commit comments

Comments
 (0)