public interface

ITypeManager

implements INativeItemListenable
com.pnfsoftware.jeb.core.units.code.asm.type.ITypeManager

Class Overview

A type manager, for primitive types as well as complex types.

Summary

Public Methods
abstract void addListener(INativeItemListener listener)
Register a listener relaying events generated by this type manager's type items.
abstract IStructureTypeField addStructureField(IStructureType type, String fieldName, String fieldTypeName)
Convenience method.
abstract IStructureTypeField addStructureField(IStructureType type, String fieldName, INativeType fieldType, int offset, int bitsize, int alignment, int flags)
Add or append a field or bit field to a structure type item.
abstract IStructureTypeField addStructureField(IStructureType type, String fieldName, INativeType fieldType)
Append a field to a structure type item.
abstract void completeClassTypeInitialization(IClassType type)
abstract IAliasType createAlias(String signature, String aliasedTypeSignature)
Convenience method to create a new alias type.
abstract IAliasType createAlias(String signature, INativeType aliasedType)
Create a new alias (typedef) type.
abstract IArrayType createArray(INativeType baseType, int arraySize)
Create a new array type.
abstract IArrayType createArray(INativeType baseType, int arraySize, boolean metadata)
Create a new array type.
abstract IArrayType createArray(String baseTypeName, int arraySize)
abstract IClassType createClassType(String signature, int padding, int alignment)
Create a new class type.
abstract IClassType createClassType(String signature)
Create a new class type.
abstract IEnumerationType createEnumeration(String signature)
Creation a new enumeration type.
abstract IPrototypeItem createPrototype(INativeType returnType, List<INativeType> parameterTypes)
Create a new prototype item with the default calling convention for this manager and no special prototype attribute.
abstract IPrototypeItem createPrototype(ICallingConvention callingConvention, INativeType returnType, List<INativeType> parameterTypes, Collection<PrototypeAttribute> attributes)
Create a new prototype item.
abstract IPrototypeItem createPrototypeEx(ICallingConvention callingConvention, List<INativeType> returnTypes, List<INativeType> parameterTypes, Collection<PrototypeAttribute> attributes)
Create a new prototype item.
abstract IPrototypeItem createPrototypeEx(String callingConvention, List<String> returnTypes, List<String> parameterTypes, Collection<PrototypeAttribute> attributes)
Create a new prototype item.
abstract IReferenceType createReference(INativeType baseType)
Create a new simple pointer type.
abstract IReferenceType createReference(INativeType baseType, int refCount)
Create a new reference (pointer) type.
abstract IStructureType createStructure(String signature, String... nameAndTypes)
Convenience method.
abstract IStructureType createStructure(String signature)
Convenience method.
abstract IStructureType createStructureOrUnion(String signature, int padding, int alignment)
Create a new structure or union type.
abstract IStructureType createUnion(String signature)
Convenience method.
abstract Couple<IVirtualTableDefinitionIMethodTable> createVirtualTableDefinition(String vtableStructSig, Long address, Collection<INativeMethodItem> methods)
abstract boolean deleteType(INativeType type)
Delete a type.
abstract ICallingConventionManager getCallingConventionManager()
Retrieve the calling convention manager.
abstract CompilerType getCompilerType()
abstract INativeType getExactFloat(int size)
Find a floating-point or equivalent type of the exact provided size.
abstract INativeType getExactInteger(int size, boolean signed)
Find an integer or equivalent type of the exact provided size.
abstract INativeType getInteger(int minsize, boolean signed)
Find an integer or equivalent type of at least the provided size.
abstract TypeStringParser getParser()
Retrieve a type string parser that can parse type and prototype strings to type and prototype items and register them with this type manager.
abstract int getPointerSize()
Get a pointer size in bytes.
abstract IPrimitiveTypeManager getPrimitives()
Retrieve the primitive types manager.
abstract ProcessorType getProcessorType()
abstract Collection<IPrototypeItem> getPrototypes()
Retrieve the prototypes managed by this manager.
abstract int getSlotSize()
Get the size of a stack slot in bytes.
abstract SubsystemType getSubsystemType()
abstract INativeType getType(String signature, boolean allowImportingFromTypelibs)
Retrieve a type by effective signature.
abstract INativeType getType(String signature, boolean allowImportingFromTypelibs, boolean mayBeRenamed)
Retrieve a type by effective signature.
abstract INativeType getType(String signature)
Retrieve a type by effective signature.
abstract TypeLibraryService getTypeLibraryService()
Retrieve the optional type library service (TLS) connected to this manager.
abstract Collection<INativeType> getTypes(ISimpleFilter<INativeType> filter)
Retrieve the types currently managed by this manager.
abstract Collection<INativeType> getTypes()
Retrieve the types currently managed by this manager.
abstract INativeType getVoid()
Get the void pseudo-type.
abstract IReferenceType getVoidReference()
abstract void removeListener(INativeItemListener listener)
Unregister a listener.
abstract boolean removeStructureField(IStructureType type, IStructureTypeField field)
Remove a field from a structure type item.
abstract boolean renameStructureField(IStructureType type, String fieldName, String newFieldName)
abstract boolean renameStructureField(IStructureType type, IStructureTypeField field, String newFieldName)
abstract void setClassSuperTypes(IClassType c, Collection<IClassType> supertypes, Collection<IVirtualTableDefinition> vtables)
Set up the list of super types and associated virtual tables of a class.
abstract void setClassVirtualTable(IClassType c, IVirtualTableDefinition vtable)
Set up the (single) virtual table of a class that has no super class.
abstract void verify(INativeType type)
Verify that the provided type belongs to this type manager; raise if it's not the case.
[Expand]
Inherited Methods
From interface com.pnfsoftware.jeb.core.units.code.asm.items.INativeItemListenable

