Interface INativeCodeAnalyzerExtensionsManager<InsnType extends IInstruction>
- Type Parameters:
InsnType
-
- All Superinterfaces:
INativeCodeAnalyzerExtension<InsnType>
@Ser
public interface INativeCodeAnalyzerExtensionsManager<InsnType extends IInstruction>
extends INativeCodeAnalyzerExtension<InsnType>
Interface for the extensions manager of the
INativeCodeAnalyzer
. This manager should be
instantiated from the analyzer in question.
Extensions implement INativeCodeAnalyzerExtension
, as does the manager. For each method
of this interface, the manager asks extensions in the order of their priority (see
INativeCodeAnalyzerExtensionsManager.ExtensionPriority
), and each of them can provide a final result, or let the following
extensions be asked (see ChainedOperationResult
). For now we do not attempt to
merge conflicting results; the last extension to have provided a meaningful result has the final
word.
For now, clients can only register extensions; those extensions can have priority over the
default extensions if they are registered with INativeCodeAnalyzerExtensionsManager.ExtensionPriority.HIGH_PRIORITY
.
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic enum
Priorities that can be attributed to an extension. -
Method Summary
Modifier and TypeMethodDescriptionvoid
Register an extension with aINativeCodeAnalyzerExtensionsManager.ExtensionPriority.MEDIUM_PRIORITY
.void
registerExtension
(INativeCodeAnalyzerExtension<InsnType> ext, INativeCodeAnalyzerExtensionsManager.ExtensionPriority priority) Register an extension with the given priority.void
registerExtensions
(List<INativeCodeAnalyzerExtension<InsnType>> listExt, boolean removePreviousExtensions) Register a list of extensions with aINativeCodeAnalyzerExtensionsManager.ExtensionPriority.MEDIUM_PRIORITY
.Methods inherited from interface com.pnfsoftware.jeb.core.units.code.asm.analyzer.INativeCodeAnalyzerExtension
customizeInstructionItem, determinePotentialPointers, determinePotentialPointersInProtoBlock, determineRoutineStackPointerDelta, determineSwitchInformation, getPossiblePaddingSize, getPreferredAdvancedAnalysisStage, getPreferredBreakingFlow, getPrimitiveSizes, getProbableEntryPoints, getPrologueLooking, getTrampolineTarget, getUnit, initialize, isCandidateSwitchDispatcher, isNonReturningRoutine, postprocessImage, preprocessImage, shouldForceRoutineEnd, sigMatchingPostProcess, typeManagerInitialized, verifyGapRoutineCandidate
-
Method Details
-
registerExtension
Register an extension with aINativeCodeAnalyzerExtensionsManager.ExtensionPriority.MEDIUM_PRIORITY
. The extension will be initialized.- Parameters:
ext
-
-
registerExtension
void registerExtension(INativeCodeAnalyzerExtension<InsnType> ext, INativeCodeAnalyzerExtensionsManager.ExtensionPriority priority) Register an extension with the given priority. The extension will be initialized.- Parameters:
ext
-priority
-
-
registerExtensions
void registerExtensions(List<INativeCodeAnalyzerExtension<InsnType>> listExt, boolean removePreviousExtensions) Register a list of extensions with aINativeCodeAnalyzerExtensionsManager.ExtensionPriority.MEDIUM_PRIORITY
. The extensions will be initialized.- Parameters:
listExt
-removePreviousExtensions
- if true the currently registered extensions are removed before adding the new ones.
-