Package ghidra.app.script
Class GhidraScriptProvider
java.lang.Object
ghidra.app.script.GhidraScriptProvider
- All Implemented Interfaces:
ExtensionPoint
,Comparable<GhidraScriptProvider>
- Direct Known Subclasses:
AbstractPythonScriptProvider
,JavaScriptProvider
,UnsupportedScriptProvider
public abstract class GhidraScriptProvider
extends Object
implements ExtensionPoint, Comparable<GhidraScriptProvider>
A provider that can compile, interpret, load, etc., Ghidra Scripts from a given language.
NOTE: ALL GhidraScriptProvider CLASSES MUST END IN "ScriptProvider". If not, the ClassSearcher will not find them.
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionint
abstract void
createNewScript
(ResourceFile newScript, String category) Creates a new script using the specified file.boolean
deleteScript
(ResourceFile scriptSource) Deletes the script file and unloads the script from the script manager.boolean
protected String
Deprecated.Returns a Pattern that matches block comment closings.Returns a Pattern that matches block comment openings.protected String
Return the prefix for each certification header body line if this file is subject to certification.protected String
Return the end of certification header line if this file type is subject to certification.protected String
Return the start of certification header line if this file type is subject to certification.abstract String
Returns the comment character.abstract String
Returns a description for this type of script.abstract String
Returns the file extension for this type of script.Returns an optional runtime environment name of aGhidraScriptProvider
that scripts can specify they require to run under.abstract GhidraScript
getScriptInstance
(ResourceFile sourceFile, PrintWriter writer) Returns a GhidraScript instance for the specified source file.int
hashCode()
toString()
protected void
writeBody
(PrintWriter writer) Writes the script body template.protected void
writeHeader
(PrintWriter writer, String category) Writes the script header.
-
Constructor Details
-
GhidraScriptProvider
public GhidraScriptProvider()
-
-
Method Details
-
toString
-
hashCode
public int hashCode() -
equals
-
compareTo
- Specified by:
compareTo
in interfaceComparable<GhidraScriptProvider>
-
deleteScript
Deletes the script file and unloads the script from the script manager.- Parameters:
scriptSource
- the script source file- Returns:
- true if the script was completely deleted and cleaned up
-
getDescription
Returns a description for this type of script.- Returns:
- a description for this type of script
-
getExtension
Returns the file extension for this type of script.For example, ".java" or ".py".
- Returns:
- the file extension for this type of script
-
getScriptInstance
public abstract GhidraScript getScriptInstance(ResourceFile sourceFile, PrintWriter writer) throws GhidraScriptLoadException Returns a GhidraScript instance for the specified source file.- Parameters:
sourceFile
- the source filewriter
- the print writer to write warning/error messages. If the error prevents success, throw an exception instead. The caller will print the error.- Returns:
- a GhidraScript instance for the specified source file
- Throws:
GhidraScriptLoadException
- when the script instance cannot be created
-
createNewScript
Creates a new script using the specified file.- Parameters:
newScript
- the new script filecategory
- the script category- Throws:
IOException
- if an error occurs writing the file
-
getRuntimeEnvironmentName
Returns an optional runtime environment name of aGhidraScriptProvider
that scripts can specify they require to run under. Useful for when more than oneGhidraScriptProvider
uses the same file extension.- Returns:
- an optional runtime environment name of a
GhidraScriptProvider
that scripts can specify they require to run under (could be null if there is no requirement) - See Also:
-
getBlockCommentStart
Returns a Pattern that matches block comment openings.If block comments are not supported by this provider, then this returns null.
- Returns:
- the Pattern for block comment openings, null if block comments are not supported
-
getBlockCommentEnd
Returns a Pattern that matches block comment closings.If block comments are not supported by this provider, then this returns null.
- Returns:
- the Pattern for block comment closings, null if block comments are not supported
-
getCommentCharacter
Returns the comment character.For example, "//" or "#".
- Returns:
- the comment character
-
writeHeader
Writes the script header.Include a place holder for each meta-data item.
- Parameters:
writer
- the print writercategory
- the default category
-
writeBody
Writes the script body template.- Parameters:
writer
- the print writer
-
fixupName
Deprecated.Fixup a script name for searching in script directories.This method is part of a poorly specified behavior that is due for future amendment, see
GhidraScriptUtil.fixupName(String)
.- Parameters:
scriptName
- the name of the script, must end with this provider's extension- Returns:
- a (relative) file path to the corresponding script
-
getCertifyHeaderStart
Return the start of certification header line if this file type is subject to certification.- Returns:
- start of certification header or null if not supported
-
getCertificationBodyPrefix
Return the prefix for each certification header body line if this file is subject to certification.- Returns:
- certification header body prefix or null if not supported
-
getCertifyHeaderEnd
Return the end of certification header line if this file type is subject to certification.- Returns:
- end of certification header or null if not supported
-