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, therefor 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`");