43 个重大版本
0.46.2 | 2024 年 1 月 31 日 |
---|---|
0.46.1 | 2023 年 7 月 12 日 |
0.46.0 | 2023 年 1 月 3 日 |
0.45.0 | 2022 年 12 月 13 日 |
0.3.0 | 2020 年 12 月 18 日 |
#658 in Rust 模式
每月 215 次下载
465KB
9K SLoC
panda-rs 是 PANDA 的 Rust 绑定集合。
以下提供
- 以属性宏形式提供的对各种 PANDA 事件的回调
- 当发生客机系统调用时的回调
- 对各种核心 PANDA 插件(hooks2、osi 等)的绑定
- 对核心 PANDA API 的安全绑定
- 通过 libpanda 驱动 PANDA 的 API
- 通过 panda_sys 访问原始 PANDA 和 QEMU API 绑定
功能标志
libpanda
- 启用 libpanda 模式。这允许编译为与 libpanda 链接的二进制文件,用于 pypanda 风格的使用。
特定于架构的功能
PANDA 支持多种架构,但需要为每个架构编译插件。为了针对特定的客机架构,请使用以下选项之一:x86_64
、i386
、arm
、aarch64
、mips
、mipsel
、mips64
、ppc
通常 PANDA 插件在其 Cargo.toml 中转发这些功能中的每一个
[features]
x86_64 = ["panda/x86_64"]
i386 = ["panda/i386"]
# ...
回调
panda-rs
广泛使用回调来处理各种事件的分析。要使用回调,只需将回调的属性应用于应调用回调的任何函数。为了在 PANDA 插件(不同于使用 libpanda 的应用程序)中使用回调,必须标记一个函数为 #[panda::init]
,否则插件在 PANDA 中将无法工作。
回调有两种形式:上述提到的自由形式函数(使用属性宏)和闭包回调,后者使用 Callback
API。
libpanda 模式
PANDA 还提供了一个动态库(libpanda)。panda-rs 允许链接到 libpanda 而不是作为 PANDA 插件进行链接。这创建了一个需要 libpanda 才能运行的可执行文件。要编译为 libpanda 模式,请确保环境变量 PANDA_PATH
设置为您的 PANDA build
文件夹。
有用的链接
重要 | 流行的回调 | 流行的插件 |
---|---|---|
初始化 |
在块执行之前 |
osi |
Panda |
读取后的虚拟内存 |
Linux 进程启动 |
[mod@hook ] |
写入后的虚拟内存 |
钩子2 |
系统上 |
ASID 改变 |
客人插件管理器 |
未初始化 |
在块执行之前使无效优化 |
|
寄存器 |
指令翻译 |
|
PandaArgs |
指令执行 |
依赖关系
~14MB
~390K SLoC