19 个版本 (9 个稳定版本)

1.2.1 2024年5月4日
1.1.7 2024年3月10日
1.0.4 2023年11月13日
0.4.0 2023年3月15日
0.1.1-dev22022年10月21日

#57 in FFI

GPL-2.0 许可证

81KB
2K SLoC

Poggers

一个用于与内存、进程和类似工具交互的库,主要用于游戏作弊目的。

使用 poggers 您可以实现以下功能

  • 轻松创建 DLL 的入口点,并已为您处理 panic unwrapping
  • 轻松读取和写入外部进程的内存
  • 使用 IDA 签名在进程中扫描指令。
  • 以合理的方式使用 CreateToolhelp32Snapshot,并提供了对遍历进程和模块的一等支持
  • Windows 和 Linux 的跨平台兼容性,代码更改最小化

文档 | Crates.io | 仓库

添加到您的项目中

[dependencies]
poggers = "1"
# if you need to use the entrypoint macro
poggers_derive = "0.1.5"

外部示例

一个简单的示例,说明您如何找到进程并将其写入内存

use poggers::structures::process::Process;
use poggers::traits::Mem;
fn main() {
    let process = Process::find_name("csgo.exe").unwrap();
    unsafe {
        process.write(0x1000,&1).unwrap()
    }
}

内部示例

如果您正在制作内部程序,您可能希望创建一个入口点并处理当前进程。

use poggers::structures::process::implement::utils::ProcessUtils;
use poggers::structures::process::Process;
use poggers::traits::Mem;
// automatically create an entry point for your dll! (crate type must be cdylib)
// you also do not need to worry about panic unwinding yourself as it is already done.
#[poggers_derive::create_entry]
fn entry() {
    let this_proc = Process::this_process();
    unsafe {
        let bleh : i32 = this_proc.read(0x1000).unwrap();
        println!("{}",bleh);
        let base_mod_name = this_proc.get_base_module().unwrap().get_name();
        println!("{}",base_mod_name);
    }
}

许可证

本项目/库受 GNU 通用公共许可证 v2.0 许可

依赖关系

~0.6–37MB
~551K SLoC