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
Represents a segment_command and segment_command_64 structure
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionboolean
contains
(long addr) Returns true if the segment contains the given addressstatic byte[]
create
(int magic, String name, long vmAddr, long vmSize, long fileOffset, long fileSize, int maxProt, int initProt, int numSections, int flags) Creates a new segment command byte arrayGets the name of this load commandlong
long
int
getFlags()
int
Returns a octal model value reflecting the segment's initial protection value.int
Returns a octal model value reflecting the segment's maximum protection value allowed.int
getSectionByName
(String sectionName) getSectionContaining
(Address address) long
long
boolean
boolean
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
markupRawBinary
(MachHeader header, FlatProgramAPI api, Address baseAddress, ProgramModule parentModule, TaskMonitor monitor, MessageLog log) Marks-up thisLoadCommand
with data structures and comments.void
setFileOffset
(long fileOffset) void
setFileSize
(long fileSize) void
setSegmentName
(String name) void
setVMaddress
(long vmaddr) void
setVMsize
(long vmSize) static int
size
(int magic) Gets the size a segment command would be for the given magicReturns a structure datatype representing the contents of the implementor of this interface.toString()
Methods inherited from class ghidra.app.util.bin.format.macho.commands.LoadCommand
createFragment, createPlateComment, fileOffsetToAddress, getCommandSize, getCommandType, getContextualName, getLinkerDataOffset, getLinkerDataSize, getStartIndex, markup, markupPlateComment, setEndian, updateMonitor
-
Constructor Details
-
SegmentCommand
- Throws:
IOException
-
-
Method Details
-
getSections
-
getSectionContaining
-
getSectionByName
-
getSegmentName
-
setSegmentName
-
getVMaddress
public long getVMaddress() -
setVMaddress
public void setVMaddress(long vmaddr) -
getVMsize
public long getVMsize() -
setVMsize
public void setVMsize(long vmSize) -
getFileOffset
public long getFileOffset() -
setFileOffset
public void setFileOffset(long fileOffset) -
getFileSize
public long getFileSize() -
setFileSize
public void setFileSize(long fileSize) -
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() -
contains
public boolean contains(long addr) Returns true if the segment contains the given address- Parameters:
addr
- The address to check- Returns:
- True if the segment contains the given address; otherwise, false
-
toDataType
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 existsIOException
- if an IO-related error occurs- See Also:
-
getCommandName
Description copied from class:LoadCommand
Gets the name of this load command- Specified by:
getCommandName
in classLoadCommand
- Returns:
- The name of this load command
-
markupRawBinary
public void markupRawBinary(MachHeader header, FlatProgramAPI api, Address baseAddress, ProgramModule parentModule, TaskMonitor monitor, MessageLog log) Description copied from class:LoadCommand
Marks-up thisLoadCommand
with data structures and comments. Assumes the program was imported as a Raw Binary.- Overrides:
markupRawBinary
in classLoadCommand
- Parameters:
header
- The Mach-O headerapi
- AFlatProgramAPI
baseAddress
- The base address of the programparentModule
- The parentmodule
to create fragmentsmonitor
- A cancellable task monitorlog
- The log- See Also:
-
toString
-
create
public static byte[] create(int magic, String name, long vmAddr, long vmSize, long fileOffset, long fileSize, int maxProt, int initProt, int numSections, int flags) throws MachException Creates a new segment command byte array- Parameters:
magic
- The magicname
- The name of the segment (must be less than or equal to 16 bytes)vmAddr
- The address of the start of the segmentvmSize
- The size of the segment in memoryfileOffset
- The file offset of the start of the segmentfileSize
- The size of the segment on diskmaxProt
- The maximum protections of the segmentinitProt
- The initial protection of the segmentnumSections
- The number of sections in the segmentflags
- The segment flags- Returns:
- The new segment in byte array form
- Throws:
MachException
- if an invalid magic value was passed in (seeMachConstants
), or if the desired segment name exceeds 16 bytes
-
size
Gets the size a segment command would be for the given magic- Parameters:
magic
- The magic- Returns:
- The size in bytes a segment command would be for the given magic
- Throws:
MachException
- if an invalid magic value was passed in (seeMachConstants
)
-