diff options
| author | Peter LaFosse <peter@vector35.com> | 2021-08-24 21:24:15 -0400 |
|---|---|---|
| committer | Peter LaFosse <peter@vector35.com> | 2021-09-06 11:46:38 -0400 |
| commit | 58a24fe593bb99149d964c5f9b8e78fae8a31c4b (patch) | |
| tree | 01b0b6fbdcfc3253bec9421b55e06821abd186dc | |
| parent | c15388c073e0a77bb2d3c27b3275ca867cc58265 (diff) | |
Update testcommon.py for refactored types/variables
| -rw-r--r-- | suite/testcommon.py | 73 |
1 files changed, 39 insertions, 34 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))) == ['<ssa <reg lr> version 0>', '<ssa <reg lr> version 1>', '<ssa <reg lr> version 2>', '<ssa <reg lr> version 3>', '<ssa <reg r0> version 0>', '<ssa <reg r0> version 1>', '<ssa <reg r0> version 2>', '<ssa <reg r0> version 3>', '<ssa <reg r0> version 4>', '<ssa <reg r0> version 5>', '<ssa <reg r0> version 6>', '<ssa <reg r11> version 0>', '<ssa <reg r11> version 1>', '<ssa <reg r11> version 2>', '<ssa <reg r12> version 1>', '<ssa <reg r12> version 2>', '<ssa <reg r12> version 3>', '<ssa <reg r1> version 0>', '<ssa <reg r1> version 1>', '<ssa <reg r1> version 2>', '<ssa <reg r1> version 3>', '<ssa <reg r2> version 1>', '<ssa <reg r2> version 2>', '<ssa <reg r2> version 3>', '<ssa <reg r3> version 1>', '<ssa <reg r3> version 2>', '<ssa <reg r3> version 3>', '<ssa <reg r3> version 4>', '<ssa <reg r3> version 5>', '<ssa <reg sp> version 0>', '<ssa <reg sp> version 1>', '<ssa <reg sp> version 2>', '<ssa <reg sp> version 3>', '<ssa <reg sp> version 4>', '<ssa <reg sp> version 5>', '<ssa <reg sp> version 6>', '<ssa <reg temp0> version 1>'] + assert sorted(list(map(lambda v: str(v), main_func.llil.ssa_form.ssa_registers))) == ['<ssa lr version 0>', '<ssa lr version 1>', '<ssa lr version 2>', '<ssa lr version 3>', '<ssa r0 version 0>', '<ssa r0 version 1>', '<ssa r0 version 2>', '<ssa r0 version 3>', '<ssa r0 version 4>', '<ssa r0 version 5>', '<ssa r0 version 6>', '<ssa r1 version 0>', '<ssa r1 version 1>', '<ssa r1 version 2>', '<ssa r1 version 3>', '<ssa r11 version 0>', '<ssa r11 version 1>', '<ssa r11 version 2>', '<ssa r12 version 1>', '<ssa r12 version 2>', '<ssa r12 version 3>', '<ssa r2 version 0>', '<ssa r2 version 1>', '<ssa r2 version 2>', '<ssa r2 version 3>', '<ssa r3 version 1>', '<ssa r3 version 2>', '<ssa r3 version 3>', '<ssa r3 version 4>', '<ssa r3 version 5>', '<ssa sp version 0>', '<ssa sp version 1>', '<ssa sp version 2>', '<ssa sp version 3>', '<ssa sp version 4>', '<ssa sp version 5>', '<ssa sp version 6>', '<ssa temp0 version 1>'] 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))) == ['<ssa <var char** argv> version 0>', '<ssa <var char** argv> version 1>', '<ssa <var char** argv> version 2>', '<ssa <var char** argv> version 3>', '<ssa <var char** envp> version 1>', '<ssa <var char** envp> version 2>', '<ssa <var char** envp> version 3>', '<ssa <var int32_t __saved_r11> version 1>', '<ssa <var int32_t argc> version 0>', '<ssa <var int32_t argc> version 1>', '<ssa <var int32_t argc> version 2>', '<ssa <var int32_t argc> version 3>', '<ssa <var int32_t argc> version 4>', '<ssa <var int32_t argc> version 5>', '<ssa <var int32_t argc> version 6>', '<ssa <var int32_t var_4> version 1>', '<ssa <var unknown-type > version 0>', '<ssa <var unknown-type > version 0>', '<ssa <var unknown-type > version 1>', '<ssa <var unknown-type > version 1>', '<ssa <var unknown-type > version 1>', '<ssa <var unknown-type > version 1>', '<ssa <var unknown-type > version 1>', '<ssa <var unknown-type > version 1>', '<ssa <var unknown-type > version 1>', '<ssa <var unknown-type > version 1>', '<ssa <var unknown-type > version 2>', '<ssa <var unknown-type > version 2>', '<ssa <var unknown-type > version 2>', '<ssa <var unknown-type > version 2>', '<ssa <var unknown-type > version 2>', '<ssa <var unknown-type > version 3>', '<ssa <var unknown-type > version 3>', '<ssa <var unknown-type > version 3>', '<ssa <var unknown-type > version 3>', '<ssa <var unknown-type > version 4>', '<ssa <var unknown-type > version 4>', '<ssa <var unknown-type > version 5>', '<ssa <var unknown-type > version 5>', '<ssa <var unknown-type > 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))) == ['<ssa __saved_r11 version 1>', '<ssa argc version 0>', '<ssa argc version 1>', '<ssa argc version 2>', '<ssa argc version 3>', '<ssa argc version 4>', '<ssa argc version 5>', '<ssa argc version 6>', '<ssa argv version 0>', '<ssa argv version 1>', '<ssa argv version 2>', '<ssa argv version 3>', '<ssa envp version 0>', '<ssa envp version 1>', '<ssa envp version 2>', '<ssa envp version 3>', '<ssa lr version 0>', '<ssa lr version 1>', '<ssa lr version 2>', '<ssa lr version 3>', '<ssa r11 version 0>', '<ssa r11 version 1>', '<ssa r11 version 2>', '<ssa r12 version 1>', '<ssa r12 version 2>', '<ssa r12 version 3>', '<ssa r3 version 1>', '<ssa r3 version 2>', '<ssa r3 version 3>', '<ssa r3 version 4>', '<ssa r3 version 5>', '<ssa sp version 1>', '<ssa sp version 2>', '<ssa sp version 3>', '<ssa sp version 4>', '<ssa sp version 5>', '<ssa sp version 6>', '<ssa temp0 version 1>', '<ssa var_10 version 1>', '<ssa var_4 version 1>', '<ssa var_c version 1>'], 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))) == ['<ssa <var char** argv> version 0>', '<ssa <var char** var_10> version 1>', '<ssa <var int32_t argc> version 0>', '<ssa <var int32_t r0> version 1>', '<ssa <var int32_t r3> version 1>', '<ssa <var int32_t var_c> 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))) == ['<ssa argc version 0>', '<ssa argv version 0>', '<ssa envp version 0>', '<ssa r0 version 1>', '<ssa r3 version 1>', '<ssa var_10 version 1>', '<ssa var_c version 1>'], 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))) == ['<ssa <var char** argv> version 0>', '<ssa <var char** var_10> version 1>', '<ssa <var int32_t argc> 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))) == ['<ssa argc version 0>', '<ssa argv version 0>', '<ssa envp version 0>'], 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' + 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' - 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' + 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' - 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' + 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' - 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' + 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): |
