diff options
| author | Peter LaFosse <peter@vector35.com> | 2019-12-13 11:22:00 -0500 |
|---|---|---|
| committer | Peter LaFosse <peter@vector35.com> | 2019-12-13 11:22:00 -0500 |
| commit | 577e05b7dcce6c19e9145d6c371de3237e903b45 (patch) | |
| tree | 3d77c5a67eb5f3c9e21d6a20993d4812247e7cd5 | |
| parent | ded6f3551d8c8635fe011e295b73a44263ca91af (diff) | |
Add unit test for DataRenderer
| -rw-r--r-- | suite/testcommon.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/suite/testcommon.py b/suite/testcommon.py index ef5f63b3..cb034f30 100644 --- a/suite/testcommon.py +++ b/suite/testcommon.py @@ -7,6 +7,9 @@ import inspect import binaryninja as binja from binaryninja.binaryview import BinaryViewType, BinaryView from binaryninja.filemetadata import FileMetadata +from binaryninja.datarender import DataRenderer +from binaryninja.function import InstructionTextToken, DisassemblyTextLine +from binaryninja.enums import InstructionTextTokenType import subprocess import re @@ -624,6 +627,32 @@ class TestBuilder(Builder): finally: self.delete_package("helloworld") + def test_data_renderer(self): + """data renderer produced different result""" + file_name = self.unpackage_file("helloworld") + class ElfHeaderDataRenderer(DataRenderer): + def __init__(self): + DataRenderer.__init__(self) + def perform_is_valid_for_data(self, ctxt, view, addr, type, context): + return DataRenderer.is_type_of_struct_name(type, "Elf64_Header", context) + def perform_get_lines_for_data(self, ctxt, view, addr, type, prefix, width, context): + prefix.append(InstructionTextToken(InstructionTextTokenType.TextToken, "I'm in ur Elf64_Header")) + return [DisassemblyTextLine(prefix, addr)] + def __del__(self): + pass + try: + bv = binja.BinaryViewType['ELF'].open(file_name) + ElfHeaderDataRenderer().register_type_specific() + disass = bv.linear_disassembly + retinfo = [] + for i in disass: + i = str(i) + i = remove_low_confidence(i) + retinfo.append(i) + return retinfo + finally: + self.delete_package("helloworld") + # def test_partial_register_dataflow(self): # """partial_register_dataflow produced different results""" # file_name = self.unpackage_file("partial_register_dataflow") |
