diff options
Diffstat (limited to 'rust/tests')
| -rw-r--r-- | rust/tests/base_detection.rs | 1 | ||||
| -rw-r--r-- | rust/tests/binary_reader.rs | 2 | ||||
| -rw-r--r-- | rust/tests/binary_view.rs | 77 | ||||
| -rw-r--r-- | rust/tests/binary_writer.rs | 2 | ||||
| -rw-r--r-- | rust/tests/collaboration.rs | 1 | ||||
| -rw-r--r-- | rust/tests/component.rs | 1 | ||||
| -rw-r--r-- | rust/tests/data_notification.rs | 2 | ||||
| -rw-r--r-- | rust/tests/data_renderer.rs | 2 | ||||
| -rw-r--r-- | rust/tests/debug_info.rs | 2 | ||||
| -rw-r--r-- | rust/tests/function.rs | 2 | ||||
| -rw-r--r-- | rust/tests/high_level_il.rs | 2 | ||||
| -rw-r--r-- | rust/tests/language_representation.rs | 2 | ||||
| -rw-r--r-- | rust/tests/low_level_il.rs | 1 | ||||
| -rw-r--r-- | rust/tests/medium_level_il.rs | 1 | ||||
| -rw-r--r-- | rust/tests/render_layer.rs | 1 | ||||
| -rw-r--r-- | rust/tests/section.rs | 1 | ||||
| -rw-r--r-- | rust/tests/type_container.rs | 2 | ||||
| -rw-r--r-- | rust/tests/type_library.rs | 1 | ||||
| -rw-r--r-- | rust/tests/types.rs | 2 |
19 files changed, 85 insertions, 20 deletions
diff --git a/rust/tests/base_detection.rs b/rust/tests/base_detection.rs index e42c6071..5addcb29 100644 --- a/rust/tests/base_detection.rs +++ b/rust/tests/base_detection.rs @@ -1,5 +1,4 @@ use binaryninja::base_detection::{BaseAddressDetectionConfidence, BaseAddressDetectionSettings}; -use binaryninja::binary_view::BinaryViewExt; use binaryninja::headless::Session; use std::path::PathBuf; diff --git a/rust/tests/binary_reader.rs b/rust/tests/binary_reader.rs index 0adac464..9aca3efe 100644 --- a/rust/tests/binary_reader.rs +++ b/rust/tests/binary_reader.rs @@ -1,4 +1,4 @@ -use binaryninja::binary_view::{BinaryReader, BinaryViewBase, BinaryViewExt}; +use binaryninja::binary_view::{BinaryReader, BinaryViewBase}; use binaryninja::headless::Session; use std::io::{Read, Seek, SeekFrom}; use std::path::PathBuf; diff --git a/rust/tests/binary_view.rs b/rust/tests/binary_view.rs index 11caf3d0..ff5f0514 100644 --- a/rust/tests/binary_view.rs +++ b/rust/tests/binary_view.rs @@ -1,15 +1,18 @@ use binaryninja::binary_view::search::SearchQuery; use binaryninja::binary_view::{ - AnalysisProgress, AnalysisState, BinaryViewBase, BinaryViewExt, StringType, + register_binary_view_type, AnalysisProgress, BinaryView, BinaryViewBase, CustomBinaryView, + CustomBinaryViewType, StringType, }; use binaryninja::data_buffer::DataBuffer; -use binaryninja::file_metadata::SaveSettings; +use binaryninja::file_metadata::{FileMetadata, SaveSettings}; use binaryninja::function::{Function, FunctionViewType}; use binaryninja::headless::Session; use binaryninja::main_thread::execute_on_main_thread_and_wait; use binaryninja::platform::Platform; use binaryninja::rc::Ref; +use binaryninja::segment::SegmentBuilder; use binaryninja::symbol::{Symbol, SymbolBuilder, SymbolType}; +use binaryninja::Endianness; use std::collections::{BTreeMap, HashSet}; use std::path::PathBuf; @@ -203,3 +206,73 @@ fn test_deterministic_functions() { insta::assert_debug_snapshot!(snapshot_name, functions); } } + +struct MyBinaryViewType; + +impl CustomBinaryViewType for MyBinaryViewType { + type CustomBinaryView = MyBinaryView; + const NAME: &'static str = "MyBinaryView"; + + fn create_binary_view(&self, _data: &BinaryView) -> Result<Self::CustomBinaryView, ()> { + Ok(MyBinaryView) + } + + fn is_valid_for(&self, data: &BinaryView) -> bool { + let mut buffer = [0u8; 4]; + data.read(&mut buffer, 0); + buffer == [0x42, 0x42, 0x42, 0x42] + } +} + +struct MyBinaryView; + +impl BinaryViewBase for MyBinaryView { + fn default_endianness(&self) -> Endianness { + Endianness::LittleEndian + } + + fn address_size(&self) -> usize { + 4 + } +} + +impl CustomBinaryView for MyBinaryView { + fn initialize(&mut self, view: &BinaryView) -> bool { + let test_sym = SymbolBuilder::new(SymbolType::Symbolic, "hello", 0).create(); + view.define_auto_symbol(&test_sym); + view.add_segment(SegmentBuilder::new(0..4).parent_backing(0..4).is_auto(true)); + true + } +} + +#[test] +fn test_custom_view() { + let _session = Session::new().expect("Failed to initialize session"); + let invalid_view = BinaryView::from_data(&FileMetadata::new(), &[0x0, 0x0, 0x0, 0x0]); + let valid_view = BinaryView::from_data(&FileMetadata::new(), &[0x42, 0x42, 0x42, 0x42]); + assert_eq!(MyBinaryViewType.is_valid_for(&invalid_view), false); + assert_eq!(MyBinaryViewType.is_valid_for(&valid_view), true); + + let (_, core_type) = register_binary_view_type(MyBinaryViewType); + assert_eq!(core_type.is_valid_for(&invalid_view), false); + assert_eq!(core_type.is_valid_for(&valid_view), true); + assert_eq!(core_type.name(), "MyBinaryView"); + assert_eq!(core_type.is_deprecated(), false); + assert_eq!(core_type.is_force_loadable(), false); + + let created_view = core_type + .create(&valid_view) + .expect("Failed to create view"); + assert_eq!(created_view.analysis_progress(), AnalysisProgress::Initial); + + let hello_symbol = created_view + .symbol_by_address(0) + .expect("Failed to get symbol"); + assert_eq!(hello_symbol.to_string(), "hello"); + + assert_eq!( + created_view.read_vec(0, 4), + vec![0x42, 0x42, 0x42, 0x42], + "View not backed by the parent data" + ); +} diff --git a/rust/tests/binary_writer.rs b/rust/tests/binary_writer.rs index b74b2837..e6881b98 100644 --- a/rust/tests/binary_writer.rs +++ b/rust/tests/binary_writer.rs @@ -1,4 +1,4 @@ -use binaryninja::binary_view::{BinaryReader, BinaryViewBase, BinaryViewExt, BinaryWriter}; +use binaryninja::binary_view::{BinaryReader, BinaryViewBase, BinaryWriter}; use binaryninja::headless::Session; use std::io::{Read, Seek, SeekFrom, Write}; use std::path::PathBuf; diff --git a/rust/tests/collaboration.rs b/rust/tests/collaboration.rs index 914935b5..36066cf7 100644 --- a/rust/tests/collaboration.rs +++ b/rust/tests/collaboration.rs @@ -1,4 +1,3 @@ -use binaryninja::binary_view::BinaryViewExt; use binaryninja::collaboration::{NoNameChangeset, Remote, RemoteFileType, RemoteProject}; use binaryninja::file_metadata::SaveSettings; use binaryninja::headless::Session; diff --git a/rust/tests/component.rs b/rust/tests/component.rs index 3341f0d7..2cddb468 100644 --- a/rust/tests/component.rs +++ b/rust/tests/component.rs @@ -1,4 +1,3 @@ -use binaryninja::binary_view::BinaryViewExt; use binaryninja::component::ComponentBuilder; use binaryninja::headless::Session; use std::path::PathBuf; diff --git a/rust/tests/data_notification.rs b/rust/tests/data_notification.rs index 669c8474..f277692a 100644 --- a/rust/tests/data_notification.rs +++ b/rust/tests/data_notification.rs @@ -1,6 +1,6 @@ use std::path::PathBuf; -use binaryninja::binary_view::{BinaryView, BinaryViewExt}; +use binaryninja::binary_view::BinaryView; use binaryninja::data_notification::*; use binaryninja::function::Function; use binaryninja::headless::Session; diff --git a/rust/tests/data_renderer.rs b/rust/tests/data_renderer.rs index fdf39697..a2ab372d 100644 --- a/rust/tests/data_renderer.rs +++ b/rust/tests/data_renderer.rs @@ -1,4 +1,4 @@ -use binaryninja::binary_view::{BinaryView, BinaryViewExt}; +use binaryninja::binary_view::BinaryView; use binaryninja::data_renderer::{ register_data_renderer, render_lines_for_data, CustomDataRenderer, RegistrationType, TypeContext, diff --git a/rust/tests/debug_info.rs b/rust/tests/debug_info.rs index 407b41d5..3627b4a0 100644 --- a/rust/tests/debug_info.rs +++ b/rust/tests/debug_info.rs @@ -1,4 +1,4 @@ -use binaryninja::binary_view::{BinaryView, BinaryViewExt}; +use binaryninja::binary_view::BinaryView; use binaryninja::debuginfo::*; use binaryninja::headless::Session; use binaryninja::types::{MemberAccess, MemberScope, StructureBuilder, Type, TypeBuilder}; diff --git a/rust/tests/function.rs b/rust/tests/function.rs index 507b405d..c7c9af73 100644 --- a/rust/tests/function.rs +++ b/rust/tests/function.rs @@ -1,4 +1,4 @@ -use binaryninja::binary_view::{BinaryView, BinaryViewExt}; +use binaryninja::binary_view::BinaryView; use binaryninja::file_metadata::FileMetadata; use binaryninja::headless::Session; use binaryninja::platform::Platform; diff --git a/rust/tests/high_level_il.rs b/rust/tests/high_level_il.rs index d3a4b05a..aeb15cc6 100644 --- a/rust/tests/high_level_il.rs +++ b/rust/tests/high_level_il.rs @@ -1,4 +1,4 @@ -use binaryninja::binary_view::{BinaryViewBase, BinaryViewExt}; +use binaryninja::binary_view::BinaryViewBase; use binaryninja::headless::Session; use binaryninja::high_level_il::{ HighLevelExpressionIndex, HighLevelILInstructionKind, HighLevelInstructionIndex, diff --git a/rust/tests/language_representation.rs b/rust/tests/language_representation.rs index f4aeb7bd..78af7d7f 100644 --- a/rust/tests/language_representation.rs +++ b/rust/tests/language_representation.rs @@ -1,7 +1,7 @@ use std::path::PathBuf; use binaryninja::architecture::CoreArchitecture; -use binaryninja::binary_view::{BinaryView, BinaryViewExt}; +use binaryninja::binary_view::BinaryView; use binaryninja::disassembly::{ DisassemblySettings, DisassemblyTextLine, InstructionTextToken, InstructionTextTokenKind, }; diff --git a/rust/tests/low_level_il.rs b/rust/tests/low_level_il.rs index e6f8d8ff..efae0a62 100644 --- a/rust/tests/low_level_il.rs +++ b/rust/tests/low_level_il.rs @@ -1,7 +1,6 @@ use binaryninja::architecture::{ Architecture, ArchitectureExt, CoreArchitecture, Intrinsic, Register, }; -use binaryninja::binary_view::BinaryViewExt; use binaryninja::headless::Session; use binaryninja::low_level_il::expression::{ ExpressionHandler, LowLevelExpressionIndex, LowLevelILExpressionKind, diff --git a/rust/tests/medium_level_il.rs b/rust/tests/medium_level_il.rs index a921965f..d4f76345 100644 --- a/rust/tests/medium_level_il.rs +++ b/rust/tests/medium_level_il.rs @@ -1,4 +1,3 @@ -use binaryninja::binary_view::BinaryViewExt; use binaryninja::headless::Session; use binaryninja::medium_level_il::{ MediumLevelExpressionIndex, MediumLevelILInstructionKind, MediumLevelILLiftedInstructionKind, diff --git a/rust/tests/render_layer.rs b/rust/tests/render_layer.rs index 6f6ebc98..6ca391df 100644 --- a/rust/tests/render_layer.rs +++ b/rust/tests/render_layer.rs @@ -1,5 +1,4 @@ use binaryninja::basic_block::BasicBlock; -use binaryninja::binary_view::BinaryViewExt; use binaryninja::disassembly::{DisassemblyOption, DisassemblySettings, DisassemblyTextLine}; use binaryninja::function::NativeBlock; use binaryninja::headless::Session; diff --git a/rust/tests/section.rs b/rust/tests/section.rs index ea3d8e06..ab1703c6 100644 --- a/rust/tests/section.rs +++ b/rust/tests/section.rs @@ -1,4 +1,3 @@ -use binaryninja::binary_view::BinaryViewExt; use binaryninja::headless::Session; use binaryninja::section::{SectionBuilder, Semantics}; use std::path::PathBuf; diff --git a/rust/tests/type_container.rs b/rust/tests/type_container.rs index a0916ef4..ab4cbb0b 100644 --- a/rust/tests/type_container.rs +++ b/rust/tests/type_container.rs @@ -1,4 +1,4 @@ -use binaryninja::binary_view::{BinaryView, BinaryViewExt}; +use binaryninja::binary_view::BinaryView; use binaryninja::file_metadata::FileMetadata; use binaryninja::headless::Session; use binaryninja::platform::Platform; diff --git a/rust/tests/type_library.rs b/rust/tests/type_library.rs index 19115f35..559aae7c 100644 --- a/rust/tests/type_library.rs +++ b/rust/tests/type_library.rs @@ -1,4 +1,3 @@ -use binaryninja::binary_view::BinaryViewExt; use binaryninja::headless::Session; use binaryninja::platform::Platform; use binaryninja::types::{Type, TypeClass, TypeLibrary}; diff --git a/rust/tests/types.rs b/rust/tests/types.rs index c13a1c88..a661b4ed 100644 --- a/rust/tests/types.rs +++ b/rust/tests/types.rs @@ -1,4 +1,4 @@ -use binaryninja::binary_view::{BinaryView, BinaryViewExt}; +use binaryninja::binary_view::BinaryView; use binaryninja::confidence::Conf; use binaryninja::file_metadata::FileMetadata; use binaryninja::headless::Session; |
