From c4ba6d79ae3b96d56cc6b3744e7c64e004ecd161 Mon Sep 17 00:00:00 2001 From: Mason Reed Date: Tue, 21 Apr 2026 18:10:51 -0700 Subject: [Rust] Refactor `binary_view` module - Remove the "viral" `BinaryViewExt` trait and its blanket impl - Split up the binary view type from the custom trait impl - Simplify and fix bugs regarding custom binary view initialization - Rewrite Minidump binary view example, parses the PE headers to create proper sections now - Add some extra documentation - Add unit test for custom binary view --- plugins/warp/src/cache.rs | 2 +- plugins/warp/src/cache/function.rs | 1 - plugins/warp/src/cache/guid.rs | 1 - plugins/warp/src/convert/symbol.rs | 2 +- plugins/warp/src/convert/types.rs | 1 - plugins/warp/src/lib.rs | 2 +- plugins/warp/src/matcher.rs | 2 +- plugins/warp/src/plugin/load.rs | 2 +- plugins/warp/src/plugin/workflow.rs | 2 +- plugins/warp/src/processor.rs | 2 +- 10 files changed, 7 insertions(+), 10 deletions(-) (limited to 'plugins/warp/src') diff --git a/plugins/warp/src/cache.rs b/plugins/warp/src/cache.rs index d9a5a8d1..5b3469c1 100644 --- a/plugins/warp/src/cache.rs +++ b/plugins/warp/src/cache.rs @@ -7,7 +7,7 @@ pub use function::*; pub use guid::*; pub use type_reference::*; -use binaryninja::binary_view::{BinaryView, BinaryViewExt}; +use binaryninja::binary_view::BinaryView; use binaryninja::function::Function as BNFunction; use binaryninja::object_destructor::{register_object_destructor, ObjectDestructor}; use binaryninja::rc::Guard; diff --git a/plugins/warp/src/cache/function.rs b/plugins/warp/src/cache/function.rs index 79b9e86a..d7eae3af 100644 --- a/plugins/warp/src/cache/function.rs +++ b/plugins/warp/src/cache/function.rs @@ -1,5 +1,4 @@ use crate::convert::{comment_to_bn_comment, to_bn_symbol_at_address}; -use binaryninja::binary_view::BinaryViewExt; use binaryninja::function::{Function as BNFunction, FunctionUpdateType}; use binaryninja::symbol::SymbolType; use warp::signature::function::Function; diff --git a/plugins/warp/src/cache/guid.rs b/plugins/warp/src/cache/guid.rs index ede54013..3b3e4a31 100644 --- a/plugins/warp/src/cache/guid.rs +++ b/plugins/warp/src/cache/guid.rs @@ -1,7 +1,6 @@ use crate::cache::FunctionID; use crate::convert::from_bn_symbol; use crate::function_guid; -use binaryninja::binary_view::BinaryViewExt; use binaryninja::function::Function as BNFunction; use binaryninja::low_level_il::function::{FunctionMutability, LowLevelILFunction, NonSSA}; use binaryninja::rc::Ref as BNRef; diff --git a/plugins/warp/src/convert/symbol.rs b/plugins/warp/src/convert/symbol.rs index 0107cff5..5d794d30 100644 --- a/plugins/warp/src/convert/symbol.rs +++ b/plugins/warp/src/convert/symbol.rs @@ -1,4 +1,4 @@ -use binaryninja::binary_view::{BinaryView, BinaryViewExt}; +use binaryninja::binary_view::BinaryView; use binaryninja::rc::Ref as BNRef; use binaryninja::symbol::Symbol as BNSymbol; use binaryninja::symbol::SymbolType as BNSymbolType; diff --git a/plugins/warp/src/convert/types.rs b/plugins/warp/src/convert/types.rs index abfa3bc9..6969ac67 100644 --- a/plugins/warp/src/convert/types.rs +++ b/plugins/warp/src/convert/types.rs @@ -490,7 +490,6 @@ pub fn to_bn_type(arch: Option, ty: &Type) -> BNRef #[cfg(test)] mod tests { use super::*; - use binaryninja::binary_view::BinaryViewExt; use binaryninja::headless::Session; use std::path::PathBuf; use warp::r#type::guid::TypeGUID; diff --git a/plugins/warp/src/lib.rs b/plugins/warp/src/lib.rs index e0aaeed3..11f85566 100644 --- a/plugins/warp/src/lib.rs +++ b/plugins/warp/src/lib.rs @@ -4,7 +4,7 @@ use binaryninja::architecture::{ Architecture, ImplicitRegisterExtend, Register as BNRegister, RegisterInfo, }; use binaryninja::basic_block::BasicBlock as BNBasicBlock; -use binaryninja::binary_view::{BinaryView, BinaryViewExt}; +use binaryninja::binary_view::BinaryView; use binaryninja::confidence::MAX_CONFIDENCE; use binaryninja::function::{Function as BNFunction, NativeBlock}; use binaryninja::low_level_il::expression::{ diff --git a/plugins/warp/src/matcher.rs b/plugins/warp/src/matcher.rs index f96128e5..69bfd4b6 100644 --- a/plugins/warp/src/matcher.rs +++ b/plugins/warp/src/matcher.rs @@ -2,7 +2,7 @@ use crate::cache::cached_constraints; use crate::container::{Container, SourceId}; use crate::convert::to_bn_type; use binaryninja::architecture::Architecture as BNArchitecture; -use binaryninja::binary_view::{BinaryView, BinaryViewExt}; +use binaryninja::binary_view::BinaryView; use binaryninja::function::Function as BNFunction; use binaryninja::settings::{QueryOptions, Settings as BNSettings}; use serde_json::json; diff --git a/plugins/warp/src/plugin/load.rs b/plugins/warp/src/plugin/load.rs index 2be473d8..9ec6eaed 100644 --- a/plugins/warp/src/plugin/load.rs +++ b/plugins/warp/src/plugin/load.rs @@ -3,7 +3,7 @@ use crate::container::disk::{DiskContainer, DiskContainerSource}; use crate::container::{ContainerError, SourcePath}; use crate::convert::platform_to_target; use crate::plugin::workflow::run_matcher; -use binaryninja::binary_view::{BinaryView, BinaryViewExt}; +use binaryninja::binary_view::BinaryView; use binaryninja::command::Command; use binaryninja::interaction::{ show_message_box, Form, FormInputField, MessageBoxButtonResult, MessageBoxButtonSet, diff --git a/plugins/warp/src/plugin/workflow.rs b/plugins/warp/src/plugin/workflow.rs index c1728b5e..c2915717 100644 --- a/plugins/warp/src/plugin/workflow.rs +++ b/plugins/warp/src/plugin/workflow.rs @@ -10,7 +10,7 @@ use crate::plugin::settings::PluginSettings; use crate::{get_warp_ignore_tag_type, get_warp_tag_type, relocatable_regions, IGNORE_TAG_NAME}; use binaryninja::architecture::RegisterId; use binaryninja::background_task::BackgroundTask; -use binaryninja::binary_view::{BinaryView, BinaryViewExt}; +use binaryninja::binary_view::BinaryView; use binaryninja::command::Command; use binaryninja::function::Function as BNFunction; use binaryninja::rc::Ref as BNRef; diff --git a/plugins/warp/src/processor.rs b/plugins/warp/src/processor.rs index 32310d3c..666f8df3 100644 --- a/plugins/warp/src/processor.rs +++ b/plugins/warp/src/processor.rs @@ -19,7 +19,7 @@ use thiserror::Error; use walkdir::WalkDir; use binaryninja::background_task::BackgroundTask; -use binaryninja::binary_view::{BinaryView, BinaryViewExt}; +use binaryninja::binary_view::BinaryView; use binaryninja::function::Function as BNFunction; use binaryninja::project::file::ProjectFile; use binaryninja::project::Project; -- cgit v1.3.1