首页
社区
课程
招聘
[分享]WDK手动编译NT驱动
发表于: 2021-9-19 21:08 9608

[分享]WDK手动编译NT驱动

2021-9-19 21:08
9608

基于EWDK10驱动安装包,只能编译NT驱动!电脑配置够硬,硬盘够大的就可以不用往下看了.我的硬盘太小了.成品只有600+mb.
是通过这位大佬的思路搞出来的,239K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3x3H3K9%4y4Q4x3X3g2U0L8$3#2Q4x3V1k6@1K9s2u0W2j5h3c8Q4x3X3b7J5y4U0j5J5x3#2)9J5k6o6q4Q4x3X3b7I4i4K6u0W2K9s2c8E0L8l9`.`.

第一步;
下载EWDK d10K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6V1L8$3y4K6i4K6u0W2L8h3W2U0M7X3!0K6L8$3k6@1i4K6u0W2j5$3!0E0i4K6u0r3k6h3&6Q4x3X3c8#2M7#2)9J5c8X3I4W2k6$3q4D9i4K6u0r3N6$3W2F1k6r3!0%4M7#2)9J5c8X3S2S2M7X3c8%4j5i4u0W2i4K6u0r3k6h3&6@1k6i4u0H3M7X3W2K6k6g2)9J5k6s2N6V1K9#2)9J5k6r3I4A6j5$3g2F1M7$3g2Q4x3X3b7J5x3o6p5&6 不用安装,只需提取几个文件.

第二步;
1.创建-wdk 文件夹

2.wdk 文件夹内创建 bin,inc和lib三个文件夹,分别存放编译器,头文件和库文件

3.bin文件夹
-32位平台和64位平台 选择一个

-\Program Files\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.27.29110\bin
-32位平台编译驱动 选择Hostx86文件夹,x64,x86二个文件夹分别是64,32位驱动(x64文件夹改名位amd64)//不改名也行,需要更改bat文件
-64位平台编译驱动 选择Hostx64文件夹,x64,x86二个文件夹分别是64,32位驱动(x64文件夹改名位amd64)
-保存到bin文件夹

4.inc文件夹
-\Program Files\Windows Kits\10\Include\10.0.19041.0
-其中,km文件夹相当于wdk7的ddk文件夹,shared文件夹相当于wdk7的api文件夹,km\crt文件夹相当于wdk7的crt文件夹
将他们都提取出来,保存在 inc文件夹

5.lib文件夹内创建win, Crt 二个文件夹
-\Program Files\Windows Kits\10\Lib\10.0.19041.0\km
-提取x64文件夹 保存到 win文件夹下amd64文件夹
-提取x86文件夹 保存到 win文件夹下x86文件夹

-\Program Files\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.27.29110\lib
-提取x64文件夹 保存到 Crt文件夹下amd64文件夹
-提取x86文件夹 保存到 Crt文件夹下x86文件夹

第三步;
编写bat文件,支持多源文件,多汇编文件编译 不会bat语法,有错的自己改下.
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set DDK_PATH=D:\EWDK\bin\amd64
set INC_PATH=D:\EWDK\inc
set LIB_PATH=D:\EWDK\lib

set LINK_OBJ=
set LINK_ASM=
set SRC_PATH=..\Source

set ASM_NAME=asm64 //有多少个文件自己添加
set DRIVER_NAME=driver64//驱动名
set SOURCE_NAME=DriverEntry1 DriverEntry2//有多少个源文件自己添加

title Compile Driver Project - Platform:AMD64
echo (~)(~) (~)(~) (~)(~)Start Generating(~)(~) (~)(~) (~)(~)
echo Project:HelloDrv

echo (~)(~) (~)(~) (~)(~)Start Compiling(~)(~) (~)(~) (~)(~)
%DDK_PATH%\ml64 /c %SRC_PATH%\%ASM_NAME%.asm
for %%n in (%ASM_NAME%) do (set LINK_ASM=!LINK_ASM! %%n.obj)
echo Completed!

echo (~)(~) (~)(~) (~)(~)Start Compiling(~)(~) (~)(~) (~)(~)

for %%n in (%SOURCE_NAME%) do (
%DDK_PATH%\cl.exe %SRC_PATH%\%%n.c /I"%INC_PATH%\shared" /I"%INC_PATH%\km" /I"%INC_PATH%\crt" /Zi /nologo /W3 /WX /Od /Oy- /D"AMD64" /D"_WIN64" /D "_NDEBUG" /D"_UNICODE" /D "UNICODE" /Zc:wchar_t /Zc:forScope /Fo"%%n.obj" /GS- /Gz /TC /c /ERRORREPORT:QUEUE
)

echo Completed!

echo (~)(~) (~)(~) (~)(~)Start Linking(~)(~) (~)(~) (~)(~)
for %%n in (%SOURCE_NAME%) do (set LINK_OBJ=!LINK_OBJ! %%n.obj)
%DDK_PATH%\link.exe %LINK_OBJ% %LINK_ASM% /LIBPATH:"%LIB_PATH%\win\amd64" /LIBPATH:"%LIB_PATH%\Crt\amd64" "ntoskrnl.lib" "hal.lib" /NOLOGO /DEBUG /PDB:"%DRIVER_NAME%.pdb" /OUT:"%DRIVER_NAME%.sys" /SUBSYSTEM:NATIVE /Driver /ENTRY:"DriverEntry" /Machine:AMD64 /ERRORREPORT:QUEUE
echo Completed!

pause

第四步;
搞定 自己测试吧!有不对的 改改 改后麻烦回复下 感谢

附件:EWDK链接:cb7K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6H3j5h3&6Q4x3X3g2T1j5h3W2V1N6g2)9J5k6h3y4G2L8g2)9J5c8Y4y4Q4x3V1j5I4x3h3I4v1N6r3t1%4y4#2m8q4k6$3y4^5N6r3S2p5K9g2q4K6j5W2t1$3b7b7`.`. 提取码: vxcw


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

最后于 2023-6-17 22:20 被太阳天空照编辑 ,原因:
收藏
免费 4
支持
分享
最新回复 (2)
雪    币: 2142
活跃值: (4087)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不错,正当需要我先试试,顺便问下,提取了STL文件吗?
2021-10-17 15:08
0
雪    币: 2142
活跃值: (4087)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
刚试了,非常nice,老哥把c++STL文件也提取出来加进去啊!
2021-10-17 19:45
0
游客
登录 | 注册 方可回帖
返回