16 个版本
0.13.2 | 2024年7月31日 |
---|---|
0.11.1 | 2023年8月31日 |
0.10.1 | 2023年5月24日 |
0.9.0 | 2023年1月31日 |
0.1.2 | 2021年8月23日 |
#9 in #安全测试
每月下载量 177
2.5MB
68K SLoC
SymCC 符号执行跟踪运行时 Rust 绑定
此包允许您为 SymCC 构建自定义运行时。有关详细信息,请参阅文档。
lib.rs
:
SymCC
运行时绑定
此包包含从 Rust 调用的 SymCC
运行时接口的绑定。可以使用 SymCC
或 SymQEMU
使用 SymCC 运行时来跟踪目标程序的执行。
如何使用
从高层次来看,此包的用户可以实现 Runtime
特性,并使用 export_runtime
宏将运行时接口作为 cdylib
导出。从技术层面来看,SymCC 运行时是一个动态库(共享对象),在目标执行期间,SymCC 的仪器层会调用其暴露的一组符号。因此,要创建运行时,需要单独的运行时 crate,因为这是使用 cargo 创建独立动态库的唯一方法。
附加功能
为了方便常用用例,这个包还包含了一些预构建的功能,形式为一个用于将执行跟踪到共享内存区域的 tracing::TracingRuntime
。它还包含了一个单独的抽象,可以在 filter
模块中轻松过滤组成此类跟踪的表达式。例如,它包含了一个 filter::NoFloat
过滤器,它将跟踪中的所有浮点运算具体化,因为这些通常比离散约束更难处理。
包设置
您的运行时包应在其 Cargo.toml
中设置以下键
[profile.release]
# this is somewhat important to ensure the runtime does not unwind into the target program.
panic = "abort"
[profile.debug]
panic = "abort"
[lib]
# this is required for the output to be a shared object (.so file)
crate-type = ["cdylib"]
# SymCC and SymQEMU expect to runtime file to be called `libSymRuntime.so`. Setting the name to `SymRuntime` achieves this.
name = "SymRuntime"
依赖项
~9–40MB
~593K SLoC