windows下visual studio 2019 c++代码混淆

环境:windows,visual studio 2019,cmake
目的:c++代码混淆

一 IDE安装clang平台工具集

1:打开visual studio Installer
2.点击已安装下的 修改 ->单个组件,搜索框中输入"clang",勾选,然后点击安装。(我这里的clang编译器版本是12.0.0)
在这里插入图片描述

二 OLLVM的下载与编译

下载地址:ollvm下载链接(注意我这里下载的版本是12.x,因为上面安装的clang版本是12.0.0))
下载解压后假设项目目录为:“D:\work_project\obfuscator-llvm-12.x”
假设你已经安装了cmake,且安装路径为“D:\CMake”
1.在项目根目录中打开cmd,输入以下3个命令:

mkdir build
cd build
D:\CMake\bin\cmake -G “Visual Studio 16 2019” -DLLVM_ENABLE_PROJECTS=“clang” -DCMAKE_BUILD_TYPE=Release -DLLVM_INCLUDE_TESTS=OFF -DLLVM_ENABLE_NEW_PASS_MANAGER=OFF …\llvm

构建完成后会在build中生成vs解决方案,然后用vs 2019打开,右键"ALL_BUILD"点击生成Release版本,如下图所示:
在这里插入图片描述
生成过程会很慢,生成完成后如果0失败,则表示生成成功了。
然后右键“INSTALL”,点击生成,如果出现如下错误,则请重新用管理员权限打开visual studio,重新右键"INSTALL"生成
在这里插入图片描述
生成成功的话将ollvm环境安装在“C:\Program Files (x86)\LLVM”目录,当然没有添加到环境变量,你可以手动添加到系统的PATH环境变量.

三 visual studio 测试和使用

让Visual Studio使用我们自己编译的llvm(带混淆功能的)编译项目。
1.用vs新建控制台程序,比如llvmTest,右键项目属性,平台工具集选择llvm
在这里插入图片描述
2.右键项目属性->c/c+±>command Line的“其它选项”中输入以下混淆指令:
在这里插入图片描述

3.在项目llvmTest根目录中新建文件Directory.build.props,用记事本打开,输入以下内容

<Project>
    <PropertyGroup>
         <LLVMInstallDir>C:\Program Files (x86)\LLVM</LLVMInstallDir>
    </PropertyGroup>
</Project>

“C:\Program Files (x86)\LLVM”为上面INSTALL后的安装目录
然后右键llvmTest项目,点击生成,结果提示如下错误:
在这里插入图片描述
我看了下我的llvm如下,我的是12.0.1,这个在下载ollvm的时候版本只有12.x,我也没得选。于是我投机取巧把12.0.1重命名为12.0.0。
在这里插入图片描述
再点击生成,又提示:
在这里插入图片描述
靠,难道就是因为clang版本不对吗,于是我用everything搜lld-link.exe,发现我们在第一步给vs安装llvm后就有这个文件了
在这里插入图片描述
于是我把“D:\Microsoft Visual Studio2019\Community\VC\Tools\Llvm\x64\bin”目录下的lld-link.exe拷贝到"C:\Program Files (x86)\LLVM\bin"
,然后右键生成,居然成功了,靠!

虽然成功了,总感觉不踏实,因为版本没对应上,12.0.1和12.0.0。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SSM框架整合,内嵌Tomcat。基于注解的方式集成

介绍&#xff1a; SSM相信大家都不陌生&#xff0c;在spring boot出现之前&#xff0c;SSM一直是Java在web开发中的老大哥。现在虽说有了spring boot能自动整合第三方框架了&#xff0c;但是现在市面上任然有很多老项目是基于SSM技术的。因此&#xff0c;能熟练掌握SSM进行开发…

图与矢量 RAG — 基准测试、优化手段和财务分析示例

图与矢量 RAG — 基准测试、优化手段和财务分析示例 Neo4j 和 WhyHow.AI 团队探索了图和矢量搜索系统如何协同工作以改进检索增强生成 &#xff08;RAG&#xff09; 系统。使用财务报告 RAG 示例&#xff0c;我们探索了图和矢量搜索之间的响应差异&#xff0c;对两种类型的答案…

C# 反射类Assembly 程序集(Assembly)用法

常见的两种程序集&#xff1a; 可执行文件&#xff08;.exe文件&#xff09;和 类库文件&#xff08;.dll文件&#xff09;。 在VS开发环境中&#xff0c;一个解决方案可以包含多个项目&#xff0c;而每个项目就是一个程序集。 他们之间是一种从属关系&#xff0c;也就是说&…

算法第五天之力扣第27题:移除元素

一、移除元素 该题的题目链接如下所示&#xff0c;看题解前先点击或复制下面链接进入力扣做题哦&#xff0c;做题后看会更好哦。 https://leetcode.cn/problems/remove-element/description/https://leetcode.cn/problems/remove-element/description/ 给你一个数组 nums 和一…

【工具】批量SKU生成器

一个用户加我&#xff0c;要我帮忙写一个生成SKU的工具&#xff0c;他希望可以自定义生成的选项&#xff0c;可以批量生成。我到网上找了好久也没有找到好用的&#xff0c;就花了一下午写了这个生成sku的功能 工具支持批量生成SKU&#xff0c;支持自定义配置项&#xff0c;支持…

03_Windows11_PyTorch_GPU版本安装

1. 创建虚拟环境 1.1 查看所有的虚拟环境 使用超级管理员,打开 Anaconda Prompt conda info --envs conda env list 1.2 创建 PyTorch 虚拟环境 使用 nvidia-smi 命令,查看本机 CUDA 版本 打开pytorch官网 PyTorch ,查看相应版本pytorch即依赖关系 创建虚拟环境 conda…

