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

2023-11-09 06:28

本文主要是介绍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)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/374439

相关文章

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1