Class GhidraScriptUtil


  • public class GhidraScriptUtil
    extends java.lang.Object
    A utility class for managing script directories and ScriptInfo objects.
    • Field Detail

      • USER_SCRIPTS_DIR

        public static java.lang.String USER_SCRIPTS_DIR
        User's home scripts directory
    • Constructor Detail

      • GhidraScriptUtil

        public GhidraScriptUtil()
    • Method Detail

      • getBundleHost

        public static ghidra.app.plugin.core.osgi.BundleHost getBundleHost()
        Returns:
        the bundle host used for scripting
      • initialize

        public static void initialize​(ghidra.app.plugin.core.osgi.BundleHost aBundleHost,
                                      java.util.List<java.lang.String> extraSystemPaths)
        initialize state of GhidraScriptUtil with user, system paths, and optional extra system paths.
        Parameters:
        aBundleHost - the host to use
        extraSystemPaths - additional system paths for this run, can be null
      • dispose

        public static void dispose()
        dispose of the bundle host and providers list
      • getScriptSourceDirectories

        public static java.util.List<ResourceFile> getScriptSourceDirectories()
        Returns a list of the current script directories.
        Returns:
        a list of the current script directories
      • findSourceDirectoryContaining

        public static ResourceFile findSourceDirectoryContaining​(ResourceFile sourceFile)
        Search the currently managed source directories for the given script file.
        Parameters:
        sourceFile - the source file
        Returns:
        the source directory if found, or null if not
      • findScriptByName

        public static ResourceFile findScriptByName​(java.lang.String scriptName)
        Search the currently managed scripts for one with the given name.
        Parameters:
        scriptName - the name
        Returns:
        the first file found or null if none are found
      • getSystemScriptDirectories

        public static java.util.List<ResourceFile> getSystemScriptDirectories()
        Returns a list of the default script directories.
        Returns:
        a list of the default script directories
      • getUserScriptDirectory

        public static ResourceFile getUserScriptDirectory()
      • isSystemScript

        public static boolean isSystemScript​(ResourceFile file)
        Determine if the specified file is contained within the Ghidra installation.
        Parameters:
        file - script file or directory
        Returns:
        true if file contained within Ghidra installation area
      • getExplodedCompiledSourceBundlePaths

        @Deprecated
        public static java.util.List<ResourceFile> getExplodedCompiledSourceBundlePaths()
        Deprecated.
        accessing class file directly precludes OSGi wiring according to requirements and capabilities
        Returns the list of exploded bundle directories
        Returns:
        the list
      • getBaseName

        public static java.lang.String getBaseName​(ResourceFile script)
        Returns the base name give a script file. For example, given "C:\Temp\SomeClass.java", it will return "SomeClass".
        Parameters:
        script - the script
        Returns:
        the base name
      • getProviders

        public static java.util.List<GhidraScriptProvider> getProviders()
        Returns a list of all Ghidra script providers
        Returns:
        a list of all Ghidra script providers
      • getProvider

        public static GhidraScriptProvider getProvider​(ResourceFile scriptFile)
        Returns the corresponding Ghidra script providers for the specified script file.
        Parameters:
        scriptFile - the script file
        Returns:
        the Ghidra script provider
      • hasScriptProvider

        public static boolean hasScriptProvider​(ResourceFile scriptFile)
        Returns true if a provider exists that can process the specified file.
        Parameters:
        scriptFile - the script file
        Returns:
        true if a provider exists that can process the specified file
      • createNewScript

        public static ResourceFile createNewScript​(GhidraScriptProvider provider,
                                                   ResourceFile parentDirectory,
                                                   java.util.List<ResourceFile> scriptDirectories)
                                            throws java.io.IOException
        Creates a new script with a unique name using the specified provider in the specified directory.
        Parameters:
        provider - the Ghidra script provider
        parentDirectory - the directory where the new script will be created.
        scriptDirectories - The list of directories containing scripts (used to find a unique name).
        Returns:
        the newly created script file
        Throws:
        java.io.IOException - if an i/o error occurs
      • acquireBundleHostReference

        public static ghidra.app.plugin.core.osgi.BundleHost acquireBundleHostReference()
        When running the GUI, GhidraScriptUtil manages a single BundleHost instance.
        Returns:
        the BundleHost singleton
      • releaseBundleHostReference

        public static void releaseBundleHostReference()
        release the reference the BundleHost reference. When no references remain, dispose() is called.