Rust Miri 完全指南:如何使用和用好 Miri
前言 在 Rust 的世界里,虽然编译器已经帮我们解决了大部分内存安全问题,但当你开始编写 unsafe 代码时,就进入了一个编译器无法完全保护你的领域。这时候,Miri 就成为了你最重要的安全网。 正如一位开发者在 Rust 重写项目中所说:"如果你在编写 unsafe 代码时没有使用 Miri
阅读全文 →前言 在 Rust 的世界里,虽然编译器已经帮我们解决了大部分内存安全问题,但当你开始编写 unsafe 代码时,就进入了一个编译器无法完全保护你的领域。这时候,Miri 就成为了你最重要的安全网。 正如一位开发者在 Rust 重写项目中所说:"如果你在编写 unsafe 代码时没有使用 Miri
阅读全文 →{"output":{"choices":[{"finish_reason":"stop","message":{"role":"assistant","content":"```\n本文介绍了如何使用 Rust 的 aya 框架为 Android ARM64 平台开发 eBPF 程序,涵盖环境准备、工具链安装、目标平台配置及构建流程。\n- **核心步骤**:安装 Rust 工具链、nightly 编译器、bpf-linker 和 LLVM,使用 `cargo-generate` 创建项目模板;\n- **平台适配**:通过 `.cargo/config.toml` 设置链接器为 `ld.lld`,并设置环境变量 `CARGO_CFG_BPF_TARGET_ARCH=aarch64` 实现 ARM64 架构支持;\n- **开发限制**:eBPF 程序运行在受限环境中,不支持堆内存、标准库和 panic,需使用 `unsafe` 和 helper 函数;\n- **实用技巧**:通过宏定义与字符串匹配方式绑定 kprobe 函数,结合 `bpf_probe_read_user_str_bytes` 实现用户空间字符串读取。\n\n这篇文章为开发者提供了在 Android ARM64 上使用 Rust 构建 eBPF 程序的完整实践指南,特别适用于系统级调试和安全监控场景。\n```"}}]},"usage":{"total_tokens":2473,"output_tokens":248,"input_tokens":2225},"request_id":"62c9a09e-3301-935c-91f0-e8c5bdf343a9"}
阅读全文 →第一次看到 Rust 标准库中的 ptr::fn_addr_eq 函数,第一反应是:这不就是 == 的别名吗?为什么要专门为函数指针比较创建一个新函数? 表面上的等价性 从功能角度看,fn_addr_eq(f, g) 确实等同于 f == g: use std::ptr;
阅读全文 →开始 这里使用的语言是Rust! LLVM 插件仅仅是一个 dylib,LLVM 工具(例如opt、lld )加载它时会为其提供PassBuilder。因此,你必须在你的Cargo.toml 添加下面这行: [lib] crate-type = ["cdylib"] PassBuilder允许注册
阅读全文 →动态大小类型 DST 读者大大们之前学过的几乎所有类型,都是固定大小的类型,包括集合 Vec、String 和 HashMap 等,而动态大小类型刚好与之相反:编译器无法在编译期得知该类型值的大小,只有到了程序运行时,才能动态获知。对于动态类型,我们使用 DST(dynamically sized
阅读全文 →寻找认证服务器 通过抓包发现3个与众不同的包,下面紧接着就是锐捷认证服务器的回复包,协议开始变成EAP协议。 接下来,我们对包的内容进行一波分析, c8:7f:54:c9:b2:df 不是我的mac地址吗?前面也是6字节,说明前面大概率也是一个mac地址,而且是固
阅读全文 →本次编译及运行测试均在Deepin(Debian)平台。 下载源代码 首先我们得克隆llvm-project完整的代码,不能只下载llvm子项目的代码(这样只有旧版才能编译的了)。 github git clone https://github.com/llvm/llvm-project gitee
阅读全文 →pub fn decode_config(file_path: &str) { let mut file_bytes = std::fs::read(file_path).unwrap(); let mut dst = vec![0u8; 2048]; decode_dat(
阅读全文 →首先我们需要更新升级一下已安装的包(不然安装node的时候大概率会爆炸!): pkg update && pkg upgrade 接下来我们需要安装我们需要的库: pkg install -y python nodejs yarn git 如果安装太慢了 记得换一下源或者挂个梯子! 使用yarn安装
阅读全文 →