Ejemplo n.º 1
0
    def simpleString(self):
        analyseColor = Color.CYAN if self.__info else Color.RED
        address = self.__lines[0][0]

        if isinstance(self.arch, ropper.arch.ArchitectureArmThumb):
            address += 1
            toReturn = '%s (%s): ' % (cstr(
                toHex(self._lines[0][0] + self.imageBase,
                      self.__arch.addressLength), analyseColor),
                                      cstr(
                                          toHex(address + self.imageBase,
                                                self.__arch.addressLength),
                                          Color.GREEN))
        else:
            toReturn = '%s: ' % cstr(
                toHex(self._lines[0][0] + self.imageBase,
                      self.__arch.addressLength), analyseColor)
        toReturn += self.simpleInstructionString()
        #savefile = open('lines-save','w')
        #for i in range(0,len(self.__lines)):
        #    savefile.write('\n')
        #    for j in range(0,len(self.__lines[i])):
        #        savefile.write(str(self.__lines[i][j]) + '\n')
        #savefile.close()
        #if self.__info:
        #toReturn += '\nClobbered Register = %s; StackPointer-Offset = %s\n' % (", ".join(list(self.info.clobberedRegisters)),self.info.spOffset if self.info.spOffset is not None else 'Undef')
        return toReturn
Ejemplo n.º 2
0
    def __str__(self):
        if not Gadget.DETAILED:
            return self.simpleString()
        if not len(self._lines):
            return "empty gadget"
        address = self._lines[0][0]
        if self.__arch == ropper.arch.ARMTHUMB:
            address += 1
            toReturn = cstr('Gadget', Color.BLUE) + ': %s (%s)\n' % (
                cstr(
                    toHex(self._lines[0][0] + self.imageBase,
                          self.__arch.addressLength), Color.YELLOW),
                cstr(
                    toHex(address + self.imageBase, self.__arch.addressLength),
                    Color.GREEN))
        else:
            toReturn = cstr('Gadget', Color.BLUE) + ': %s\n' % (cstr(
                toHex(self._lines[0][0] + self.imageBase,
                      self.__arch.addressLength), Color.YELLOW))
        for line in self._lines:
            toReturn += cstr(
                toHex(line[0] + self.imageBase, self.__arch.addressLength),
                Color.RED) + ': ' + cstr(line[1], Color.LIGHT_GRAY) + '\n'

        return toReturn
Ejemplo n.º 3
0
    def __str__(self):
        if not len(self.__lines):
            return "empty gadget"
        toReturn = cstr('Gadget', Color.GREEN)+': %s\n' % (cstr(toHex(self.__lines[0][0] + self.imageBase, self.__arch.addressLength), Color.BLUE))
        for line in self.__lines:
            toReturn += cstr(toHex(line[0] + self.imageBase, self.__arch.addressLength), Color.RED) +': '+ cstr(line[1], Color.LIGHT_GRAY) + '\n'

        return toReturn
Ejemplo n.º 4
0
 def simpleString(self):
     address = self.__lines[0][0]
     if self.__arch == ropper.arch.ARMTHUMB:
         address += 1
         toReturn = '%s (%s): ' % (cstr(toHex(self.__lines[0][0] + self.imageBase, self.__arch.addressLength), Color.RED),cstr(toHex(address + self.imageBase, self.__arch.addressLength), Color.GREEN))
     else:
         toReturn = '%s: ' % cstr(toHex(self.__lines[0][0] + self.imageBase, self.__arch.addressLength), Color.RED)
     toReturn += self.simpleInstructionString()
     return toReturn
Ejemplo n.º 5
0
 def simpleString(self):
     analyseColor = Color.CYAN if self.__info else Color.RED
     address = self.__lines[0][0]
     
     if isinstance(self.arch, ropper.arch.ArchitectureArmThumb):
         address += 1
         toReturn = '%s (%s): ' % (cstr(toHex(self._lines[0][0] + self.imageBase, self.__arch.addressLength), analyseColor),cstr(toHex(address + self.imageBase, self.__arch.addressLength), Color.GREEN))
     else:
         toReturn = '%s: ' % cstr(toHex(self._lines[0][0] + self.imageBase, self.__arch.addressLength), analyseColor)
     toReturn += self.simpleInstructionString()
     if self.__info:
         toReturn += '\nClobbered Register = %s; StackPointer-Offset = %s\n' % (", ".join(list(self.info.clobberedRegisters)),self.info.spOffset if self.info.spOffset is not None else 'Undef')
     return toReturn
Ejemplo n.º 6
0
    def __str__(self):
        if not len(self.__lines):
            return "empty gadget"
        address = self.__lines[0][0]
        if self.__arch == ropper.arch.ARMTHUMB:
            address += 1
            toReturn = cstr('Gadget', Color.BLUE)+': %s (%s)\n' % (cstr(toHex(self.__lines[0][0] + self.imageBase, self.__arch.addressLength), Color.YELLOW),cstr(toHex(address+ self.imageBase, self.__arch.addressLength), Color.GREEN))
        else:
            toReturn = cstr('Gadget', Color.BLUE)+': %s\n' % (cstr(toHex(self.__lines[0][0] + self.imageBase, self.__arch.addressLength), Color.YELLOW))
        for line in self.__lines:
            toReturn += cstr(toHex(line[0] + self.imageBase, self.__arch.addressLength), Color.RED) +': '+ cstr(line[1], Color.LIGHT_GRAY) + '\n'

        return toReturn
