1import nose 2import cle 3 4from cle.address_translator import AT 5 6 7class MockBackend(cle.Backend): 8 def __init__(self, linked_base, mapped_base, *nargs, **kwargs): 9 super().__init__("/dev/zero", None, *nargs, **kwargs) 10 regions = [ 11 cle.Region(0x000000, 0x8048000, 0x1b2d30, 0x1b2d30), 12 cle.Region(0x1b3260, 0x81fc260, 0x002c74, 0x0057bc) 13 ] 14 self.linked_base = linked_base 15 self.mapped_base = mapped_base 16 self.segments = cle.Regions(lst=regions) 17 self.sections = self.segments 18 self.segments._rebase(self.image_base_delta) 19 self._is_mapped = True 20 21 22owner = MockBackend(0x8048000, 0xa000000) 23 24 25def test_lva_mva_translation(): 26 nose.tools.assert_equal(AT.from_lva(0x8048000, owner).to_mva(), 0xa000000) 27 nose.tools.assert_equal(AT.from_mva(0xa1b9a1b, owner).to_lva(), 0x8201a1b) 28 29 30def test_va_rva_translation(): 31 nose.tools.assert_equal(AT.from_rva(0, owner).to_va(), 0xa000000) 32 nose.tools.assert_equal(AT.from_va(0xa1b9a1b, owner).to_rva(), 0x1b9a1b) 33 34 35def test_valid_va_raw_translations(): 36 nose.tools.assert_equal(AT.from_raw(0x1b3260, owner).to_va(), 0xa1b4260) 37 nose.tools.assert_equal(AT.from_va(0xa1b6ed3, owner).to_raw(), 0x1b5ed3) 38 39 40@nose.tools.raises(TypeError) 41def test_invalid_intersegment_raw_va(): 42 AT.from_raw(0x1b3000, owner).to_va() 43 44 45def test_invalid_va_raw(): 46 nose.tools.assert_equal(AT.from_va(0xa1b6ed4, owner).to_raw(), None) 47 48 49if __name__ == '__main__': 50 list(map(lambda x: x(), filter(lambda o: callable(o) and o.__module__ == '__main__' and o.__name__.startswith("test"), globals().values()))) 51