Package ghidra.app.cmd.disassemble
Class X86_64DisassembleCommand
java.lang.Object
ghidra.framework.cmd.BackgroundCommand<Program>
ghidra.app.cmd.disassemble.DisassembleCommand
ghidra.app.cmd.disassemble.X86_64DisassembleCommand
Command object for performing 64-/32-bit x86 disassembly
This generally only comes up when debugging, since there can be multiple images loaded by an x86-64 target. For WoW64, the images may be mixed. Thus, this command allows you to disassemble 64-bit or 32-bit instructions whenever the language is set to 64-bit x86.
WARNING: If used in static programs, i.e., not debug traces, there are some potential remaining issues, particularly dealing with stored context and follow-on disassembly -- typically called for by the analyzers. In most cases, this does not matter, since mixed 64- and 32-bit code in a single image is likely a niche case and can be handled via careful commands from the user. Nevertheless, TODO: Rework x86-64 analyzers to call the correct mode of disassembly.
-
Field Summary
Fields inherited from class ghidra.app.cmd.disassemble.DisassembleCommand
disassemblyPerformed, languageError, nonExecutableStart, startSet, unalignedStart, useDefaultRepeatPatternBehavior
-
Constructor Summary
ConstructorDescriptionX86_64DisassembleCommand
(Address start, AddressSetView restrictedSet, boolean size32Mode) Constructor for X86_64DisassembleCommand.X86_64DisassembleCommand
(AddressSetView startSet, AddressSetView restrictedSet, boolean size32Mode) Constructor for X86_64DisassembleCommand. -
Method Summary
Modifier and TypeMethodDescriptionstatic AddressSet
alignSet
(int alignment, AddressSetView set) boolean
applyTo
(Program program, TaskMonitor monitor) Method called when this command is to apply changes to the given domain object.getName()
Returns the name of this command.void
setInitialContext
(RegisterValue initialContextValue) Allows a specified initial context to be used at all start points.void
setSeedContext
(DisassemblerContextImpl seedContext) Allows the disassembler context to be seeded for the various disassembly start points which may be encountered using the future flow state of the specified seedContext.Methods inherited from class ghidra.app.cmd.disassemble.DisassembleCommand
doDisassembly, doDisassemblySeeds, enableCodeAnalysis, getDisassembledAddressSet, getStatusMsg
Methods inherited from class ghidra.framework.cmd.BackgroundCommand
applyTo, canCancel, dispose, hasProgress, isModal, run, setStatusMsg, taskCompleted, toString
-
Constructor Details
-
X86_64DisassembleCommand
public X86_64DisassembleCommand(AddressSetView startSet, AddressSetView restrictedSet, boolean size32Mode) Constructor for X86_64DisassembleCommand.- Parameters:
startSet
- set of addresses to be the start of disassembly. The Command object will attempt to start a disassembly at each address in this set.restrictedSet
- addresses that can be disassembled. a null set implies no restrictions.size32Mode
- pass true if disassembling in 32-bit compatibility mode, otherwise normal 64-bit disassembly will be performed.
-
X86_64DisassembleCommand
Constructor for X86_64DisassembleCommand.- Parameters:
start
- address to be the start of a disassembly.restrictedSet
- addresses that can be disassembled. a null set implies no restrictions.size32Mode
- pass true if disassembling in 32-bit compatibility mode, otherwise normal 64-bit disassembly will be performed.
-
-
Method Details
-
getName
Description copied from interface:Command
Returns the name of this command. -
setSeedContext
Description copied from class:DisassembleCommand
Allows the disassembler context to be seeded for the various disassembly start points which may be encountered using the future flow state of the specified seedContext. Any initial context set via theDisassembleCommand.setInitialContext(RegisterValue)
method will take precedence when combined with any seed values. The seedContext should remain unchanged while disassembler command is actively running.- Overrides:
setSeedContext
in classDisassembleCommand
- Parameters:
seedContext
- seed context or null
-
setInitialContext
Description copied from class:DisassembleCommand
Allows a specified initial context to be used at all start points. This value will take precedence when combined with any individual seed context values specified by theDisassembleCommand.setSeedContext(DisassemblerContextImpl)
method. The defaultSeedContext should remain unchanged while disassembler command is actively running.- Overrides:
setInitialContext
in classDisassembleCommand
- Parameters:
initialContextValue
- the initial context value to set or null to clear it
-
alignSet
-
applyTo
Description copied from class:BackgroundCommand
Method called when this command is to apply changes to the given domain object. A monitor is provided to display status information about the command as it executes in the background.- Overrides:
applyTo
in classDisassembleCommand
- Parameters:
program
- domain object that will be affected by the commandmonitor
- monitor to show progress of the command- Returns:
- true if the command applied successfully
-