def optionChanged(self, option, old, new): if option in ['all', 'badbytes']: for binary in self.__binaries: if binary.loaded: if self.__options.badbytes: self.__gadgets[binary] = ropper.filterBadBytes(binary.gadgets, self.__options.badbytes) else: self.__gadgets[binary] = binary.gadgets if not self.__options.all: self.__gadgets[binary] = ropper.deleteDuplicates(self.__gadgets[binary])
def __searchGadgets(self, binary): r = Ropper(self.__cprinter) gadgets = r.searchGadgets(binary, depth=self.__options.depth, gtype=GadgetType[self.__options.type.upper()]) binary.loaded = True binary.gadgets = gadgets self.__gadgets[binary] = ropper.filterBadBytes(gadgets, self.__options.badbytes) if not self.__options.all: self.__gadgets[binary] = ropper.deleteDuplicates(self.__gadgets[binary]) return self.__gadgets[binary]
def __searchGadgets(self, binary): r = Ropper(self.__cprinter) gadgets = r.searchGadgets(binary, instructionCount=self.__options.inst_count, gtype=GadgetType[self.__options.type.upper()]) binary.loaded = True binary.gadgets = gadgets self.__gadgets[binary] = ropper.filterBadBytes(gadgets, self.__options.badbytes) if not self.__options.all: self.__cprinter.printInfo('deleting double gadgets...') self.__gadgets[binary] = ropper.deleteDuplicates(self.__gadgets[binary], self.__printProgress) return self.__gadgets[binary]
def __searchGadgets(self, binary): r = Ropper(self.__searchGadgetCallback) gadgets = r.searchGadgets(binary, instructionCount=self.__options.inst_count, gtype=GadgetType[self.__options.type.upper()]) binary.loaded = True binary.gadgets = gadgets self.__gadgets[binary] = ropper.filterBadBytes(gadgets, self.__options.badbytes) if not self.__options.all: self.__cprinter.printInfo('deleting double gadgets...') self.__gadgets[binary] = ropper.deleteDuplicates(self.__gadgets[binary], self.__printProgress) return self.__gadgets[binary]
def __loaddb(self, dbpath): if not dbpath.endswith('.db'): dbpath = dbpath+'.db' if not os.path.exists(dbpath): raise RopperError('db does not exist: '+dbpath) dao = GadgetDAO(dbpath, self.__cprinter) self.binary.gadgets = dao.load(self.binary) self.binary.loaded = True self.__gadgets[self.binary] = ropper.deleteDuplicates(ropper.filterBadBytes(self.binary.gadgets, self.__options.badbytes))
def __loaddb(self, dbpath): if not dbpath.endswith('.db'): dbpath = dbpath + '.db' if not os.path.exists(dbpath): raise RopperError('db does not exist: ' + dbpath) dao = GadgetDAO(dbpath, self.__cprinter) self.binary.gadgets = dao.load(self.binary) self.binary.loaded = True self.__gadgets[self.binary] = ropper.deleteDuplicates( ropper.filterBadBytes(self.binary.gadgets))
def __loaddb(self, dbpath): if not dbpath.endswith('.db'): dbpath = dbpath+'.db' if not os.path.exists(dbpath): raise RopperError('db does not exist: '+dbpath) dao = GadgetDAO(dbpath, self.__cprinter) self.binary.gadgets = dao.load(self.binary) self.binary.loaded = True if not self.__options.all: self.__gadgets[self.binary] = ropper.deleteDuplicates(ropper.filterBadBytes(self.binary.gadgets, self.__options.badbytes), self.__printProgress) else: self.__gadgets[self.binary] = self.binary.gadgets
def __searchGadgets(self, binary): r = Ropper(self.__cprinter) gadgets = r.searchGadgets( binary, depth=self.__options.depth, gtype=GadgetType[self.__options.type.upper()]) binary.loaded = True binary.gadgets = gadgets self.__gadgets[binary] = ropper.filterBadBytes(gadgets, self.__options.badbytes) if not self.__options.all: self.__gadgets[binary] = ropper.deleteDuplicates( self.__gadgets[binary]) return self.__gadgets[binary]
def __searchGadgets(self, binary): r = Ropper(self.__searchGadgetCallback) gadgets = r.searchGadgets(binary, instructionCount=self.__options.inst_count, gtype=GadgetType[self.__options.type.upper()]) binary.loaded = True if self.__options.cfg_only: if isinstance(binary, PE): optHeader = binary._binary.imageNtHeaders.header.OptionalHeader characteristics = optHeader.DllCharacteristics cfgFlag = ImageDllCharacteristics.CONTROL_FLOW_GUARD if characteristics & cfgFlag == cfgFlag: # do some filtering here self.__cprinter.printInfo('deleting CFG invalid gadgets...') gadgets = ropper.cfgFilterGadgets(gadgets, callback=self.__printCfgFilterProgress) binary.gadgets = gadgets self.__gadgets[binary] = ropper.filterBadBytes(gadgets, self.__options.badbytes) if not self.__options.all: self.__cprinter.printInfo('deleting double gadgets...') self.__gadgets[binary] = ropper.deleteDuplicates(self.__gadgets[binary], self.__printProgress) return self.__gadgets[binary]