Ejemplo n.º 7
0
    def simpleString(self):
        analyseColor = Color.CYAN if self.__info else Color.RED
        address = self.__lines[0][0]

        if isinstance(self.arch, ropper.arch.ArchitectureArmThumb):
            address += 1
            toReturn = '%s (%s): ' % (cstr(toHex(self._lines[0][0] + self.imageBase, self.__arch.addressLength), analyseColor),cstr(toHex(address + self.imageBase, self.__arch.addressLength), Color.GREEN))
        else:
            toReturn = '%s: ' % cstr(toHex(self._lines[0][0] + self.imageBase, self.__arch.addressLength), analyseColor)
        toReturn += self.simpleInstructionString()
        if self.__info:
            toReturn += '\nClobbered Register = %s; StackPointer-Offset = %s\n' % (", ".join(list(self.info.clobberedRegisters)),self.info.spOffset if self.info.spOffset is not None else 'Undef')
        return toReturn
Ejemplo n.º 8
0
    def disassemblyString(self):
        toReturn = ''
        for line in self.__lines:
            toReturn += cstr(
                toHex(line[0] + self.imageBase, self.__arch.addressLength),
                Color.RED) + ': ' + cstr(line[1], Color.LIGHT_GRAY) + '\n'

        return toReturn
Ejemplo n.º 9
0
 def simpleString(self):
     address = self.__lines[0][0]
     if self.__arch == ropper.arch.ARMTHUMB:
         address += 1
         toReturn = '%s (%s): ' % (cstr(
             toHex(self.__lines[0][0] + self.imageBase,
                   self.__arch.addressLength), Color.RED),
                                   cstr(
                                       toHex(address + self.imageBase,
                                             self.__arch.addressLength),
                                       Color.GREEN))
     else:
         toReturn = '%s: ' % cstr(
             toHex(self.__lines[0][0] + self.imageBase,
                   self.__arch.addressLength), Color.RED)
     toReturn += self.simpleInstructionString()
     return toReturn
Ejemplo n.º 10
0
Archivo: gadget.py Proyecto: dhn/Ropper
    def disassemblyString(self):
        toReturn = ""
        for line in self.__lines:
            toReturn += (
                cstr(toHex(line[0] + self.imageBase, self.__arch.addressLength), Color.RED)
                + ": "
                + cstr(line[1], Color.LIGHT_GRAY)
                + "\n"
            )

        return toReturn
Ejemplo n.º 11
0
    def disassAddress(self, name, address, length):
        fc = self.getFileFor(name)
        if not fc:
            raise RopperError('No such file opened: %s' % name)
        eSections = fc.loader.executableSections

        for section in  eSections:
            if section.virtualAddress <= address and section.virtualAddress + section.size > address:
                ropper = Ropper()


                g = ropper.disassembleAddress(section, fc.loader, address, address - (fc.loader.imageBase+section.offset), length)
                if not g:
                    raise RopperError('Cannot disassemble address: %s' % toHex(address))
                    
                if length < 0:
                    length = length * -1
                return g.disassemblyString()
        return ''
Ejemplo n.º 12
0
    def disassAddress(self, name, address, length):
        fc = self.getFileFor(name)
        if not fc:
            raise RopperError('No such file opened: %s' % name)
        eSections = fc.loader.executableSections

        for section in  eSections:
            if section.virtualAddress <= address and section.virtualAddress + section.size > address:
                ropper = Ropper()


                g = ropper.disassembleAddress(section, fc.loader, address, address - (fc.loader.imageBase+section.offset), length)
                if not g:
                    raise RopperError('Cannot disassemble address: %s' % toHex(address))

                if length < 0:
                    length = length * -1
                return g.disassemblyString()
        return ''
Ejemplo n.º 13
0
    def disassemblyString(self):
        toReturn = ''
        for line in self.__lines:
            toReturn += cstr(toHex(line[0] + self.imageBase, self.__arch.addressLength), Color.RED) +': '+ cstr(line[1], Color.LIGHT_GRAY) + '\n'

        return toReturn
Ejemplo n.º 14
0
 def simpleString(self):
     toReturn = '%s: ' % cstr(
         toHex(self.__lines[0][0] + self.imageBase,
               self.__arch.addressLength), Color.RED)
     toReturn += self.simpleInstructionString()
     return toReturn
Ejemplo n.º 15
0
Archivo: gadget.py Proyecto: dhn/Ropper
 def simpleString(self):
     toReturn = "%s: " % cstr(toHex(self.__lines[0][0] + self.imageBase, self.__arch.addressLength), Color.RED)
     toReturn += self.simpleInstructionString()
     return toReturn