Windows环境下编译OLLVM源码(VS2022)

编程入门 行业动态 更新时间:2024-10-24 21:36:03

Windows环境下编译OLLVM<a href=https://www.elefans.com/category/jswz/34/1770099.html style=源码(VS2022)"/>

Windows环境下编译OLLVM源码(VS2022)

windows环境下编译OLLVM 13.x

    • VisualStudio配置
    • 下载OLLVM13.x
    • ollvm的使用

网上关于windows环境编译ollvm信息比较杂乱,在此编译成功的基础上做一下总结!

VisualStudio配置

1,正常配置C++桌面环境
2,在单个组件中选择用于Windows得C++ Cmake工具

下载OLLVM13.x

链接: link.
解压后进入文件夹使用
Developer Command Prompt for VS 2022打开该路径
输入:

cmake -G "Visual Studio 17 2022" -DLLVM_ENABLE_PROJECTS="clang" -DCMAKE_BUILD_TYPE=Release -DLLVM_INCLUDE_TESTS=OFF -DLLVM_ENABLE_NEW_PASS_MANAGER=OFF ./llvm
这里解释一下参数

-G “Visual Studio 17 2022”:使用 VS 进行编译源码(或者Visual Studio 16 2019)
-DLLVM_ENABLE_PROJECTS=“clang”:启用clang,有多个选择 但我们只需要clang,官方文档有说明
-DCMAKE_BUILD_TYPE=Release:构建 release 版本,比 debug 版本编译快很多
-DLLVM_INCLUDE_TESTS=OFF:关闭 llvm 的头文件测试,也是为了加快编译速度
-DLLVM_ENABLE_NEW_PASS_MANAGER=OFF:这个非常重要,llvm-12.x 开始默认使用 newPM进行编译源码,导致 ollvm 不起作用!因此,需要加上这个参数禁用掉 newPM。(虽然可以用 -flegacy-pass-manager 让 llvm 不走 newPM 编译,但是…你不觉得在你的源码上加一串怎么长的命令很难受吗)
之后打开VISUALSTUDIO进行Debug或者Release编译,编译后即可得到clang.exe文件
VS打开后:

编译成功后:

ollvm的使用

Instructions Substitution (指令替换)

-mllvm -sub: 启用instructions substitution
-mllvm -sub_loop=3: 对每个函数混淆3次,默认1词
Control Flow Flattening (控制流平坦化)

-mllvm -fla: 启用control flow flattening
-mllvm -split: 启用block切分,提升平展程度
-mllvm -split_num=3: 对每个block混淆3次,默认1词
Bogus Control Flow (虚假控制流)

-mllvm -bcf: 启用 bogus control flow
-mllvm -bcf_loop=3: 对一个函数混淆3次,默认1次
-mllvm -bcf_prob=40: 代码块被混淆的概率是40%,默认30%
-mllvm -sobf: 字符串加密

函数注解的使用
//Functions annotations
int foo() __attribute((annotate((“sub”))));
int foo() {
return 2;
}

例如 clang -mllvm -fla demo.c -o demo.exe

更多推荐

Windows环境下编译OLLVM源码(VS2022)

本文发布于:2023-11-15 17:55:29,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1603759.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:源码   环境   Windows   OLLVM

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!