IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> LLVM编译Windows驱动(goron/obfuscator) -> 正文阅读

[C++知识库]LLVM编译Windows驱动(goron/obfuscator)

1.LLVM安装:Download LLVM releases(用于编译混淆后替换bin)

? ? ? ? 设置下环境变量:

? ? ? ? version见lib\clang下的文件夹名

set LLVMInstallDir=C:\Program Files\LLVM
    set LLVMToolsVersion=12.0.0
    rem LLVMToolsVersion = name of the last subfolder in the path C:\Program Files\LLVM\lib\clang\12.0.0

2.vs安装llvm插件

????????2019:llvm2019 - Visual Studio Marketplace

? ? ? ? 2017:LLVM Compiler Toolchain - Visual Studio Marketplace

3.修改WDK配置文件

? ? ? ? 找到PlatformToolsets目录

????????复制WindowsKernelModeDriver10.0并重命名WindowsKernelModeDriver10.0_LLVM

? ? ? ? 修改Toolset.props

????????

<PropertyGroup>
    <V141PropsFile>$(VCTargetsPath)\Platforms\$(Platform)\PlatformToolsets\v141\Toolset.props</V141PropsFile>
    <V142PropsFile>$(VCTargetsPath)\Platforms\$(Platform)\PlatformToolsets\v142\Toolset.props</V142PropsFile>
    <ClangPropsFile>$(VCTargetsPath)\Platforms\$(Platform)\PlatformToolsets\llvm\Toolset.props</ClangPropsFile>
    
  </PropertyGroup>
  <Import Condition="Exists('$(ClangPropsFile)')" Project="$(ClangPropsFile)" />

  <Import Condition="!Exists('$(V142PropsFile)')" Project="$(V142PropsFile)" />
  <Import Condition="!Exists('$(V142PropsFile)')" Project="$(V141PropsFile)" />

?????????Toolset.targets

????????

<PropertyGroup>
    <V141TargetsFile>$(VCTargetsPath)\Platforms\$(Platform)\PlatformToolsets\v141\Toolset.targets</V141TargetsFile>
    <V142TargetsFile>$(VCTargetsPath)\Platforms\$(Platform)\PlatformToolsets\v142\Toolset.targets</V142TargetsFile>
    <ClangTargetsFile>$(VCTargetsPath)\Platforms\$(Platform)\PlatformToolsets\llvm\Toolset.targets</ClangTargetsFile>

  </PropertyGroup>
  
  <Import Project="$(WDKContentRoot)\build\WindowsDriver.common.targets" Condition="Exists('$(WDKContentRoot)\build\WindowsDriver.common.targets')"/>
  <Import Condition="Exists('$(ClangTargetsFile)')" Project="$(ClangTargetsFile)" />
  <Import Condition="!Exists('$(V142TargetsFile)')" Project="$(V142TargetsFile)" />
  <Import Condition="!Exists('$(V142TargetsFile)')" Project="$(V141TargetsFile)" />

4.平台工具集选择10.0_LLVM

选择完确认后重新打开属性页会出现LLVM,将Use lld-link设为否

?接着禁用spectre

?c/c++命令行 其他选项 从父级继承勾去掉

混淆命令见最后

现在工程环境已经ok了,

去编译带混淆的llvm替换官方的llvm工具

本文章使用

heroims/obfuscator at llvm-9.0 (github.com)

amimo/goron: Yet another llvm based obfuscator (github.com)

?选择其一即可,推荐goron

编译obfuscator使用mingw

1.Download | CMake?(安装时直接选择添加PATH)

2.Downloads [mingw-w64](手动添加bin到PATH)

3.

git clone -b llvm-9.0.1 https://github.com/heroims/obfuscator
cd obfuscator
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -G "MinGW Makefiles" ../
mingw32-make.exe -j7

4.编译大概20分钟左右,编译完成后把bin目录的文件全部复制到官方下载的bin目录替换(编译成功bin目录必有clang.exe)

5.打开配置好的驱动工程文件 c/c++ 命令行 添加

-mllvm -bcf -mllvm -bcf_prob=73 -mllvm -bcf_loop=1 -mllvm -sub -mllvm -sub_loop=5 -mllvm -fla -mllvm -split_num=5 -mllvm -aesSeed=ABCDBEEFDEADDVBEDEADBEEFDEADERTG

具体意思见Features · obfuscator-llvm/obfuscator Wiki (github.com)

编译goron

使用vs2019或2017编译

git clone https://github.com/amimo/goron.git -b llvm-7.1.0
cd goron
mkdir build
cd build
cmake -DLLVM_ENABLE_PROJECTS=clang -G "Visual Studio XXXX" -A x64 -Thost=x64 ..\llvm

xxxx根据你的vs版本,不知道名字先随便输一个错误的比如就xxx,会列出全部的名字,选择一个你有的vs版本名即可

vs开llvm.sln 有两个坑

1.找到LLVMMIPO和LLVMObfuscator工程

????????分别在其预定义中添加ENDIAN_LITTLE定义

2.clangDaemon\CodeComplete.h 用记事本打开编码保存为为UNICODE L1200

接着找到ALL_BUILD工程 编译release x64即可.过程大概30分钟左右

编译成功bin目录必有clang.exe,将bin目录的所有文件复制到官网的llvm bin目录替换

打开配置好的驱动工程.

c/c++命令行 其它选项添加

-mllvm -irobf-cse -mllvm -irobf-indbr -mllvm -irobf-icall -mllvm -irobf-indgv -mllvm -irobf-cff

具有意思见goron github说明

对于一些内联汇编指令不能使用,可以用.asm

参考:

[原创]如何使用LLVM编译Windows驱动(混淆&Asm)-编程技术-看雪论坛-安全社区|安全招聘|bbs.pediy.com

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-26 11:56:22  更:2021-08-26 11:57:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:57:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码