Kprobe Crate
A Rust crate for implementing kernel probes (kprobes) in operating systems. This crate provides functionality for dynamically instrumenting kernel code by inserting breakpoints and debug points.
Features
- Support for multiple architectures:
- x86_64
- RISC-V 64
- LoongArch64
Usage
Basic Usage
use ;
// Create a kprobe manager and point list
let mut manager = new;
let mut point_list = new;
// Create and register a kprobe
let kprobe = register_kprobe;
// Unregister the kprobe when done
unregister_kprobe;
Example
- See DragonOS Kprobe for more details.
- See Alien Kprobe for more details.
API Overview
Core Types
KprobeManager- Manages registered kprobesKprobePointList- Tracks kprobe pointsKprobe- Represents a single kprobeKprobeBuilder- Builder for creating kprobesKprobePoint- Represents a probe point in memory
Key Functions
register_kprobe- Register a new kprobeunregister_kprobe- Remove a registered kprobeKprobeManager::get_break_list- Get the list of breakpointsKprobeManager::get_debug_list- Get the list of debug points
Safety Considerations
- This crate uses
#![no_std]and is designed for kernel-level code - Proper synchronization is required when using kprobes in multi-threaded environments
- Care must be taken when instrumenting critical kernel paths
Rust Version
Requires Rust 1.88 or later(nightly).