binaryninja::project

Struct Project

source
pub struct Project { /* private fields */ }

Implementations§

source§

impl Project

source

pub fn all_open() -> Array<Project>

source

pub fn create<P: BnStrCompatible, S: BnStrCompatible>( path: P, name: S, ) -> Option<Ref<Self>>

Create a new project

  • path - Path to the project directory (.bnpr)
  • name - Name of the new project
source

pub fn open_project<P: BnStrCompatible>(path: P) -> Option<Ref<Self>>

Open an existing project

  • path - Path to the project directory (.bnpr) or project metadata file (.bnpm)
source

pub fn is_open(&self) -> bool

Check if the project is currently open

source

pub fn open(&self) -> Result<(), ()>

Open a closed project

source

pub fn close(&self) -> Result<(), ()>

Close a open project

source

pub fn id(&self) -> BnString

Get the unique id of this project

source

pub fn path(&self) -> BnString

Get the path of the project

source

pub fn name(&self) -> BnString

Get the name of the project

source

pub fn set_name<S: BnStrCompatible>(&self, value: S)

Set the name of the project

source

pub fn description(&self) -> BnString

Get the description of the project

source

pub fn set_description<S: BnStrCompatible>(&self, value: S)

Set the description of the project

source

pub fn query_metadata<S: BnStrCompatible>(&self, key: S) -> Ref<Metadata>

Retrieves metadata stored under a key from the project

source

pub fn store_metadata<S: BnStrCompatible>( &self, key: S, value: &Metadata, ) -> bool

Stores metadata within the project,

  • key - Key under which to store the Metadata object
  • value - Object to store
source

pub fn remove_metadata<S: BnStrCompatible>(&self, key: S)

Removes the metadata associated with this key from the project

source

pub fn push_folder(&self, file: &ProjectFolder)

source

pub fn create_folder_from_path<P, D>( &self, path: P, parent: Option<&ProjectFolder>, description: D, ) -> Result<Ref<ProjectFolder>, ()>

Recursively create files and folders in the project from a path on disk

  • path - Path to folder on disk
  • parent - Parent folder in the project that will contain the new contents
  • description - Description for created root folder
source

pub fn create_folder_from_path_with_progress<P, D, PC>( &self, path: P, parent: Option<&ProjectFolder>, description: D, progress: PC, ) -> Result<Ref<ProjectFolder>, ()>

Recursively create files and folders in the project from a path on disk

  • path - Path to folder on disk
  • parent - Parent folder in the project that will contain the new contents
  • description - Description for created root folder
  • progress - ProgressCallback that will be called as the ProjectFolder is being created
source

pub fn create_folder<N, D>( &self, parent: Option<&ProjectFolder>, name: N, description: D, ) -> Result<Ref<ProjectFolder>, ()>

Recursively create files and folders in the project from a path on disk

  • parent - Parent folder in the project that will contain the new folder
  • name - Name for the created folder
  • description - Description for created folder
source

pub unsafe fn create_folder_unsafe<N, D, I>( &self, parent: Option<&ProjectFolder>, name: N, description: D, id: I, ) -> Result<Ref<ProjectFolder>, ()>

Recursively create files and folders in the project from a path on disk

  • parent - Parent folder in the project that will contain the new folder
  • name - Name for the created folder
  • description - Description for created folder
  • id - id unique ID
source

pub fn folders(&self) -> Result<Array<ProjectFolder>, ()>

Get a list of folders in the project

source

pub fn folder_by_id<S: BnStrCompatible>( &self, id: S, ) -> Option<Ref<ProjectFolder>>

Retrieve a folder in the project by unique folder id

source

pub fn delete_folder(&self, folder: &ProjectFolder) -> Result<(), ()>

Recursively delete a ProjectFolder from the Project.

source

pub fn delete_folder_with_progress<P: ProgressCallback>( &self, folder: &ProjectFolder, progress: P, ) -> Result<(), ()>

Recursively delete a ProjectFolder from the Project.

source

pub fn push_file(&self, file: &ProjectFile)

source

pub fn create_file_from_path<P, N, D>( &self, path: P, folder: Option<&ProjectFolder>, name: N, description: D, ) -> Result<Ref<ProjectFile>, ()>

Create a file in the project from a path on disk

  • path - Path on disk
  • folder - Folder to place the created file in
  • name - Name to assign to the created file
  • description - Description to assign to the created file
source

pub fn create_file_from_path_with_progress<P, N, D, PC>( &self, path: P, folder: Option<&ProjectFolder>, name: N, description: D, progress: PC, ) -> Result<Ref<ProjectFile>, ()>

