summaryrefslogtreecommitdiff
path: root/rust/src/binary_view.rs
diff options
context:
space:
mode:
authorRubens Brandao <git@rubens.io>2024-06-20 15:34:39 -0300
committerMason Reed <mason@vector35.com>2025-02-07 17:58:26 -0500
commit01ef88f28a999ab16508483bd5a442f26876a81e (patch)
treef51d15afda44041a0f1c3e5a8222d63138a6f9cd /rust/src/binary_view.rs
parent0577345afbc75d72fd9f5e9c11e489b5f59202ae (diff)
Implement Rust BaseAddressDetection
Diffstat (limited to 'rust/src/binary_view.rs')
-rw-r--r--rust/src/binary_view.rs8
1 files changed, 8 insertions, 0 deletions
diff --git a/rust/src/binary_view.rs b/rust/src/binary_view.rs
index af4709e7..396c04ce 100644
--- a/rust/src/binary_view.rs
+++ b/rust/src/binary_view.rs
@@ -24,6 +24,7 @@
use binaryninjacore_sys::*;
use crate::architecture::{Architecture, CoreArchitecture};
+use crate::base_detection::BaseAddressDetection;
use crate::basic_block::BasicBlock;
use crate::component::{Component, IntoComponentGuid};
use crate::confidence::Conf;
@@ -369,6 +370,13 @@ pub trait BinaryViewExt: BinaryViewBase {
}
}
+ fn base_address_detection(&self) -> Option<BaseAddressDetection> {
+ unsafe {
+ let handle = BNCreateBaseAddressDetection(self.as_ref().handle);
+ NonNull::new(handle).map(|base| BaseAddressDetection::from_raw(base))
+ }
+ }
+
fn instruction_len<A: Architecture>(&self, arch: &A, addr: u64) -> Option<usize> {
unsafe {
let size = BNGetInstructionLength(self.as_ref().handle, arch.as_ref().handle, addr);