Class SegmentCommand
- java.lang.Object
-
- ghidra.app.util.bin.format.macho.commands.LoadCommand
-
- ghidra.app.util.bin.format.macho.commands.SegmentCommand
-
- All Implemented Interfaces:
StructConverter
public class SegmentCommand extends LoadCommand
Represents a segment_command and segment_command_64 structure.- See Also:
- mach-o/loader.h
-
-
Constructor Summary
Constructors Constructor Description SegmentCommand()
DO NOT USE THIS CONSTRUCTOR, USE create*(GenericFactory ...) FACTORY METHODS INSTEAD.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static SegmentCommand
createSegmentCommand(FactoryBundledWithBinaryReader reader, boolean is32bit)
java.lang.String
getCommandName()
Returns the name of this command.long
getFileOffset()
long
getFileSize()
int
getFlags()
int
getInitProtection()
Returns a octal model value reflecting the segment's initial protection value.int
getMaxProtection()
Returns a octal model value reflecting the segment's maximum protection value allowed.int
getNumberOfSections()
Section
getSectionByName(java.lang.String sectionName)
Section
getSectionContaining(Address address)
java.util.List<Section>
getSections()
java.lang.String
getSegmentName()
long
getVMaddress()
long
getVMsize()
boolean
isAppleProtected()
boolean
isExecute()
Returns true if the initial protections include EXECUTE.boolean
isRead()
Returns true if the initial protections include READ.boolean
isWrite()
Returns true if the initial protections include WRITE.void
markup(MachHeader header, FlatProgramAPI api, Address baseAddress, boolean isBinary, ProgramModule parentModule, TaskMonitor monitor, MessageLog log)
Mark-up the program with the data structures for this load command.void
setFileOffset(long fileOffset)
DataType
toDataType()
Returns a structure datatype representing the contents of the implementor of this interface.java.lang.String
toString()
-
Methods inherited from class ghidra.app.util.bin.format.macho.commands.LoadCommand
createFragment, getCommandSize, getCommandType, getStartIndex, initLoadCommand, updateMonitor
-
-
-
-
Method Detail
-
createSegmentCommand
public static SegmentCommand createSegmentCommand(FactoryBundledWithBinaryReader reader, boolean is32bit) throws java.io.IOException
- Throws:
java.io.IOException
-
getSections
public java.util.List<Section> getSections()
-
getSectionByName
public Section getSectionByName(java.lang.String sectionName)
-
getSegmentName
public java.lang.String getSegmentName()
-
getVMaddress
public long getVMaddress()
-
getVMsize
public long getVMsize()
-
getFileOffset
public long getFileOffset()
-
setFileOffset
public void setFileOffset(long fileOffset)
-
getFileSize
public long getFileSize()
-
getMaxProtection
public int getMaxProtection()
Returns a octal model value reflecting the segment's maximum protection value allowed. For example:7 -> 0x111 -> rwx 5 -> 0x101 -> rx
- Returns:
- the maximum protections of a segment
-
getInitProtection
public int getInitProtection()
Returns a octal model value reflecting the segment's initial protection value. For example:7 -> 0x111 -> rwx 5 -> 0x101 -> rx
- Returns:
- the initial protections of a segment
-
isRead
public boolean isRead()
Returns true if the initial protections include READ.- Returns:
- true if the initial protections include READ
-
isWrite
public boolean isWrite()
Returns true if the initial protections include WRITE.- Returns:
- true if the initial protections include WRITE
-
isExecute
public boolean isExecute()
Returns true if the initial protections include EXECUTE.- Returns:
- true if the initial protections include EXECUTE
-
getNumberOfSections
public int getNumberOfSections()
-
getFlags
public int getFlags()
-
isAppleProtected
public boolean isAppleProtected()
-
toDataType
public DataType toDataType() throws DuplicateNameException, java.io.IOException
Description copied from interface:StructConverter
Returns a structure datatype representing the contents of the implementor of this interface.For example, given:
class A { int foo; double bar; }
The return value should be a structure data type with two data type components; an INT and a DOUBLE. The structure should contain field names and, if possible, field comments.
- Returns:
- returns a structure datatype representing the implementor of this interface
- Throws:
DuplicateNameException
- when a datatype of the same name already existsjava.io.IOException
- See Also:
StructureDataType
-
getCommandName
public java.lang.String getCommandName()
Description copied from class:LoadCommand
Returns the name of this command.- Specified by:
getCommandName
in classLoadCommand
- Returns:
- the name of this command
-
markup
public void markup(MachHeader header, FlatProgramAPI api, Address baseAddress, boolean isBinary, ProgramModule parentModule, TaskMonitor monitor, MessageLog log)
Description copied from class:LoadCommand
Mark-up the program with the data structures for this load command.- Specified by:
markup
in classLoadCommand
- Parameters:
header
- the mach headerapi
- the flat program apibaseAddress
- the base address to apply the mark-upisBinary
- true if mach-o was loaded as binaryparentModule
- parent module to create fragmentsmonitor
- the task monitorlog
- the message logS
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-