Package ghidra.app.services
Class AnalysisPriority
java.lang.Object
ghidra.app.services.AnalysisPriority
Class to specify priority within the Automated Analysis pipeline.
-
Field Summary
Modifier and TypeFieldDescriptionstatic final AnalysisPriority
Defines block analysis as the second priority for automatic analysis.static final AnalysisPriority
Defines code analysis as the fourth priority for automatic analysis.static final AnalysisPriority
Defines data analysis as the seventh priority for automatic analysis.static final AnalysisPriority
Defines data type propagation as the ninth priority for automatic analysis.static final AnalysisPriority
Defines disassembly as the third priority for automatic analysis.static final AnalysisPriority
Defines a full format analysis as the first priority for automatic analysis.static final AnalysisPriority
Defines function analysis as the fifth priority for automatic analysis.static final AnalysisPriority
Defines Function identification analysis as the eighth priority for automatic analysis.static final AnalysisPriority
static final AnalysisPriority
static final AnalysisPriority
Defines reference analysis as the sixth priority for automatic analysis. -
Constructor Summary
ConstructorDescriptionAnalysisPriority
(int priority) AnalysisPriority
(String name, int priority) Construct a new priority object. -
Method Summary
Modifier and TypeMethodDescriptionafter()
Get a priority that is a little lower than this one.before()
Get a priority that is a little higher than this one.static AnalysisPriority
getInitial
(String name) Return first gross priority.Get the next gross priority.int
priority()
Return the priority specified for this analysis priority.toString()
-
Field Details
-
FORMAT_ANALYSIS
Defines a full format analysis as the first priority for automatic analysis. These are the first analyzers that will run after import. Possibly there is a need to move blocks around, or create headers. Analyzers that will look binary as a full file format analysis should run with this priority. NOTE: there may be analyzers that run before this that need to fix issues like Non-Returning functions. Be very careful running an analyzer with a higher priority. -
BLOCK_ANALYSIS
Defines block analysis as the second priority for automatic analysis. Initial markup of raw bytes should occur at or after this priority (images, etc). The initial disassembly of EntryPoints will occur at this priority. -
DISASSEMBLY
Defines disassembly as the third priority for automatic analysis. Disassembly of code found through good solid flow will occur at this priority. More heuristic code recovery will occur later. -
CODE_ANALYSIS
Defines code analysis as the fourth priority for automatic analysis. If your analyzer is looking at RAW CODE, you should general go at or after this priority. Usually this is used in conjunction with analyzers that process new instructionsAnalyzerType.INSTRUCTIONS
. It is also useful for those analyzers that depend on code, but want to analyze flow, such as non-returning functions, that should happen before functions are widely laid down. If bad flow is not fixed at an early priority, switch statement recovery, function boundaries, etc... may need to be redone and bad stuff cleaned up. -
FUNCTION_ANALYSIS
Defines function analysis as the fifth priority for automatic analysis. After this priority, basic functions and their instructions should be recovered. More functions could be recovered in further analysis, but if your analysis depends on basic function creation, you should go after this priority. -
REFERENCE_ANALYSIS
Defines reference analysis as the sixth priority for automatic analysis. After this priority, basic reference recovery should have taken place. More references could be recovered later. -
DATA_ANALYSIS
Defines data analysis as the seventh priority for automatic analysis. After this priority, data creation (strings, pointers) should have settled down. More data can be recovered with further analysis. -
FUNCTION_ID_ANALYSIS
Defines Function identification analysis as the eighth priority for automatic analysis. After this priority, full function (name/class) evaluation should have taken place. -
DATA_TYPE_PROPOGATION
Defines data type propagation as the ninth priority for automatic analysis. Data type propagation analysis should happen as late as possible so that all basic code recovery, reference analysis, etc... has taken place. -
LOW_PRIORITY
-
HIGHEST_PRIORITY
-
-
Constructor Details
-
AnalysisPriority
public AnalysisPriority(int priority) -
AnalysisPriority
Construct a new priority object.- Parameters:
name
- the namepriority
- priority to use
-
-
Method Details
-
priority
public int priority()Return the priority specified for this analysis priority.- Returns:
- the priority specified for this analysis priority.
-
before
Get a priority that is a little higher than this one.- Returns:
- a higher priority
-
after
Get a priority that is a little lower than this one.- Returns:
- a lower priority
-
getInitial
Return first gross priority.- Parameters:
name
- the name- Returns:
- first gross priority
-
getNext
Get the next gross priority.- Parameters:
nextName
- the next name- Returns:
- return next gross priority
-
toString
-