Exemplo n.º 1
0
    def test_inst_list_selection_and_slice(self):
        inst_list = disassemble_x64(self.main_text)
        self.assertEqual(len(inst_list), 66)

        first_inst = inst_list[0]
        self.assertTrue(isinstance(first_inst, xed_decoded_inst_t))
        self.assertEqual(xed_iclass_enum_t2str(xed_decoded_inst_get_iclass(first_inst)), 'PUSH')

        last_inst = inst_list[-1]
        self.assertEqual(xed_iclass_enum_t2str(xed_decoded_inst_get_iclass(last_inst)), 'RET_NEAR')
        for idx, inst in enumerate(inst_list[:10]):
            self.assertEqual(inst.get_mnemonic_intel(), inst_list[idx].get_mnemonic_intel())
Exemplo n.º 2
0
    def test_swig_extension(self):
        inst_list = disassemble_x64(self.main_text)
        inst = inst_list[2] # push rbx
        self.assertTrue(len(inst.get_mnemonic()) != 0)
        self.assertEqual(inst.get_mnemonic_intel(), 'push rbx')
        self.assertTrue(len(inst.get_mnemonic_att()) != 0)
        self.assertEqual(inst.get_number_of_operands(), 4)
        self.assertEqual(inst.get_iclass(), 'PUSH')
        self.assertEqual(inst.get_category(), "PUSH")

        inst = inst_list[3] # sub rsp, 0xb8
        self.assertTrue(len(inst.get_mnemonic()) != 0)
        self.assertEqual(inst.get_mnemonic_intel(), "sub rsp, 0xb8")
        self.assertTrue(len(inst.get_mnemonic_att()) != 0)
        self.assertEqual(inst.get_number_of_operands(), 3)
        self.assertEqual(inst.get_iclass(), 'SUB')
        self.assertEqual(inst.get_category(), "BINARY")
Exemplo n.º 3
0
 def test_inst_list_iter(self):
     inst_list = disassemble_x64(self.main_text)
     for inst in inst_list:
         self.assertTrue(isinstance(inst, xed_decoded_inst_t))
Exemplo n.º 4
0
    def test_get_symbol_text(self):
        from elf import disass

        text = self.elf.get_symbol_text("main")
        inst_list = disass.disassemble_x64(text)
        self.assertEqual(len(inst_list), 66)