def test_ppr(self): ropper = Ropper() gadgets = ropper.searchPopPopRet(self.file) self.assertEqual(len(gadgets), 18) self.assertEqual(gadgets[0].lines[0][0], 0x52f8)
def _searchOpcode(self, opcode): r = Ropper() gadgets = [] for section in self._binaries[0].executableSections: vaddr = section.virtualAddress gadgets.extend(r.searchOpcode(self._binaries[0],opcode=opcode,disass=True)) if len(gadgets) > 0: return gadgets[0] else: raise RopChainError('Cannot create gadget for opcode: %x' % opcode)
def test_gadgets(self): ropper = Ropper() gadgets = ropper.searchRopGadgets(self.file) gadget = gadgets[0] self.assertEqual(len(gadgets), 1539) self.assertEqual(gadget.lines[0][0], 0x5b33) self.assertEqual(gadget.imageBase, 0x4ad00000) self.file.manualImagebase = 0x0 self.assertEqual(gadget.imageBase, 0x0) self.file.manualImagebase = None self.assertEqual(gadget.imageBase, 0x4ad00000)
def test_gadgets_pe(self): ropper = Ropper() gadgets = ropper.searchRopGadgets(self.file) gadget = gadgets[0] self.assertEqual(len(gadgets), 1726) self.assertEqual(gadget.lines[0][0], 0x7ee4) self.assertEqual(gadget.imageBase, 0x00008000) self.file.manualImagebase = 0x0 self.assertEqual(gadget.imageBase, 0x0) self.file.manualImagebase = None self.assertEqual(gadget.imageBase, 0x00008000)
def test_jmpreg(self): ropper = Ropper() regs=['esp'] gadgets = ropper.searchJmpReg(self.file, regs) gadget = gadgets[0] self.assertEqual(len(gadgets), 10) self.assertEqual(gadget.lines[0][0], 0xc63) self.assertEqual(gadget.imageBase, 0x8048000) self.file.manualImagebase = 0x0 self.assertEqual(gadget.imageBase, 0x0) self.file.manualImagebase = None self.assertEqual(gadget.imageBase, 0x8048000)
def _createJmp(self, reg=['esp']): r = Ropper() gadgets = [] for section in self._binaries[0].executableSections: vaddr = section.offset gadgets.extend( r.searchJmpReg(self._binaries[0],reg)) if len(gadgets) > 0: if (gadgets[0]._binary, gadgets[0]._section) not in self._usedBinaries: self._usedBinaries.append((gadgets[0]._binary, gadgets[0]._section)) return gadgets[0] else: return ''
def _createJmp(self, reg=['esp']): r = Ropper() gadgets = [] for section in self._binaries[0].executableSections: vaddr = section.virtualAddress gadgets.extend( r.searchJmpReg(self._binaries[0],reg)) if len(gadgets) > 0: if (gadgets[0]._binary, gadgets[0]._section) not in self._usedBinaries: self._usedBinaries.append((gadgets[0]._binary, gadgets[0]._section)) return self._printRopInstruction(gadgets[0]) else: return None
def test_jmpreg(self): ropper = Ropper() regs=['rsp'] gadgets = ropper.searchJmpReg(self.file, regs) gadget = gadgets[0] self.assertEqual(len(gadgets), 3) self.assertEqual(gadget.lines[0][0], 0x37dd) regs=['rsp','rax'] gadgets = ropper.searchJmpReg(self.file, regs) self.assertEqual(len(gadgets), 15) self.assertEqual(gadget.imageBase, 0x4ad00000) self.file.manualImagebase = 0x0 self.assertEqual(gadget.imageBase, 0x0) self.file.manualImagebase = None self.assertEqual(gadget.imageBase, 0x4ad00000)
def test_jmpreg(self): ropper = Ropper() regs=['rsp'] gadgets = ropper.searchJmpReg(self.file, regs) gadget = gadgets[0] self.assertEqual(len(gadgets), 18) self.assertEqual(gadget.lines[0][0], 0xb1c7) regs=['rsp','rax'] gadgets = ropper.searchJmpReg(self.file, regs) self.assertEqual(len(gadgets), 25) self.assertEqual(gadget.imageBase, 0x400000) self.file.manualImagebase = 0x0 self.assertEqual(gadget.imageBase, 0x0) self.file.manualImagebase = None self.assertEqual(gadget.imageBase, 0x400000) with self.assertRaises(RopperError): regs=['invalid'] ropper.searchJmpReg(self.file, regs)
def test_ppr(self): ropper = Ropper() with self.assertRaises(NotSupportedError): gadgets = ropper.searchPopPopRet(self.file)
def test_jmpreg(self): ropper = Ropper() regs=['esp'] with self.assertRaises(NotSupportedError): gadgets = ropper.searchJmpReg(self.file, regs)