Public Methods

public abstract void addListener (INativeItemListener listener)

Register a listener relaying events generated by this type manager's type items.

public abstract IStructureTypeField addStructureField (IStructureType type, String fieldName, String fieldTypeName)

Convenience method. Append a field to a structure type item.

Parameters
type structure type
fieldName field name
fieldTypeName field type

public abstract IStructureTypeField addStructureField (IStructureType type, String fieldName, INativeType fieldType, int offset, int bitsize, int alignment, int flags)

Add or append a field or bit field to a structure type item.

Parameters
type structure type
fieldName field name
fieldType field type
offset -1 to append, else, a structure offset
bitsize optional, used to indicate a bitfield
alignment optional, in bytes
flags optional, a combination of FLAG_xxx constants

public abstract IStructureTypeField addStructureField (IStructureType type, String fieldName, INativeType fieldType)

Append a field to a structure type item.

Parameters
type structure type
fieldName field name
fieldType field type

public abstract void completeClassTypeInitialization (IClassType type)

public abstract IAliasType createAlias (String signature, String aliasedTypeSignature)

Convenience method to create a new alias type.

public abstract IAliasType createAlias (String signature, INativeType aliasedType)

Create a new alias (typedef) type.

public abstract IArrayType createArray (INativeType baseType, int arraySize)

Create a new array type.

public abstract IArrayType createArray (INativeType baseType, int arraySize, boolean metadata)

Create a new array type.

Parameters
baseType type of array elements
arraySize number of elements in this array (must be >= 0)
metadata Indicate that data contains meaningless elements. Internally, the IArrayType will have the flag FLAG_TRANSIENT and won't be cached (so it can be modified safely).

public abstract IArrayType createArray (String baseTypeName, int arraySize)

public abstract IClassType createClassType (String signature, int padding, int alignment)

Create a new class type.

public abstract IClassType createClassType (String signature)

Create a new class type.

public abstract IEnumerationType createEnumeration (String signature)

Creation a new enumeration type. Enumerated contants can be added after the type is created.

public abstract IPrototypeItem createPrototype (INativeType returnType, List<INativeType> parameterTypes)

Create a new prototype item with the default calling convention for this manager and no special prototype attribute.

Parameters
returnType optional; null means void return
parameterTypes optional; null means no parameter
Returns
  • a new native prototype object

public abstract IPrototypeItem createPrototype (ICallingConvention callingConvention, INativeType returnType, List<INativeType> parameterTypes, Collection<PrototypeAttribute> attributes)

Create a new prototype item.

Parameters
callingConvention optional; null means standard calling convention (per this type manager)
returnType optional; null means void return
parameterTypes optional; null means no parameter
attributes optional
Returns
  • a new native prototype object

public abstract IPrototypeItem createPrototypeEx (ICallingConvention callingConvention, List<INativeType> returnTypes, List<INativeType> parameterTypes, Collection<PrototypeAttribute> attributes)

Create a new prototype item. Multiple return value types may be specified.

public abstract IPrototypeItem createPrototypeEx (String callingConvention, List<String> returnTypes, List<String> parameterTypes, Collection<PrototypeAttribute> attributes)

Create a new prototype item.

public abstract IReferenceType createReference (INativeType baseType)

Create a new simple pointer type.

public abstract IReferenceType createReference (INativeType baseType, int refCount)

Create a new reference (pointer) type.

public abstract IStructureType createStructure (String signature, String... nameAndTypes)

Convenience method. Create a structure with a padding of 1 byte and no alignment. Add a series of fields as specified by the `nameAndTypes` parameter.

Parameters
nameAndTypes sequence of (fieldName, fieldTypeName, ...) for fields

public abstract IStructureType createStructure (String signature)

Convenience method. Create a structure with a padding of 1 byte and no alignment.

public abstract IStructureType createStructureOrUnion (String signature, int padding, int alignment)

Create a new structure or union type. Fields can be added after the type is created.

Parameters
padding padding in bytes between fields; 0 means that type is a union
alignment alignment in bytes; the structure/union will have at least that size

public abstract IStructureType createUnion (String signature)

Convenience method. Create a union with no alignment.

public abstract Couple<IVirtualTableDefinitionIMethodTable> createVirtualTableDefinition (String vtableStructSig, Long address, Collection<INativeMethodItem> methods)

