Interface INativeDisassemblerPlugin<InsnType extends IInstruction>

Type Parameters:
InsnType - instruction type handled by the disassembler plugin
All Superinterfaces:
INativePlugin<InsnType>, IPlugin, IUnitPlugin
All Known Implementing Classes:
AbstractNativeDisassemblerPlugin

public interface INativeDisassemblerPlugin<InsnType extends IInstruction> extends INativePlugin<InsnType>
Native disassembler plugins. Decompiler plugins should implement AbstractNativeDisassemblerPlugin.
  • Method Details

    • canBeProcessedOutsideCodeObject

      boolean canBeProcessedOutsideCodeObject()
      Determine when this disassembler knows how to process 'naked' code, not located within a code object.
      Returns:
      true if raw machine code can be processed without a code object
    • canProcessELF

      boolean canProcessELF(int machineId, boolean isELF64)
      Determine whether this disassembler can handle machine code identified by the provided ELF machine id.
      Parameters:
      machineId - ELF machine identifier
      isELF64 - true for 64-bit ELF objects
      Returns:
      true if the ELF machine type can be processed
    • canProcessPE

      boolean canProcessPE(int machineId, boolean isPE64)
      Determine whether this disassembler can handle machine code identified by the provided PE/COFF machine id.
      Parameters:
      machineId - PE/COFF machine identifier
      isPE64 - true for 64-bit PE objects
      Returns:
      true if the PE/COFF machine type can be processed
    • getProcessorTypes

      List<ProcessorType> getProcessorTypes()
      Provide a list of processor types supported by this plugin's processor. The list must be consistent with the candidate values that the implemented processor may return. The returned list may be empty if the processor does not use a specific type, as may be the case with bytecode parsers.
      Returns:
      a list, possibly empty
    • getProcessor

      IProcessor<InsnType> getProcessor(IUnitCreator parent)
      Create or retrieve the processor used by this disassembler.
      Parameters:
      parent - parent unit creator
      Returns:
      processor instance
    • getCallingConvention

      ICallingConvention getCallingConvention(IUnitCreator parent)
      Create or retrieve the default calling convention.
      Parameters:
      parent - parent unit creator
      Returns:
      calling convention, or null if it should be inferred
    • getMemory

      IVirtualMemory getMemory(IUnitCreator parent)
      Create or retrieve the virtual memory model.
      Parameters:
      parent - parent unit creator
      Returns:
      virtual memory model
    • getCodeFormatter

      GenericCodeFormatter<InsnType> getCodeFormatter()
      Create or retrieve the code formatter.
      Returns:
      native code formatter
    • getAnalyzerExtension

      INativeCodeAnalyzerExtension<InsnType> getAnalyzerExtension()
      Create or retrieve the analyzer extension supplied by this plugin.
      Returns:
      analyzer extension, or null if none is supplied
    • createContributions

      default Collection<IUnitContribution> createContributions(INativeCodeUnit<InsnType> codeUnit)
      Create optional unit contributions for a native code unit.
      Parameters:
      codeUnit - native code unit being created
      Returns:
      contribution collection, possibly empty