panda-re 0.49.0

The official library for interfacing with PANDA (Platform for Architecture-Neutral Dynamic Analysis)
Documentation
use panda::plugins::proc_start_linux::ProcStartLinuxCallbacks;
use panda::prelude::*;
use panda::{Callback, PppCallback};

fn main() {
    // Callbacks can capture state
    let mut count = 1;
    let bb_callback = Callback::new();
    bb_callback.before_block_exec(move |cpu, _| {
        println!("Block: {} | PC: {:#x?}", count, panda::regs::get_pc(cpu));
        count += 1;
        if count > 5 {
            // callbacks can disable themselves by capturing a copy
            // of the `Callback` reference to it
            bb_callback.disable();
        }
    });

    // If you don't need to enable and disable the callback, you can just
    // use method chaining instead of assigning to a variable
    PppCallback::new().on_rec_auxv(|_, _, auxv| {
        // print out the auxillary vector when any process starts
        dbg!(auxv);
    });

    Panda::new().generic("x86_64").replay("test").run();
}