首页
社区
课程
招聘
利用OLLVM编译windows驱动
发表于: 2022-10-28 16:34 30581

利用OLLVM编译windows驱动

2022-10-28 16:34
30581

OLLVM的坑多的离谱,所以请100%按照本文搭建。

链接:https://pan.baidu.com/s/1JJuWIypPmZa86kD2_QSkVQ?pwd=xz60
提取码:xz60
--来自百度网盘超级会员V99999999999999的分享

系统变量中加两个变量:LLVMInstallDir、LLVMToolsVersion。分别是LLVM根目录及 12.0.0

图片描述

找到PlatformToolsets目录,直接搜就行,找到X64路径的那个版本(如果你是其他平台驱动就找对应平台的)。

图片描述

复制一份WindowsKernelModeDriver10.0。

图片描述

修改复制后的WindowsKernelModeDriver10.0中的Toolset.props及Toolset.targets,具体如下:

Toolset.props

图片描述

Toolset.targets

图片描述

随便创建个driver项目,vs的配置这样弄:

常规

LLVM:Use lld-link 选为否。否则编译时候会提示各种参数错误。

C/C++

命令行

从父级或项目默认设置继承 取消勾选!!!

其他选项:

连接器

其余正常开发驱动时怎么设置就怎么设置,C/C++部分去掉继承后就不用再设置其他的了。

然后正常编译就行了。

图片描述

图片描述
图片描述

如果开启了字符串加密,确保所有源码文件中不要出现两个内容完全相同的字符串即可,如果相同字符串在两个地方用到了,要么写一个函数去返回,要么extern。
图片描述
下面这个会报错:

下面这个则不会报错

下面这个也不会报错

 
 
 
 
 
<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)" />
<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)" />
<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)" />
<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)" />
-mno-sse -mno-mmx -D__CUDACC__ -D_ALLOW_COMPILER_AND_STL_VERSION_MISMATCH -mllvm -sobf -mllvm -bcf -mllvm -bcf_prob=99 -mllvm -bcf_loop=1 -mllvm -sub -mllvm -sub_loop=5 -mllvm -fla -mllvm -split_num=5 -mllvm -aesSeed=DEADBEEFDEADCODEDEADBEEFDEADCODE
-mno-sse -mno-mmx -D__CUDACC__ -D_ALLOW_COMPILER_AND_STL_VERSION_MISMATCH -mllvm -sobf -mllvm -bcf -mllvm -bcf_prob=99 -mllvm -bcf_loop=1 -mllvm -sub -mllvm -sub_loop=5 -mllvm -fla -mllvm -split_num=5 -mllvm -aesSeed=DEADBEEFDEADCODEDEADBEEFDEADCODE
 
 
EXTERN_C NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath) {
    //代码
    char * gjg1 = "dasdasdasdasda";
    char * gjg2 = "dasdasdasdasda";
    DbgPrintEx(77, 0, gjg1);
    DbgPrintEx(77, 0, gjg2);
    return STATUS_UNSUCCESSFUL;
}
EXTERN_C NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath) {
    //代码
    char * gjg1 = "dasdasdasdasda";
    char * gjg2 = "dasdasdasdasda";
    DbgPrintEx(77, 0, gjg1);
    DbgPrintEx(77, 0, gjg2);
    return STATUS_UNSUCCESSFUL;
}
EXTERN_C NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath) {
    //代码
    char * gjg1 = "dasdasdasdasda";
    char * gjg2 = "dasdasdasdasda1";
    DbgPrintEx(77, 0, gjg1);
    DbgPrintEx(77, 0, gjg2);
    return STATUS_UNSUCCESSFUL;
}
EXTERN_C NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath) {

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 9
支持
分享
最新回复 (14)
雪    币: 248
活跃值: (3789)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
VS2019编译驱动,编译64位asm汇编的路过
2022-10-28 22:26
0
雪    币: 4134
活跃值: (5847)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
3
这两天群里叫嚣的厉害啊
2022-10-30 18:02
1
雪    币: 389
活跃值: (565)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
4
这两天群里叫嚣的厉害啊绿头画
2022-11-1 17:16
1
雪    币: 2324
活跃值: (5093)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
LLVM是你自己编译的吗??
2022-11-1 23:00
0
雪    币: 183
活跃值: (6634)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
6
这两天群里叫嚣的厉害啊绿头画
2022-11-25 11:32
1
雪    币: 889
活跃值: (4118)
能力值: ( LV6,RANK:98 )
在线值:
发帖
回帖
粉丝
7

***

最后于 2023-1-16 11:37 被kanxue编辑 ,原因:
2023-1-3 09:46
1
雪    币: 1484
活跃值: (14662)
能力值: ( LV12,RANK:380 )
在线值:
发帖
回帖
粉丝
8
还我六千雪币 看懂了 群友才是免费的打工仔

************

最后于 2023-1-16 11:37 被kanxue编辑 ,原因:
2023-1-3 10:18
0
雪    币: 889
活跃值: (4118)
能力值: ( LV6,RANK:98 )
在线值:
发帖
回帖
粉丝
9
SSH山水画 ***

***

最后于 2023-1-16 11:37 被kanxue编辑 ,原因:
2023-1-4 15:50
1
雪    币: 43
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
10
sub_loop是2的情况下,bcf_loop这个超过3就完全卡住编译了,根本都编译不成功,一直卡住。 是啥问题导致的呢
2023-1-18 01:53
0
雪    币: 55
活跃值: (240)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
大佬,加个好友呗
2023-2-20 11:04
0
雪    币: 766
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
12
大佬,能开个交流群吗
2023-2-24 10:19
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13
紫梦寒 sub_loop是2的情况下,bcf_loop这个超过3就完全卡住编译了,根本都编译不成功,一直卡住。 是啥问题导致的呢
老哥,你解决这个问题了嘛,我也是这样
2023-5-4 02:36
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
14
紫梦寒 sub_loop是2的情况下,bcf_loop这个超过3就完全卡住编译了,根本都编译不成功,一直卡住。 是啥问题导致的呢
sub_loop是2的话,bcf_loop这个超过3就会卡住,这是为啥?
2023-5-4 02:37
0
雪    币: 1484
活跃值: (14662)
能力值: ( LV12,RANK:380 )
在线值:
发帖
回帖
粉丝
15
mb_fgsvwlam sub_loop是2的话,bcf_loop这个超过3就会卡住,这是为啥?
可能是指数级的增长吧,数字不需要太大,差不多就行
2023-5-4 15:54
0
游客
登录 | 注册 方可回帖
返回
//