Create a file in the project from a path on disk

  • path - Path on disk
  • folder - Folder to place the created file in
  • name - Name to assign to the created file
  • description - Description to assign to the created file
  • progress - ProgressCallback that will be called as the ProjectFile is being added
source

pub unsafe fn create_file_from_path_unsafe<P, N, D, I>( &self, path: P, folder: Option<&ProjectFolder>, name: N, description: D, id: I, creation_time: SystemTime, ) -> Result<Ref<ProjectFile>, ()>

Create a file in the project from a path on disk

  • path - Path on disk
  • folder - Folder to place the created file in
  • name - Name to assign to the created file
  • description - Description to assign to the created file
  • id - id unique ID
  • creation_time - Creation time of the file
source

pub unsafe fn create_file_from_path_unsafe_with_progress<P, N, D, I, PC>( &self, path: P, folder: Option<&ProjectFolder>, name: N, description: D, id: I, creation_time: SystemTime, progress: PC, ) -> Result<Ref<ProjectFile>, ()>

Create a file in the project from a path on disk

  • path - Path on disk
  • folder - Folder to place the created file in
  • name - Name to assign to the created file
  • description - Description to assign to the created file
  • id - id unique ID
  • creation_time - Creation time of the file
  • progress - ProgressCallback that will be called as the ProjectFile is being created
source

pub fn create_file<N, D>( &self, contents: &[u8], folder: Option<&ProjectFolder>, name: N, description: D, ) -> Result<Ref<ProjectFile>, ()>

Create a file in the project

  • contents - Bytes of the file that will be created
  • folder - Folder to place the created file in
  • name - Name to assign to the created file
  • description - Description to assign to the created file
source

pub fn create_file_with_progress<N, D, P>( &self, contents: &[u8], folder: Option<&ProjectFolder>, name: N, description: D, progress: P, ) -> Result<Ref<ProjectFile>, ()>

Create a file in the project

  • contents - Bytes of the file that will be created
  • folder - Folder to place the created file in
  • name - Name to assign to the created file
  • description - Description to assign to the created file
  • progress - ProgressCallback that will be called as the ProjectFile is being created
source

pub unsafe fn create_file_unsafe<N, D, I>( &self, contents: &[u8], folder: Option<&ProjectFolder>, name: N, description: D, id: I, creation_time: SystemTime, ) -> Result<Ref<ProjectFile>, ()>

Create a file in the project

  • contents - Bytes of the file that will be created
  • folder - Folder to place the created file in
  • name - Name to assign to the created file
  • description - Description to assign to the created file
  • id - id unique ID
  • creation_time - Creation time of the file
source

pub unsafe fn create_file_unsafe_with_progress<N, D, I, P>( &self, contents: &[u8], folder: Option<&ProjectFolder>, name: N, description: D, id: I, creation_time: SystemTime, progress: P, ) -> Result<Ref<ProjectFile>, ()>

Create a file in the project

  • contents - Bytes of the file that will be created
  • folder - Folder to place the created file in
  • name - Name to assign to the created file
  • description - Description to assign to the created file
  • id - id unique ID
  • creation_time - Creation time of the file
  • progress - ProgressCallback that will be called as the ProjectFile is being created
source

pub fn files(&self) -> Array<ProjectFile>

Get a list of files in the project

source

pub fn file_by_id<S: BnStrCompatible>(&self, id: S) -> Option<Ref<ProjectFile>>

Retrieve a file in the project by unique id

source

pub fn file_by_path<S: BnStrCompatible>( &self, path: S, ) -> Option<Ref<ProjectFile>>

Retrieve a file in the project by the path on disk

source

pub fn delete_file(&self, file: &ProjectFile) -> bool

Delete a file from the project

source

pub fn bulk_operation(&mut self) -> Result<ProjectBulkOperationLock<'_>, ()>

A context manager to speed up bulk project operations. Project modifications are synced to disk in chunks, and the project on disk vs in memory may not agree on state if an exception occurs while a bulk operation is happening.

if let Ok(bulk) = project.bulk_operation() {
    for file in std::fs::read_dir("/bin/").unwrap().into_iter() {
        let file = file.unwrap();
        let file_type = file.file_type().unwrap();
        if file_type.is_file() && !file_type.is_symlink() {
            bulk.create_file_from_path("/bin/", None, &file.file_name().to_string_lossy(), "")
                .unwrap();
        }
    }
}

Trait Implementations§

source§

impl CoreArrayProvider for Project

source§

impl Debug for Project

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl ToOwned for Project

source§

type Owned = Ref<Project>

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> Self::Owned

Creates owned data from borrowed data, usually by cloning. Read more
1.63.0 · source§

fn clone_into(&self, target: &mut Self::Owned)

Uses borrowed data to replace owned data, usually by cloning. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.