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
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
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
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
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
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
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
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
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
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 ''
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
def simpleString(self): toReturn = '%s: ' % cstr( toHex(self.__lines[0][0] + self.imageBase, self.__arch.addressLength), Color.RED) toReturn += self.simpleInstructionString() return toReturn
def simpleString(self): toReturn = "%s: " % cstr(toHex(self.__lines[0][0] + self.imageBase, self.__arch.addressLength), Color.RED) toReturn += self.simpleInstructionString() return toReturn