From 58a24fe593bb99149d964c5f9b8e78fae8a31c4b Mon Sep 17 00:00:00 2001 From: Peter LaFosse Date: Tue, 24 Aug 2021 21:24:15 -0400 Subject: Update testcommon.py for refactored types/variables --- suite/testcommon.py | 79 ++++++++++++++++++++++++++++------------------------- 1 file changed, 42 insertions(+), 37 deletions(-) diff --git a/suite/testcommon.py b/suite/testcommon.py index f5448e0a..45345949 100644 --- a/suite/testcommon.py +++ b/suite/testcommon.py @@ -3,6 +3,7 @@ import os import sys import zipfile import inspect +from platform import system import binaryninja as binja from binaryninja.binaryview import BinaryViewType, BinaryView from binaryninja.filemetadata import FileMetadata @@ -740,7 +741,7 @@ class TestBuilder(Builder): typelist = bv.platform.parse_types_from_source(source) inttype = binja.Type.int(4) - namedtype = binja.NamedTypeReference("", "") # TODO: Change this as it really doesn't do anything + namedtype = binja.NamedTypeReference.create() tokens = inttype.get_tokens() + inttype.get_tokens_before_name() + inttype.get_tokens_after_name() retinfo = [] for i in range(len(typelist.variables)): @@ -1274,21 +1275,21 @@ class VerifyBuilder(Builder): assert sorted(list(map(lambda v: str(v), main_func.llil.vars))) == ['lr', 'r0', 'r1', 'r11', 'r12', 'r2', 'r3', 'sp', 'temp0'] assert sorted(list(map(lambda v: str(v), main_func.llil.ssa_vars))) == [] assert sorted(list(map(lambda v: str(v), main_func.llil.ssa_form.vars))) == ['lr', 'r0', 'r1', 'r11', 'r12', 'r2', 'r3', 'sp', 'temp0'] - assert sorted(list(map(lambda v: str(v), main_func.llil.ssa_form.ssa_registers))) == [' version 0>', ' version 1>', ' version 2>', ' version 3>', ' version 0>', ' version 1>', ' version 2>', ' version 3>', ' version 4>', ' version 5>', ' version 6>', ' version 0>', ' version 1>', ' version 2>', ' version 1>', ' version 2>', ' version 3>', ' version 0>', ' version 1>', ' version 2>', ' version 3>', ' version 1>', ' version 2>', ' version 3>', ' version 1>', ' version 2>', ' version 3>', ' version 4>', ' version 5>', ' version 0>', ' version 1>', ' version 2>', ' version 3>', ' version 4>', ' version 5>', ' version 6>', ' version 1>'] + assert sorted(list(map(lambda v: str(v), main_func.llil.ssa_form.ssa_registers))) == ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''] assert sorted(list(map(lambda v: str(v), main_func.llil.ssa_form.ssa_register_stacks))) == [] assert sorted(list(map(lambda v: str(v), main_func.llil.ssa_form.ssa_flags))) == [] - assert sorted(list(map(lambda v: str(v), main_func.llil.mapped_medium_level_il.vars))) == ['', '', '', '', '', '', '', '', '__saved_r11', 'argc', 'argv', 'envp', 'var_4'] + assert sorted(list(map(lambda v: str(v), main_func.llil.mapped_medium_level_il.vars))) == ['__saved_r11', 'argc', 'argv', 'envp', 'lr', 'r11', 'r12', 'r3', 'sp', 'temp0', 'var_10', 'var_4', 'var_c'], f"mapped_medium_level_il.vars didn't match {sorted(list(map(lambda v: str(v), main_func.llil.mapped_medium_level_il.vars)))}" assert sorted(list(map(lambda v: str(v), main_func.llil.mapped_medium_level_il.ssa_vars))) == [] - assert sorted(list(map(lambda v: str(v), main_func.llil.mapped_medium_level_il.ssa_form.vars))) == ['', '', '', '', '', '', '', '', '__saved_r11', 'argc', 'argv', 'envp', 'var_4'] - assert sorted(list(map(lambda v: str(v), main_func.llil.mapped_medium_level_il.ssa_form.ssa_vars))) == [' version 0>', ' version 1>', ' version 2>', ' version 3>', ' version 1>', ' version 2>', ' version 3>', ' version 1>', ' version 0>', ' version 1>', ' version 2>', ' version 3>', ' version 4>', ' version 5>', ' version 6>', ' version 1>', ' version 0>', ' version 0>', ' version 1>', ' version 1>', ' version 1>', ' version 1>', ' version 1>', ' version 1>', ' version 1>', ' version 1>', ' version 2>', ' version 2>', ' version 2>', ' version 2>', ' version 2>', ' version 3>', ' version 3>', ' version 3>', ' version 3>', ' version 4>', ' version 4>', ' version 5>', ' version 5>', ' version 6>'] - assert sorted(list(map(lambda v: str(v), main_func.mlil.vars))) == ['argc', 'argv', 'r0', 'r3', 'var_10', 'var_c'] + assert sorted(list(map(lambda v: str(v), main_func.llil.mapped_medium_level_il.ssa_form.vars))) == ['__saved_r11', 'argc', 'argv', 'envp', 'lr', 'r11', 'r12', 'r3', 'sp', 'temp0', 'var_10', 'var_4', 'var_c'], f"mapped_medium_level_il.ssa_form.vars didn't match {sorted(list(map(lambda v: str(v), main_func.llil.mapped_medium_level_il.ssa_form.vars)))}" + assert sorted(list(map(lambda v: str(v), main_func.llil.mapped_medium_level_il.ssa_form.ssa_vars))) == ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', ''], f"mapped_medium_level_il.ssa_form.ssa_vars didn't match {sorted(list(map(lambda v: str(v), main_func.llil.mapped_medium_level_il.ssa_form.ssa_vars)))}" + assert sorted(list(map(lambda v: str(v), main_func.mlil.vars))) == ['argc', 'argv', 'envp', 'r0', 'r3', 'var_10', 'var_c'] assert sorted(list(map(lambda v: str(v), main_func.mlil.ssa_vars))) == [] - assert sorted(list(map(lambda v: str(v), main_func.mlil.ssa_form.vars))) == ['argc', 'argv', 'r0', 'r3', 'var_10', 'var_c'] - assert sorted(list(map(lambda v: str(v), main_func.mlil.ssa_form.ssa_vars))) == [' version 0>', ' version 1>', ' version 0>', ' version 1>', ' version 1>', ' version 1>'] - assert sorted(list(map(lambda v: str(v), main_func.hlil.vars))) == ['argc', 'argv', 'var_10'] + assert sorted(list(map(lambda v: str(v), main_func.mlil.ssa_form.vars))) == ['argc', 'argv', 'envp', 'r0', 'r3', 'var_10', 'var_c'] + assert sorted(list(map(lambda v: str(v), main_func.mlil.ssa_form.ssa_vars))) == ['', '', '', '', '', '', ''], f"mlil.ssa_form.ssa_vars didn't match {sorted(list(map(lambda v: str(v), main_func.mlil.ssa_form.ssa_vars)))}" + assert sorted(list(map(lambda v: str(v), main_func.hlil.vars))) == ['argc', 'argv', 'envp'] assert sorted(list(map(lambda v: str(v), main_func.hlil.ssa_vars))) == [] - assert sorted(list(map(lambda v: str(v), main_func.hlil.ssa_form.vars))) == ['argc', 'argv', 'var_10'] - assert sorted(list(map(lambda v: str(v), main_func.hlil.ssa_form.ssa_vars))) == [' version 0>', ' version 1>', ' version 0>'] + assert sorted(list(map(lambda v: str(v), main_func.hlil.ssa_form.vars))) == ['argc', 'argv', 'envp'] + assert sorted(list(map(lambda v: str(v), main_func.hlil.ssa_form.ssa_vars))) == ['', '', ''], f"hlil.ssa_form.ssa_vars didn't match {sorted(list(map(lambda v: str(v), main_func.hlil.ssa_form.ssa_vars)))}" return True finally: self.delete_package("helloworld") @@ -1851,31 +1852,35 @@ class VerifyBuilder(Builder): assert bv.get_data_tags_at(bv.start + 0x6040)[1].data == 'New Tag' assert bv.get_data_tags_at(bv.start + 0x6040)[1].id == '9' - assert len(_start.function_tags) == 1 - assert _start.function_tags[0].type.name == 'Library' - assert _start.function_tags[0].data == 'New Tag' - assert _start.function_tags[0].id == '1' - - assert len(sub_1012.function_tags) == 2 - assert sub_1012.function_tags[0].type.name == 'Library' - assert sub_1012.function_tags[0].data == 'New Tag' - assert sub_1012.function_tags[0].id == '3' - assert sub_1012.function_tags[1].type.name == 'Bugs' - assert sub_1012.function_tags[1].data == 'New Tag' - assert sub_1012.function_tags[1].id == '10' - - assert len(_start.get_address_tags_at(bv.start + 0x1097)) == 1 - assert _start.get_address_tags_at(bv.start + 0x1097)[0].type.name == 'Important' - assert _start.get_address_tags_at(bv.start + 0x1097)[0].data == 'New Tag' - assert _start.get_address_tags_at(bv.start + 0x1097)[0].id == '4' - - assert len(_start.get_address_tags_at(bv.start + 0x1116)) == 2 - assert _start.get_address_tags_at(bv.start + 0x1116)[0].type.name == 'Crashes' - assert _start.get_address_tags_at(bv.start + 0x1116)[0].data == 'New Tag' - assert _start.get_address_tags_at(bv.start + 0x1116)[0].id == '5' - assert _start.get_address_tags_at(bv.start + 0x1116)[1].type.name == 'Needs Analysis' - assert _start.get_address_tags_at(bv.start + 0x1116)[1].data == 'New Tag' - assert _start.get_address_tags_at(bv.start + 0x1116)[1].id == '6' + function_tags = list(_start.function_tags) + assert len(function_tags) == 1 + assert function_tags[0].type.name == 'Library' + assert function_tags[0].data == 'New Tag' + assert function_tags[0].id == '1' + + function_tags = list(sub_1012.function_tags) + assert len(function_tags) == 2 + assert function_tags[0].type.name == 'Library' + assert function_tags[0].data == 'New Tag' + assert function_tags[0].id == '3' + assert function_tags[1].type.name == 'Bugs' + assert function_tags[1].data == 'New Tag' + assert function_tags[1].id == '10' + + address_tags = list(_start.get_address_tags_at(bv.start + 0x1097)) + assert len(address_tags) == 1 + assert address_tags[0].type.name == 'Important' + assert address_tags[0].data == 'New Tag' + assert address_tags[0].id == '4' + + address_tags = list(_start.get_address_tags_at(bv.start + 0x1116)) + assert len(address_tags) == 2 + assert address_tags[0].type.name == 'Crashes' + assert address_tags[0].data == 'New Tag' + assert address_tags[0].id == '5' + assert address_tags[1].type.name == 'Needs Analysis' + assert address_tags[1].data == 'New Tag' + assert address_tags[1].id == '6' binja.Settings().reset("analysis.database.suppressReanalysis") finally: @@ -1885,7 +1890,7 @@ class VerifyBuilder(Builder): def test_get_paths(self): """Get install directory and bundled plugin directory""" - core_platform = platform.system() + core_platform = system() install_dir = binja.get_install_directory() if not os.path.isdir(install_dir): -- cgit v1.3.1