Esempio n. 1
0
 def test_ppr(self):
     ropper = Ropper()
     
     gadgets = ropper.searchPopPopRet(self.file)
     
     self.assertEqual(len(gadgets), 18)
     self.assertEqual(gadgets[0].lines[0][0], 0x52f8)
Esempio n. 2
0
    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)
Esempio n. 3
0
    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)
Esempio n. 4
0
    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)
Esempio n. 5
0
 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)
Esempio n. 6
0
    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 ''
Esempio n. 7
0
    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
Esempio n. 8
0
    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)
Esempio n. 9
0
    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)
Esempio n. 10
0
 def test_ppr(self):
     ropper = Ropper()
     
     with self.assertRaises(NotSupportedError):
         gadgets = ropper.searchPopPopRet(self.file)
Esempio n. 11
0
 def test_jmpreg(self):
     ropper = Ropper()
     regs=['esp']
     with self.assertRaises(NotSupportedError):
         gadgets = ropper.searchJmpReg(self.file, regs)