首页
社区
课程
招聘
[开源]Hikari提取llvm pass混淆
发表于: 2025-1-29 01:51 4151

[开源]Hikari提取llvm pass混淆

2025-1-29 01:51
4151

Hikari-LLVM19

项目地址: Hikari-LLVM19

enable-strcry在rust中可能存在问题,其他自行测试

Warning: 仅在mac arm64上编译通过,未经过完全测试

混淆插件提取自 Hikari-LLVM15 By 61bcdefg 项目。

第一次做这种东西,非常感谢0xlane大佬的代码让我少踩很多坑,在这里贴上他的项目地址 ollvm-rust

编译

环境

Macos 15.2
LLVM 19.1.7

1
2
3
4
5
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里硬编码了,也要替换

rust 动态加载

动态加载 llvm pass 插件需切换到 nightly 通道

1
rustup toolchain install nightly

生成一个示例项目,通过 -Zllvm-plugins 参数加载 pass 插件,并通过 -Cpasses 参数指定混淆开关:

1
2
3
cargo new helloworld --bin
cd helloworld
cargo +nightly rustc --release -- -Zllvm-plugins="path/to/libHikari.dylib" -Cpasses="hikari(enable-fco,enable-strcry)..."

opt 动态加载

1
2
3
4
5
6
7
8
9
10
11
# 使用 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 output

感谢

Hikari-LLVM15 By 61bcdefg

ollvm-rust By 0xlane


[注意]看雪招聘,专注安全领域的专业人才平台!

最后于 2025-1-29 01:57 被PPKun编辑 ,原因:
收藏
免费
支持
分享
最新回复 (1)
雪    币: 218
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
Hikari-LLVM15 By 61bcdefg 这个大佬和仓库在github上整体消失了
2025-2-25 17:06
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册