summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2021-08-24 21:24:15 -0400
committerPeter LaFosse <peter@vector35.com>2021-09-06 11:46:38 -0400
commit58a24fe593bb99149d964c5f9b8e78fae8a31c4b (patch)
tree01b0b6fbdcfc3253bec9421b55e06821abd186dc
parentc15388c073e0a77bb2d3c27b3275ca867cc58265 (diff)
Update testcommon.py for refactored types/variables
-rw-r--r--suite/testcommon.py73
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):