summaryrefslogtreecommitdiff
path: root/plugins/warp/src/plugin/copy.rs
blob: ee91fb4add29cb8cda26b7300117a7fa5fd94f77 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
use binaryninja::binaryview::BinaryView;
use binaryninja::command::FunctionCommand;
use binaryninja::function::Function;

use crate::cache::cached_function_guid;

pub struct CopyFunctionGUID;

impl FunctionCommand for CopyFunctionGUID {
    fn action(&self, _view: &BinaryView, func: &Function) {
        let Ok(llil) = func.low_level_il() else {
            log::error!("Could not get low level il for copied function");
            return;
        };
        if let Some(guid) = cached_function_guid(func, &llil) {
            log::info!(
                "Function GUID for {}... {}",
                func.symbol().short_name().to_string(),
                guid
            );
            if let Ok(mut clipboard) = arboard::Clipboard::new() {
                let _ = clipboard.set_text(guid.to_string());
            }
        } else {
            log::error!(
                "Failed to create GUID for function... 0x{:0x}",
                func.start()
            );
        }
    }

    fn valid(&self, _view: &BinaryView, _func: &Function) -> bool {
        true
    }
}