3 个版本
0.0.3 | 2024 年 3 月 9 日 |
---|---|
0.0.2 | 2022 年 11 月 14 日 |
0.0.1 | 2022 年 10 月 6 日 |
#184 在 调试
84 每月下载量
5.5MB
1K SLoC
摘要
这是一个小巧的 非官方 项目,旨在作为 symchk 的快速替代品,用于各种任务,如生成清单和下载符号。它模仿 symchk 的形式 symchk /om
,但只查找 MZ/PE 文件。
由于 symchk 做了一些奇怪的事情,它通常会崩溃或陷入无限循环。因此,这是一个更严格(并且更快)的替代品。
输出的清单与 symchk 兼容。如果您想用 symchk 替代此工具,请使用 symchk /im
⚠️ 注意:此工具是 不稳定的!CLI 接口可能会随时更改,不会警告。如果您需要程序稳定性(例如,用于自动化),请将您的安装锁定到特定版本。
看看这个工具有多快:
快速入门
# On your target
> cargo run --release -- manifest C:\Windows\System32
# On an online machine
> cargo run --release -- download SRV*C:\Symbols*https://msdl.microsoft.com/download/symbols
下载单个 PDB 文件
> cargo run --release -- download_single SRV*C:\Symbols*https://msdl.microsoft.com/download/symbols C:\Windows\System32\notepad.exe
未来
随机化清单中文件顺序可以使下载更加一致,因为没有文件系统局部性偏差。
在清单中去重文件也有助于,但这并不是什么大问题 耸肩
我们可以提供 symchk 兼容的子命令: #5
可以实施“服务器模式”,以便其他不同语言编写的工具可以利用我们的功能: #7
性能
此工具会尝试在内存中完成所有操作。首先列出所有文件,然后进行所有解析(这涉及到对文件的无映射随机访问,因此可以改进,但这似乎并不是一个问题,这种随机访问仅当它看到MZ和PE头信息且所有信息有效时才会发生)。
它还在内存中生成清单并在一次操作中将其导出,这是原始symchk的一个大瓶颈。
然后对于下载,它异步地处理清单文件,最多同时处理16个文件!原始的symchk
网络使用率仅达到约3-4 Mbps,但这个工具使我的互联网连接达到400 Mbps。
依赖项
约10-23MB
约345K SLoC