自定义类型:枚举和联合体

在之前我们已经深入学习了自定义类型中的结构体类型 &#xff0c;了解了结构体当中的内存对齐&#xff0c;位段等知识&#xff0c;接下来在本篇中将继续学习剩下的两个自定义类型&#xff1a;枚举类型与联合体类型&#xff0c;一起加油&#xff01;&#xff01; 1.枚举类型 …

模拟实现priority_queue

文章目录 priority_queue简介priority_queue的实现Myless和Mygreaterpushpop常规接口 全部代码测试代码 总结 priority_queue简介 priority_queue是优先级队列。 什么是优先级队列&#xff1f; 优先级队列&#xff08;Priority Queue&#xff09;是一种数据结构&#xff0c;用于…

【动手学深度学习】使用块的网络(VGG)的研究详情

目录 &#x1f30a;1. 研究目的 &#x1f30a;2. 研究准备 &#x1f30a;3. 研究内容 &#x1f30d;3.1 多层感知机模型选择、欠拟合和过拟合 &#x1f30d;3.2 练习 &#x1f30a;4. 研究体会 &#x1f30a;1. 研究目的 理解块的网络结构&#xff1b;比较块的网络与传统…

Linux基础 (十四):socket网络编程

我们用户是处在应用层的&#xff0c;根据不同的场景和业务需求&#xff0c;传输层就要为我们应用层提供不同的传输协议&#xff0c;常见的就是TCP协议和UDP协议&#xff0c;二者各自有不同的特点&#xff0c;网络中的数据的传输其实就是两个进程间的通信&#xff0c;两个进程在…

activiti用法随记

案例&#xff1a; 摘抄于官网&#xff0c;假设我们有如下流程&#xff1a; 流程对应的bpmn文件如下&#xff1a; <definitions xmlns:activiti"http://activiti.org/bpmn" xmlns:bpmndi"http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc&quo…

configuration_auto.py in getitem raise KeyError(key) KeyError: ‘llama‘解决方案

运行LLaMA-7b模型有时候会报错“configuration_auto.py in getitem raise KeyError(key) KeyError:llama”如下所示&#xff1a; 解决办法升级安装transformer库即可&#xff0c;如下所示&#xff1a; pip install transformers4.30.0

vue3设置全局变量并获取 全局响应式变量 窗口大小

设置 js文件统一管理全局变量 方法1 app provide() 全局提供变量 通过inject()使用 方法2 app实例配置全局变量 获取 通过 getCurrentInstance.appContext.config.globalProperties.$innerWidth访问到 code import { ref } from vue export const useGlobalState () > {c…

新型AI编程语言Mojo来了!比Python快68000倍! 坚持每天写代码,真的能提高编程水平吗?

2024 年 3 月 29 日&#xff0c;Modular Inc. 宣布开源 Mojo 的核心组件。 Mojo语言是一种新的编程语言&#xff0c;由 Chris Lattner&#xff08;LLVM 和 Swift 语言的创始人&#xff09;创建的 Modular AI 公司开发。 它结合了Python的易用性和C的性能&#xff0c;旨在为人…

二说springboot3的自动配置机制

大家好&#xff0c;这里是教授.F 目录 SpringBootApplication&#xff1a; EableAutoConfiguration&#xff1a; 上一篇文章粗略的讲了自动配置机制&#xff0c;二说系列将从源码的角度进行讲解。 SpringBootApplication&#xff1a; 首先我们还是得从SpringBootApplication…

电商APP用户体验提升技巧:一个实战案例

随着网络和移动技术的快速发展&#xff0c;加上全球疫情的影响&#xff0c;电子商务应用程序改变了人们的购物方式&#xff0c;积累了大量的用户群体。如今&#xff0c;一个成功的电子商务应用程序&#xff0c;除了网站用户界面的美&#xff0c;电子商务用户体验的设计&#xf…

图片格式怎么转成pdf,简单的方法

在现代数字化时代&#xff0c;图片格式转换成PDF已经成为许多人的日常需求。无论是为了存档、分享还是打印&#xff0c;将图片转换为PDF都是一项非常实用的技能。本文将详细介绍如何将图片格式转换成PDF的方法。 用浏览器打开 "轻云处理pdf官网&#xff0c;上传图片。 图…

SpringBoot 请求响应

SpringBoot 请求响应 来源于黑马程序员JavaWeb课程&#xff0c;总结笔记 1.ApiFox Apifox快速入门教程 2.基本参数 简单参数&#xff1a;在向服务器发起请求时&#xff0c;向服务器传递的是一些普通的请求数据。 //RequestController.java import jakarta.servlet.http.Htt…

一线教师教学工具汇总

亲爱的教师们&#xff01;我们的教学工具箱里也该更新换代啦&#xff01;今天&#xff0c;就让我来给大家安利一波超实用的教学神器&#xff1a; 百度文库小程序 —— 在线图书馆 百度文库&#xff0c;一个宝藏级的在线文档分享平台&#xff01;在这里&#xff0c;你可以找到海…

康谋技术 | 自动驾驶:揭秘高精度时间同步技术(二)

在自动驾驶中&#xff0c;对车辆外界环境进行感知需要用到很多传感器的数据&#xff08;Lidar&#xff0c;Camera&#xff0c;GPS/IMU&#xff09;&#xff0c;如果计算中心接收到的各传感器消息时间不统一&#xff0c;则会造成例如障碍物识别不准等问题。 为了对各类传感器进…