前言
总所周知 世界上最好的IDE Viusal studio 所用的msvc编译器无法使用x64的内联汇编
当然我们可以选择intel 的编译器 这里我们提供一个选择
llvm对vs兼容性没有 intel 编译器好 但是他还有个功能是intel没有的 就是混淆
混淆效果&内联汇编
混淆前代码
1 | #include "DriverEntry.h" |
混淆后IDA F5
这里我们使用的是 goron
如何实现
1.下载安装官方版本LLVM
这一步其实自己设置环境变量
1 | LLVM_DIR |
LLVM 官方下载地址:LLVM
2.安装LLVM插件
Vs2019 插件下载地址:llvm2019
Vs2017 插件下载地址:LLVM Compiler Toolchain
2017以下不支持
3.修改WDK配置
1.打开PlatformToolsets目录
我的:
1 | D:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VC\v160\Platforms\x64\PlatformToolsets |
2.复制WindowsKernelModeDriver10.0并重命名
如下
3.修改WindowsKernelModeDriver10.0_LLVM中的配置
Toolset.props
1
2<ClangPropsFile>$(VCTargetsPath)\Platforms\$(Platform)\PlatformToolsets\llvm\Toolset.props</ClangPropsFile>
<Import Condition="Exists('$(ClangPropsFile)')" Project="$(ClangPropsFile)" />Toolset.targets
1
2<ClangTargetsFile>$(VCTargetsPath)\Platforms\$(Platform)\PlatformToolsets\llvm\Toolset.targets</ClangTargetsFile>
<Import Condition="Exists('$(ClangTargetsFile)')" Project="$(ClangTargetsFile)" />
4.配置项目
- 平台工具集 选择 WindowsKernelModeDriver10.0_LLVM
- 选择了我们上面修改的工具及 这里就会出现 LLVM 选项 我们这里只需要 Clang-cl 其他全选否(vs2017 有三个选项)
- 关闭Qspectre 缓解
- c/c++ 命令行 从父级或项目默认设置继承 取消勾选