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 --- arch/msp430/src/lib.rs | 9 +++------ arch/riscv/src/lib.rs | 5 ++--- 2 files changed, 5 insertions(+), 9 deletions(-) (limited to 'arch') diff --git a/arch/msp430/src/lib.rs b/arch/msp430/src/lib.rs index 892e617d..0655cc85 100644 --- a/arch/msp430/src/lib.rs +++ b/arch/msp430/src/lib.rs @@ -1,9 +1,6 @@ use binaryninja::{ - add_optional_plugin_dependency, - architecture::ArchitectureExt, - calling_convention, - custom_binary_view::{BinaryViewType, BinaryViewTypeExt}, - Endianness, + add_optional_plugin_dependency, architecture::ArchitectureExt, binary_view::BinaryViewType, + calling_convention, Endianness, }; mod architecture; @@ -45,7 +42,7 @@ pub extern "C" fn CorePluginInit() -> bool { arch.set_default_calling_convention(&default); - if let Ok(bvt) = BinaryViewType::by_name("ELF") { + if let Some(bvt) = BinaryViewType::by_name("ELF") { bvt.register_arch(105, Endianness::LittleEndian, arch); } diff --git a/arch/riscv/src/lib.rs b/arch/riscv/src/lib.rs index 2bc0427c..3537a082 100644 --- a/arch/riscv/src/lib.rs +++ b/arch/riscv/src/lib.rs @@ -13,9 +13,8 @@ use binaryninja::{ ImplicitRegisterExtend, InstructionInfo, Register as Reg, RegisterInfo, UnusedFlag, UnusedRegisterStack, }, - binary_view::{BinaryView, BinaryViewExt}, + binary_view::{BinaryView, BinaryViewType}, calling_convention::{register_calling_convention, CallingConvention, ConventionBuilder}, - custom_binary_view::{BinaryViewType, BinaryViewTypeExt}, disassembly::{InstructionTextToken, InstructionTextTokenKind}, function::Function, function_recognizer::FunctionRecognizer, @@ -3101,7 +3100,7 @@ pub extern "C" fn CorePluginInit() -> bool { ); arch64.set_default_calling_convention(&cc64); - if let Ok(bvt) = BinaryViewType::by_name("ELF") { + if let Some(bvt) = BinaryViewType::by_name("ELF") { bvt.register_arch( (1 << 16) | 243, binaryninja::Endianness::LittleEndian, -- cgit v1.3.1