Class MachoRelocation


  • public class MachoRelocation
    extends java.lang.Object
    A representation of a single Mach-O relocation that the MachoRelocationHandler will use to perform the relocation. In Mach-O, some relocations may be "paired," so an instance of this class may contain 2 RelocationInfos.
    • Constructor Detail

      • MachoRelocation

        public MachoRelocation​(Program program,
                               MachHeader machoHeader,
                               Address relocationAddress,
                               RelocationInfo relocationInfo)
        Creates a new unpaired MachoRelocation object
        Parameters:
        program - The program
        machoHeader - The Mach-O header
        relocationAddress - The Address the relocation takes place at
        relocationInfo - The lower-level RelocationInfo that describes the relocation
      • MachoRelocation

        public MachoRelocation​(Program program,
                               MachHeader machoHeader,
                               Address relocationAddress,
                               RelocationInfo relocationInfo,
                               RelocationInfo relocationInfoExtra)
        Creates a new paired MachoRelocation object
        Parameters:
        program - The program
        machoHeader - The Mach-O header
        relocationAddress - The Address the relocation takes place at
        relocationInfo - The lower-level RelocationInfo that describes the first part of the relocation
        relocationInfoExtra - The lower-level RelocationInfo that describes the second part of the relocation
    • Method Detail

      • getProgram

        public Program getProgram()
        Gets the Program associated with this relocation
        Returns:
        The Program associated with this relocation
      • getRelocationAddress

        public Address getRelocationAddress()
        Gets the Address the relocation takes place at
        Returns:
        The Address the relocation takes place at
      • getRelocationInfoExtra

        public RelocationInfo getRelocationInfoExtra()
        Gets the lower-level RelocationInfo that describes the second part of the paired relocation. This could be null if the relocation is not paired.
        Returns:
        The lower-level RelocationInfo that describes the second part of the paired relocation, or null if the relocation is not paired
      • getTargetAddressExtra

        public Address getTargetAddressExtra()
                                      throws NotFoundException
        Gets the Address of the extra relocation target
        Returns:
        The Address of the extra relocation target
        Throws:
        NotFoundException - If the Address of the extra relocation target could not be found (of if there wasn't an extra relocation target).
      • requiresRelocation

        public boolean requiresRelocation()
        Checks to see if this relocation requires work to be done on it. Since our loader does not allow non-default image bases, it is unnecessary to perform relocations under certain conditions.
        Returns:
        True if relocation steps are needed; otherwise, false
      • getTargetDescription

        public java.lang.String getTargetDescription()
        Gets a short description of the target of the relocation
        Returns:
        A short description of the target of the relocation
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object