Parameters
vtableStructSig signature of the to-be-created structure that will hold the virtual methods
address optional memory address of the virtual table, if concrete
methods list of methods in the virtual table
Returns
  • a couple holding

public abstract boolean deleteType (INativeType type)

Delete a type.

Returns
  • success indicator

public abstract ICallingConventionManager getCallingConventionManager ()

Retrieve the calling convention manager.

Returns
  • the calling convention manager

public abstract CompilerType getCompilerType ()

Returns
  • may be null

public abstract INativeType getExactFloat (int size)

Find a floating-point or equivalent type of the exact provided size. The returned type may be a primitive or an alias to a primitive.

Parameters
size exact size in bytes

public abstract INativeType getExactInteger (int size, boolean signed)

Find an integer or equivalent type of the exact provided size. The returned type may be a primitive or an alias to a primitive.

Parameters
size exact size in bytes
signed signedness

public abstract INativeType getInteger (int minsize, boolean signed)

Find an integer or equivalent type of at least the provided size. The returned type may be a primitive or an alias to a primitive.

Parameters
minsize minimal size in bytes
signed signedness

public abstract TypeStringParser getParser ()

Retrieve a type string parser that can parse type and prototype strings to type and prototype items and register them with this type manager.

public abstract int getPointerSize ()

Get a pointer size in bytes.

public abstract IPrimitiveTypeManager getPrimitives ()

Retrieve the primitive types manager.

Returns
  • the primitive types manager

public abstract ProcessorType getProcessorType ()

public abstract Collection<IPrototypeItem> getPrototypes ()

Retrieve the prototypes managed by this manager.

public abstract int getSlotSize ()

Get the size of a stack slot in bytes. Typically, this would be the size of a general-purpose register.

public abstract SubsystemType getSubsystemType ()

Returns
  • may be null

public abstract INativeType getType (String signature, boolean allowImportingFromTypelibs)

Retrieve a type by effective signature. The type returned can be one managed by this type manager, a primitive returned by the primitive type manager, or a type imported from the optional TLS, if one is present.

Parameters
signature fully-qualified name (original or effective)
allowImportingFromTypelibs true to allow importing types
Returns
  • the type or null if not found

public abstract INativeType getType (String signature, boolean allowImportingFromTypelibs, boolean mayBeRenamed)

Retrieve a type by effective signature. The type returned can be one managed by this type manager, a primitive returned by the primitive type manager, or a type imported from the optional TLS, if one is present.

Parameters
signature fully-qualified name (original or effective)
allowImportingFromTypelibs true to allow importing types
mayBeRenamed if false, only original names will be checked
Returns
  • the type or null if not found

public abstract INativeType getType (String signature)

Retrieve a type by effective signature. The type returned can be one managed by this type manager, a primitive returned by the primitive type manager, or a type imported from the optional TLS, if one is present.

Parameters
signature fully-qualified name (original or effective)
Returns
  • the type or null if not found

public abstract TypeLibraryService getTypeLibraryService ()

Retrieve the optional type library service (TLS) connected to this manager. The TLS is a source of external types of prototypes. If a TLS is present, its types can be transparently imported and retrieved via getType(String).

Returns
  • the optional TLS

public abstract Collection<INativeType> getTypes (ISimpleFilter<INativeType> filter)

Retrieve the types currently managed by this manager. The following types are not returned:
- reference types (pointers)
- array types
- primitives (they are managed by the primitive type manager)
- prototypes (see getPrototypes()

Parameters
filter optional

public abstract Collection<INativeType> getTypes ()

Retrieve the types currently managed by this manager. The following types are not returned:
- reference types (pointers)
- array types
- primitives (they are managed by the primitive type manager)
- prototypes (see getPrototypes()

public abstract INativeType getVoid ()

Get the void pseudo-type.

public abstract IReferenceType getVoidReference ()

public abstract void removeListener (INativeItemListener listener)

Unregister a listener.

public abstract boolean removeStructureField (IStructureType type, IStructureTypeField field)

Remove a field from a structure type item.

public abstract boolean renameStructureField (IStructureType type, String fieldName, String newFieldName)

public abstract boolean renameStructureField (IStructureType type, IStructureTypeField field, String newFieldName)

public abstract void setClassSuperTypes (IClassType c, Collection<IClassType> supertypes, Collection<IVirtualTableDefinition> vtables)

Set up the list of super types and associated virtual tables of a class. If used, setClassVirtualTable(IClassType, IVirtualTableDefinition) cannot be used.

Parameters
supertypes a list of super types
vtables optional list of virtual tables (may be null)

public abstract void setClassVirtualTable (IClassType c, IVirtualTableDefinition vtable)

Set up the (single) virtual table of a class that has no super class. If used, setClassSuperTypes(IClassType, Collection, Collection) cannot be used.

Parameters
vtable mandatory virtual table

public abstract void verify (INativeType type)

Verify that the provided type belongs to this type manager; raise if it's not the case.

Parameters
type non-null type
Throws
JebRuntimeException if the verification failed