#syscalls #interception #api-bindings

syscall-intercept

用户空间系统调用拦截库

1 个不稳定版本

0.1.0 2022年6月23日

#3#interception

MIT 许可证

475KB
11K SLoC

C 5.5K SLoC // 0.3% comments GNU Style Assembly 3.5K SLoC // 0.1% comments Perl 1K SLoC // 0.2% comments Shell 491 SLoC // 0.6% comments RPM Specfile 68 SLoC Rust 32 SLoC C++ 7 SLoC // 0.8% comments

syscall-intercept-rs

Crate Docs CI

A Rust wrapper of pmem/syscall_intercept, a system call intercepting library on x86_64 Linux.

使用方法

安装依赖

sudo apt install cmake libcapstone-dev

将以下行添加到您的 Cargo.toml

[dependencies]
syscall-intercept = "0.1"

定义您的系统调用钩子函数

use syscall_intercept::*;

extern "C" fn hook(
    num: isize,
    a0: isize,
    a1: isize,
    a2: isize,
    a3: isize,
    a4: isize,
    a5: isize,
    result: &mut isize,
) -> InterceptResult {
    ...
}

启用或禁用拦截

unsafe { set_hook_fn(hook) };
unsafe { unset_hook_fn() };

发出未被拦截的系统调用

let ret = unsafe { syscall_no_intercept(libc::SYS_exit as _, 0) };

许可证

MIT 许可证

无运行时依赖

~225KB