summaryrefslogtreecommitdiff
path: root/plugins/warp/src/plugin/copy.rs
blob: 18da7dfb7b23e67d89a16e59355f32d0e806e4e5 (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
use binaryninja::binary_view::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;
        };
        let 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());
        }
    }

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