pub struct Session { /* private fields */ }Expand description
Implementations§
Source§impl Session
impl Session
Sourcepub fn new() -> Result<Self, InitializationError>
pub fn new() -> Result<Self, InitializationError>
Before calling new you must make sure that the license is retrievable, otherwise the core won’t be able to initialize.
If you cannot otherwise provide a license via BN_LICENSE_FILE environment variable or the Binary Ninja user directory
you can call Session::new_with_opts instead of this function.
Sourcepub fn new_with_opts(
options: InitializationOptions,
) -> Result<Self, InitializationError>
pub fn new_with_opts( options: InitializationOptions, ) -> Result<Self, InitializationError>
Initialize with options, the same rules apply as Session::new, see InitializationOptions::default for the regular options passed.
This differs from Session::new in that it does not check to see if there is a license that the core
can discover by itself, therefore, it is expected that you know where your license is when calling this directly.
Sourcepub fn load(&self, file_path: impl AsRef<Path>) -> Option<Ref<BinaryView>>
pub fn load(&self, file_path: impl AsRef<Path>) -> Option<Ref<BinaryView>>
let headless_session = binaryninja::headless::Session::new().unwrap();
let bv = headless_session
.load("/bin/cat")
.expect("Couldn't open `/bin/cat`");Sourcepub fn load_with_progress(
&self,
file_path: impl AsRef<Path>,
progress: impl ProgressCallback,
) -> Option<Ref<BinaryView>>
pub fn load_with_progress( &self, file_path: impl AsRef<Path>, progress: impl ProgressCallback, ) -> Option<Ref<BinaryView>>
Load the file with a progress callback, the callback will only be called for BNDBs currently.
let headless_session = binaryninja::headless::Session::new().unwrap();
let print_progress = |progress, total| {
println!("{}/{}", progress, total);
true
};
let bv = headless_session
.load_with_progress("cat.bndb", print_progress)
.expect("Couldn't open `cat.bndb`");Sourcepub fn load_with_options<O: IntoJson>(
&self,
file_path: impl AsRef<Path>,
update_analysis_and_wait: bool,
options: Option<O>,
) -> Option<Ref<BinaryView>>
pub fn load_with_options<O: IntoJson>( &self, file_path: impl AsRef<Path>, update_analysis_and_wait: bool, options: Option<O>, ) -> Option<Ref<BinaryView>>
use binaryninja::{metadata::Metadata, rc::Ref};
use std::collections::HashMap;
let settings: Ref<Metadata> =
HashMap::from([("analysis.linearSweep.autorun", false.into())]).into();
let headless_session = binaryninja::headless::Session::new().unwrap();
let bv = headless_session
.load_with_options("/bin/cat", true, Some(settings))
.expect("Couldn't open `/bin/cat`");Sourcepub fn load_with_options_and_progress<O: IntoJson>(
&self,
file_path: impl AsRef<Path>,
update_analysis_and_wait: bool,
options: Option<O>,
progress: impl ProgressCallback,
) -> Option<Ref<BinaryView>>
pub fn load_with_options_and_progress<O: IntoJson>( &self, file_path: impl AsRef<Path>, update_analysis_and_wait: bool, options: Option<O>, progress: impl ProgressCallback, ) -> Option<Ref<BinaryView>>
Load the file with options and a progress callback, the callback will only be called for BNDBs currently.
use binaryninja::{metadata::Metadata, rc::Ref};
use std::collections::HashMap;
let print_progress = |progress, total| {
println!("{}/{}", progress, total);
true
};
let settings: Ref<Metadata> =
HashMap::from([("analysis.linearSweep.autorun", false.into())]).into();
let headless_session = binaryninja::headless::Session::new().unwrap();
let bv = headless_session
.load_with_options_and_progress("cat.bndb", true, Some(settings), print_progress)
.expect("Couldn't open `cat.bndb`");Trait Implementations§
impl Eq for Session
impl StructuralPartialEq for Session
Auto Trait Implementations§
impl Freeze for Session
impl RefUnwindSafe for Session
impl Send for Session
impl Sync for Session
impl Unpin for Session
impl UnwindSafe for Session
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more