#编译时 #过程宏 #混淆 #控制流 #加密 #字符串 #随机

cryptify

一个用于混淆Rust代码的过程宏库。提供编译时字符串加密和随机流程混淆。

6个稳定版本

3.1.1 2024年2月1日
3.1.0 2024年1月10日
3.0.8 2024年1月10日
2.0.0 2024年1月10日
1.0.0 2024年1月9日

#469 in 算法

Download history 9/week @ 2024-04-22 10/week @ 2024-05-06 1/week @ 2024-05-20 15/week @ 2024-06-03 15/week @ 2024-06-10 14/week @ 2024-06-17 7/week @ 2024-06-24 22/week @ 2024-07-01 2/week @ 2024-07-08 3/week @ 2024-07-15 24/week @ 2024-07-22 14/week @ 2024-07-29 12/week @ 2024-08-05

每月 53 次下载

MIT 许可证

5KB

cryptify

cryptify 是一个用于编译时Rust混淆的过程宏库。它为用户提供字符串加密和编译时确定的流程混淆以及能在编译时优化中存活的随机变量。

rust-obfuscator - 查看这个自动混淆工具,以简化使用和集成

特性

  • 字符串混淆:在编译时自动加密代码中的字符串字面量,使它们更难以阅读和理解。
  • 流程混淆:在控制流中引入虚拟循环和随机变量,增强逻辑的整体混淆。

使用

将宏引入作用域

use cryptify;

fn main(){
    let decrypted = cryptify::encrypt_string("Hello, World!");
    println!(decrypted);
    println!("{}", cryptify::encrypt_string!("formatted!"));
}

设置CRYPTIFY_KEY环境变量以自定义加密,否则默认为定义的固定密钥

输出

Hello World!
formatted!

Flow_Stmt!展开示例

    {
        let _is_dummy_145 = true;
        let _dummy_upper_bound = 100;
        let _dummy_increment = 1i32;
        let mut _dummy_counter = 10i32;
        let _extra_dummy_var = 2i32;
        loop {
            if _dummy_counter > _dummy_upper_bound {
                break;
            }
            unsafe {
                std::ptr::write_volatile(
                    &mut _dummy_counter,
                    _dummy_counter + _dummy_increment,
                );
            }
        }
    };
    match (&1, &1) {
        (left_val, right_val) => {
            if !(*left_val == *right_val) {
                let kind = ::core::panicking::AssertKind::Eq;
                ::core::panicking::assert_failed(
                    kind,
                    &*left_val,
                    &*right_val,
                    ::core::option::Option::None,
                );
            }
        }
    };

许可证

cryptify遵循MIT许可证 - 有关详细信息,请参阅LICENSE文件。

依赖项

~0.5–1MB
~22K SLoC