3 个版本 (1 个稳定版)
1.0.0 | 2021年6月24日 |
---|---|
0.2.1 | 2021年6月23日 |
0.2.0 | 2021年6月22日 |
0.1.0 |
|
0.0.0 |
|
#2710 in 数据库接口
11KB
171 行
SHED: 自托管可执行数据库
一个可携带的键值存储,附加到可执行文件末尾。目前仅支持ELF可执行文件。
示例代码
// Create a new SHED
let mut shed_example = shed::Shed::new();
// Test wheather this executable already has a SHED
if !shed_example.shed_exists() {
shed_example
.initialize_shed()
.expect("Failed to initialize SHED");
}
// Create a key value store with the value type String
let mut x = shed::Store::new();
x.insert(String::from("Test Key"), String::from("Test Value"));
// Write our key store to the SHED
shed_example
.write_shed(x)
.expect("Failed to write data to SHED");
// Read key value store from SHED
let read_shed: shed::Store<String> =
shed_example.read_shed().expect("Failed to read from SHED");
println!("{:?}", read_shed);
待办事项
- 在Linux上完全工作
- 添加对Windows PE可执行文件的支持
- 使API看起来更美观
- 编写一些文档
警告
此crate是实验性的,因为它涉及到可执行文件修改自身,可能会或可能不会触发杀毒产品。迄今为止,它尚未触发任何主要杀毒产品,因此应该可以安全使用。
依赖项
~0.8–1.4MB
~31K SLoC