diff options
| author | Mason Reed <mason@vector35.com> | 2026-04-21 18:10:51 -0700 |
|---|---|---|
| committer | Mason Reed <35282038+emesare@users.noreply.github.com> | 2026-05-10 17:13:08 -0700 |
| commit | c4ba6d79ae3b96d56cc6b3744e7c64e004ecd161 (patch) | |
| tree | 5762fc3ff58b57caec5f42176faf6635c464b4f3 /plugins/workflow_objc/src | |
| parent | 8269a8ac29e59c7949af753dac5c1f36bb700903 (diff) | |
[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
Diffstat (limited to 'plugins/workflow_objc/src')
8 files changed, 9 insertions, 15 deletions
diff --git a/plugins/workflow_objc/src/activities/alloc_init.rs b/plugins/workflow_objc/src/activities/alloc_init.rs index 5c8bf064..953e0738 100644 --- a/plugins/workflow_objc/src/activities/alloc_init.rs +++ b/plugins/workflow_objc/src/activities/alloc_init.rs @@ -1,8 +1,5 @@ use binaryninja::{ - binary_view::{BinaryView, BinaryViewExt as _}, - medium_level_il::MediumLevelILLiftedInstruction, - rc::Ref, - types::Type, + binary_view::BinaryView, medium_level_il::MediumLevelILLiftedInstruction, rc::Ref, types::Type, workflow::AnalysisContext, }; use bstr::ByteSlice; diff --git a/plugins/workflow_objc/src/activities/objc_msg_send_calls.rs b/plugins/workflow_objc/src/activities/objc_msg_send_calls.rs index 157bb19c..41fc38c0 100644 --- a/plugins/workflow_objc/src/activities/objc_msg_send_calls.rs +++ b/plugins/workflow_objc/src/activities/objc_msg_send_calls.rs @@ -1,5 +1,5 @@ use binaryninja::{ - binary_view::{BinaryView, BinaryViewExt as _}, + binary_view::BinaryView, function::Function, low_level_il::{ expression::{ExpressionHandler as _, LowLevelILExpressionKind}, diff --git a/plugins/workflow_objc/src/activities/objc_msg_send_calls/adjust_call_type.rs b/plugins/workflow_objc/src/activities/objc_msg_send_calls/adjust_call_type.rs index 07e83ba7..4d22476a 100644 --- a/plugins/workflow_objc/src/activities/objc_msg_send_calls/adjust_call_type.rs +++ b/plugins/workflow_objc/src/activities/objc_msg_send_calls/adjust_call_type.rs @@ -1,6 +1,6 @@ use binaryninja::{ architecture::CoreRegister, - binary_view::{BinaryView, BinaryViewBase as _, BinaryViewExt}, + binary_view::{BinaryView, BinaryViewBase as _}, confidence::Conf, function::Function, low_level_il::{ diff --git a/plugins/workflow_objc/src/activities/remove_memory_management.rs b/plugins/workflow_objc/src/activities/remove_memory_management.rs index cd613ee2..a6389d22 100644 --- a/plugins/workflow_objc/src/activities/remove_memory_management.rs +++ b/plugins/workflow_objc/src/activities/remove_memory_management.rs @@ -1,6 +1,6 @@ use binaryninja::{ architecture::{Architecture as _, CoreRegister, Register as _, RegisterInfo as _}, - binary_view::{BinaryView, BinaryViewExt as _}, + binary_view::BinaryView, low_level_il::{ expression::{ExpressionHandler, LowLevelILExpressionKind}, function::{LowLevelILFunction, Mutable, NonSSA}, diff --git a/plugins/workflow_objc/src/activities/super_init.rs b/plugins/workflow_objc/src/activities/super_init.rs index 7b6bb3f7..533fe9e6 100644 --- a/plugins/workflow_objc/src/activities/super_init.rs +++ b/plugins/workflow_objc/src/activities/super_init.rs @@ -1,5 +1,5 @@ use binaryninja::{ - binary_view::{BinaryView, BinaryViewBase as _, BinaryViewExt as _}, + binary_view::{BinaryView, BinaryViewBase as _}, medium_level_il::{ operation::{Constant, LiftedSetVarSsa, LiftedSetVarSsaField, Var, VarSsa}, MediumLevelILLiftedInstruction, MediumLevelILLiftedInstructionKind, diff --git a/plugins/workflow_objc/src/activities/util.rs b/plugins/workflow_objc/src/activities/util.rs index 3ac7df7c..d9acf29f 100644 --- a/plugins/workflow_objc/src/activities/util.rs +++ b/plugins/workflow_objc/src/activities/util.rs @@ -1,5 +1,5 @@ use binaryninja::{ - binary_view::{BinaryView, BinaryViewExt as _}, + binary_view::BinaryView, confidence::Conf, function::Function, medium_level_il::{ diff --git a/plugins/workflow_objc/src/metadata/global_state.rs b/plugins/workflow_objc/src/metadata/global_state.rs index 6c128e22..a3693140 100644 --- a/plugins/workflow_objc/src/metadata/global_state.rs +++ b/plugins/workflow_objc/src/metadata/global_state.rs @@ -1,7 +1,7 @@ use binaryninja::file_metadata::SessionId; use binaryninja::object_destructor::register_object_destructor; use binaryninja::{ - binary_view::{BinaryView, BinaryViewBase, BinaryViewExt}, + binary_view::{BinaryView, BinaryViewBase}, file_metadata::FileMetadata, metadata::Metadata, object_destructor::ObjectDestructor, @@ -155,10 +155,7 @@ impl AnalysisInfo { } fn load_selector_impls(&self, bv: &BinaryView) -> Option<SelectorImplementations> { - let Some(Ok(meta)) = bv.get_metadata::<HashMap<String, Ref<Metadata>>>("Objective-C") - else { - return None; - }; + let meta = bv.get_metadata::<HashMap<String, Ref<Metadata>>>("Objective-C")?; let version_meta = meta.get("version")?; if version_meta.get_unsigned_integer()? != 1 { tracing::error!( diff --git a/plugins/workflow_objc/src/metadata/selector.rs b/plugins/workflow_objc/src/metadata/selector.rs index de2e883e..aa51d8e9 100644 --- a/plugins/workflow_objc/src/metadata/selector.rs +++ b/plugins/workflow_objc/src/metadata/selector.rs @@ -1,5 +1,5 @@ use crate::Error; -use binaryninja::binary_view::{BinaryView, BinaryViewBase as _, BinaryViewExt}; +use binaryninja::binary_view::{BinaryView, BinaryViewBase as _}; pub struct Selector { pub name: String, |
