| Crates.io | moon-windows-symbols |
| lib.rs | moon-windows-symbols |
| version | 0.1.1 |
| created_at | 2024-11-14 09:29:20.597966+00 |
| updated_at | 2025-11-14 07:07:10.583394+00 |
| description | Windows symbols downloader/resolver for PDB: RVA and kernel addresses |
| homepage | https://github.com/zanpocc/moon-windows-symbols |
| repository | https://github.com/zanpocc/moon-windows-symbols |
| max_upload_size | |
| id | 1447581 |
| size | 75,601 |
Windows 平台下载并解析微软公开符号(PDB),获取函数 RVA 或内核绝对地址的 Rust 库。支持内核模块、win32k.sys、CI.dll 等。
cargo add moon-windows-symbols
dbghelp.dll 与 symsrv.dllhttps://msdl.microsoft.com/download/symbolsHTTPS_PROXY/HTTP_PROXY 环境变量,其次读取 Windows 代理设置use symbols_lib::symbols::Symbols;
// 单符号 RVA
let rva = Symbols::rva_from_file("C:/Windows/System32/win32k.sys", "EngGetForm")?;
// 批量 RVA
let map = Symbols::rvas_from_file(
"C:/Windows/System32/win32k.sys",
&["EngGetForm", "NtUserGetAsyncKeyState"],
)?;
// 内核绝对地址(需可获取基址的模块)
let addr = Symbols::kernel_address("ntoskrnl.exe", "KeBugCheckEx")?;
// 预下载指定模块 PDB(下载后立即校验可解析)
let file = Symbols::prefetch_pdb("C:/Windows/System32/CI.dll")?;
// 判断指定模块 PDB 是否已缓存且可解析
let cached = Symbols::is_pdb_cached("C:/Windows/System32/win32k.sys")?;
.part),完成后原子重命名,避免半成品被误判为已缓存Content-Length,将进行字节数比对,不一致则删除临时文件并报错pdb crate 打开验证;失败会删除文件并返回错误is_pdb_cached 判定为“已缓存”必须同时满足“存在且可解析”,否则自动清理残缺文件cargo test#[ignore],在具备环境时运行:cargo test -- --ignoredMIT License