enable-strcry在rust中可能存在问题,其他自行测试
经过修复,strcry可能可以使用
编译后运行出现错误请设置opt level为0
Warning: 仅在mac arm64上编译通过,仅测试过rust语言下的表现,未经过完全测试
混淆插件提取自 Hikari-LLVM15 By 61bcdefg 项目。
Macos 15.2 LLVM 19.1.7
cmake -G "Ninja" -S . -B ./build \
-DCMAKE_CXX_STANDARD=17 \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=ON \
-DLT_LLVM_INSTALL_DIR=/opt/homebrew/opt/llvm@19注意要将 LT_LLVM_INSTALL_DIR 换为自己,CMake里硬编码了,也要替换
动态加载 llvm pass 插件需切换到 nightly 通道
rustup toolchain install nightly生成一个示例项目,通过 -Zllvm-plugins 参数加载 pass 插件,并通过 -Cpasses 参数指定混淆开关:
cargo new helloworld --bin
cd helloworld
cargo +nightly rustc --release -- -Zllvm-plugins="path/to/libHikari.dylib" -Cpasses="hikari(enable-fco,enable-strcry)..."# 使用 clang 编译源代码并生成 IR
clang -emit-llvm -c input.c -o input.bc
# 使用 opt 工具加载和运行自定义 Pass
opt -load-pass-plugin="path/to/libHikari.dylib" --passes="hikari(enable-fco,enable-strcry)..." input.bc -o output.bc
# 将 IR 文件编译为目标文件
llc -filetype=obj output.bc -o output.o
# 链接目标文件生成可执行文件
clang output.o -o outputHikari-LLVM15 By 61bcdefg
ollvm-rust By 0xlane