44 lines
1.2 KiB
Python
44 lines
1.2 KiB
Python
import os
|
|
import unittest
|
|
|
|
|
|
class ElfAarch64Tests(unittest.TestCase):
|
|
def test_can_find_exported_mag_symbol(self):
|
|
import elf_aarch64
|
|
|
|
so_path = os.path.join(
|
|
os.getcwd(),
|
|
"IR_Camera_SDK-1.0.1",
|
|
"android",
|
|
"android",
|
|
"lib",
|
|
"arm64-v8a",
|
|
"libcoresdk.so",
|
|
)
|
|
analyzer = elf_aarch64.ElfAnalyzer(so_path)
|
|
sym = analyzer.find_symbol("MAG_LinkCamera")
|
|
self.assertIsNotNone(sym)
|
|
self.assertGreater(sym.size, 0)
|
|
self.assertGreater(sym.addr, 0)
|
|
|
|
def test_disassembles_aarch64_function_and_resolves_calls(self):
|
|
import elf_aarch64
|
|
|
|
so_path = os.path.join(
|
|
os.getcwd(),
|
|
"IR_Camera_SDK-1.0.1",
|
|
"android",
|
|
"android",
|
|
"lib",
|
|
"arm64-v8a",
|
|
"libcoresdk.so",
|
|
)
|
|
analyzer = elf_aarch64.ElfAnalyzer(so_path)
|
|
lines = analyzer.disassemble_symbol("MAG_LinkCamera")
|
|
self.assertTrue(any("MAG_LinkCamera" in line for line in lines[:2]))
|
|
self.assertTrue(any("\tbl" in line or "\tblr" in line for line in lines))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|