#key-value-store #executable #key-value #value #key #self-hosted

shed

一个可携带的键值存储,附加到可执行文件末尾

3 个版本 (1 个稳定版)

1.0.0 2021年6月24日
0.2.1 2021年6月23日
0.2.0 2021年6月22日
0.1.0 2018年1月20日
0.0.0 2017年11月19日

#2710 in 数据库接口

Apache-2.0

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