Package com.pnfsoftware.jeb.core
Interface IEnginesContext
- All Superinterfaces:
IEventSource
A context for JEB engines. Engines produce events and relay events from other components under
their supervision. The primary task of JEB engines is to manage projects. All engines contexts
are managed by the single instance
- JEB projects
- top-level engines plugins, including parsers
- other top-level managers, such as the type library manager or the code signature manager
core
context. In practice, one single
engines context will exist per JEB instance. The engines context provides access to:- JEB projects
- top-level engines plugins, including parsers
- other top-level managers, such as the type library manager or the code signature manager
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionvoid
Clear all unloaded projects from the project list.void
close()
Close the context.Retrieve the codeless signature manager managed by this context.Retrieve the JEB Core that instantiated this context.Get a reference to the DAO.Retrieve the list of identifiers specifically for debugger units.Retrieve a list of engines plugins (internal modules, third party plugins).Get the executor service used by this context.Retrieve the main project, that is, the first project.Retrieve the list of disassembler plugins.Retrieve the list of disassembler plugins.Retrieve the native signature DB manager managed by this context.Retrieve a network utility object used by this engines context.Get the plugin manager.getProject
(int index) Get a project by index.getProject
(String key) Get a project by key.getProjectFile
(String key) Retrieve the file backing a loaded or unloaded project.Retrieve a copy of the list of projects currently loaded within this context.Get the property manager for this engines context.Retrieve the type library service managed by this context.getUnitIdentifier
(String type) Retrieve an identifier bytype
.Retrieve the list of all identifiers that projects managed by this context may have access to.boolean
Determine whether some projects are loaded within this engines context.boolean
isIdentifierEnabled
(IUnitIdentifier identifier) Determine if an identifier is enabled.loadProject
(String key) Load an existing project or create a new project.loadProject
(String key, boolean projectMustExist, IProgressCallback callback) Load an existing project or create a new project.boolean
saveProject
(String key) Save the state of a project (including artifacts and all units) to the project database.boolean
saveProject
(String projectKey, String persistenceKey, Map<String, Object> optionalParameters, IProgressCallback callback) Save the state of a project (including artifacts and all units) to the project database.boolean
setIdentifierEnabled
(IUnitIdentifier identifier, boolean enabled) Enable or disable an identifier.unitProperty
(String unitType, String propertyName) Convenience method to generate unit properties.boolean
unloadProject
(String key) Unload a project.boolean
unloadProject
(String key, boolean clear) Unload a project and optionally clear its entry from the project list.void
Unload all projects.void
unloadProjects
(boolean clear) Unload all projects and optionally clear entries from the project list.Methods inherited from interface com.pnfsoftware.jeb.util.events.IEventSource
addListener, countListeners, getListeners, getParentSource, insertListener, notifyListeners, removeListener, setParentSource
-
Method Details
-
getCoreContext
ICoreContext getCoreContext()Retrieve the JEB Core that instantiated this context.- Returns:
-
close
void close()Close the context. All projects will be unloaded; changes will not be persisted. -
getDataProvider
IDataProvider getDataProvider()Get a reference to the DAO.- Returns:
- the data provider
-
getExecutorService
ExecutorService getExecutorService()Get the executor service used by this context. Clients may use it to schedule third-party tasks.- Returns:
- the executor service
-
getPropertyManager
IPropertyManager getPropertyManager()Get the property manager for this engines context.- Returns:
- the property manager
-
getNetworkUtility
INet getNetworkUtility()Retrieve a network utility object used by this engines context. The network object is configured to use the proxy specified by the owner Core context's properties.- Returns:
-
getEnginesPlugins
List<IEnginesPlugin> getEnginesPlugins()Retrieve a list of engines plugins (internal modules, third party plugins).- Returns:
- the list of plugins, never null
-
loadProject
Load an existing project or create a new project.- Parameters:
key
- an existing or new project key (the final project key may be different); may be a path to a JDB2 file- Returns:
- a project reference
- Throws:
IOException
- on IO errorSerializationException
- on serialization error
-
loadProject
IRuntimeProject loadProject(String key, boolean projectMustExist, IProgressCallback callback) throws IOException Load an existing project or create a new project.- Parameters:
key
- an existing or new project key (the final project key may be different); may be a path to a JDB2 fileprojectMustExist
- if true, the project must exist (that is, the key must reference an existing JDB2 database, else the method will raise)callback
- an optional callback object fed that will be continuously fed with information regarding the loading status- Returns:
- a project reference
- Throws:
IOException
- on IO errorSerializationException
- on serialization error
-
saveProject
Save the state of a project (including artifacts and all units) to the project database. If the project DB is backed up by a filesystem, the project will be persisted to a JDB2 file.- Parameters:
key
- the project key- Returns:
- success indicator
- Throws:
IOException
- on IO errorSerializationException
- on deserialization error
-
saveProject
boolean saveProject(String projectKey, String persistenceKey, Map<String, Object> optionalParameters, IProgressCallback callback) throws IOExceptionSave the state of a project (including artifacts and all units) to the project database. If the project DB is backed up by a filesystem, the project will be persisted to a JDB2 file.- Parameters:
projectKey
- the project keypersistenceKey
- optional persistence key; set it to override the current key and persist to a different locationoptionalParameters
- opaque dictionary of optional parameters (reserved for internal use)callback
- an optional callback object that will be continuously fed with information regarding the saving status- Returns:
- success indicator
- Throws:
IOException
- on IO errorSerializationException
- on deserialization error
-
unloadProject
Unload a project.- Parameters:
key
- the project key- Returns:
- success indicator
-
unloadProject
Unload a project and optionally clear its entry from the project list.- Parameters:
key
- the project keyclear
- if true, the project entry will be removed from the project list- Returns:
- success indicator
-
unloadProjects
void unloadProjects()Unload all projects. -
unloadProjects
void unloadProjects(boolean clear) Unload all projects and optionally clear entries from the project list.- Parameters:
clear
- if true, project entries will be removed from the project list
-
clearUnloadedProject
void clearUnloadedProject()Clear all unloaded projects from the project list.Note: The project list allows for rapid reloading of previously loaded projects.
-
hasProjects
boolean hasProjects()Determine whether some projects are loaded within this engines context.- Returns:
-
getMainProject
IRuntimeProject getMainProject()Retrieve the main project, that is, the first project. This method throws if there is no project opened in this engines context.- Returns:
- the main project, never null
- Throws:
IllegalStateException
- if there is no main project
-
getProject
Get a project by key.- Parameters:
key
- mandatory project key- Returns:
- the project or null
-
getProject
Get a project by index.- Parameters:
index
- 0-based index- Returns:
- the project or null
-
getProjects
List<IRuntimeProject> getProjects()Retrieve a copy of the list of projects currently loaded within this context.- Returns:
- the list of projects managed by this context
-
getProjectFile
Retrieve the file backing a loaded or unloaded project. The file may not exist or the project may not be backed by a filesystem file, in which case this method will return null.- Parameters:
key
- project key- Returns:
- the file or null
- Throws:
IOException
- on I/O exception
-
getUnitIdentifiers
List<IUnitIdentifier> getUnitIdentifiers()Retrieve the list of all identifiers that projects managed by this context may have access to.- Returns:
- a list of unit identifiers (aka, parsers)
-
getUnitIdentifier
Retrieve an identifier bytype
.- Parameters:
type
- identifier type (recall that decompilers are prefixed withWellKnownUnitTypes.pfxTypeDecompiler
and debuggers withWellKnownUnitTypes.pfxTypeDebugger
)- Returns:
- an identifier or null if there is none
-
getDebuggerUnitIdentifiers
List<IDebuggerUnitIdentifier> getDebuggerUnitIdentifiers()Retrieve the list of identifiers specifically for debugger units.- Returns:
- a list of debugger identifiers
-
getNativeDisassemblerPlugins
List<INativeDisassemblerPlugin<?>> getNativeDisassemblerPlugins()Retrieve the list of disassembler plugins.- Returns:
-
getNativeDecompilerPlugins
List<INativeDecompilerPlugin<?>> getNativeDecompilerPlugins()Retrieve the list of disassembler plugins.- Returns:
-
setIdentifierEnabled
Enable or disable an identifier.- Parameters:
identifier
- the identifierenabled
- true to enable the identifier, false otherwise; in the latter case,IUnitIdentifier#canIdentify()
will never get called- Returns:
- success indicator
-
isIdentifierEnabled
Determine if an identifier is enabled.- Parameters:
identifier
- the identifier- Returns:
- true if enabled, false otherwise
-
getPluginManager
IPluginManager getPluginManager()Get the plugin manager. This method will return null if this context does not offer a plugin manager.Note: JEB demo builds do not support plugins.
- Returns:
-
getTypeLibraryService
TypeLibraryService getTypeLibraryService()Retrieve the type library service managed by this context.- Returns:
-
getNativeSignatureDBManager
NativeSignatureDBManager getNativeSignatureDBManager()Retrieve the native signature DB manager managed by this context.- Returns:
-
getCodelessSignatureManager
CodelessSignatureManager getCodelessSignatureManager()Retrieve the codeless signature manager managed by this context.- Returns:
-
unitProperty
Convenience method to generate unit properties. Refer toUnitUtil
for additional methods.- Parameters:
unitType
- unit typepropertyName
- property name- Returns:
- the fully-qualified property name, to be used to query the Engines property manager or a Project property manager
-