2个版本
0.1.1 | 2021年5月18日 |
---|---|
0.1.0 | 2021年2月7日 |
在加密类别中排名1296
每月下载量1,831
13KB
123 行
include_crypt
安全地将文件嵌入到您的二进制文件中。
示例
use include_crypt::{include_crypt, EncryptedFile};
static FILE: EncryptedFile = include_crypt!("assets/file.txt");
fn main() {
let decrypted = FILE.decrypt();
let decrypted_str = FILE.decrypt_str();
}
您还可以选择一个加密算法并指定自定义密钥。在这个示例中,密钥将被随机生成。更多信息请参阅include-crypt/examples/
文件夹。
为什么?
当您使用include_str
或include_bytes
时,文件内容将被放置在二进制文件的.data
部分。然后您可以使用像binwalk
这样的工具自动提取这些文件。如果您包含了一个文本文件,您也可以使用strings
来查找内容。
通过加密文件,您可以隐藏二进制文件中用于标识文件的所有签名和魔术数字。当然,字节仍然在.data
部分,但现在它们是加密的。如果另一个人想提取文件,他们需要手动找到解密字节的代码。
在没有工具的情况下提取文件当然对于有一定经验的逆向工程师来说是可以做到的,但您只能手动完成。这本质上是一种通过隐蔽来提高安全性的方法。如果您感兴趣,可以查看有关如何逆向工程(专有)文件格式的这篇文章或维基百科上的文件签名列表。
功能
compression
:在加密之前压缩文件。force-build
:始终运行进程宏。这应该用于测试,因为进程宏不会检测文件更改。
依赖项
~2.5MB
~56K SLoC