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

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

2021-9-19 21:08
9287

基于EWDK10驱动安装包,只能编译NT驱动!电脑配置够硬,硬盘够大的就可以不用往下看了.我的硬盘太小了.成品只有600+mb.
是通过这位大佬的思路搞出来的,http://www.c0ks.com/thread-26623-1-1.html

第一步;
下载EWDK https://docs.microsoft.com/en-us/legal/windows/hardware/enterprise-wdk-license-2019 不用安装,只需提取几个文件.

第二步;
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链接:https://pan.baidu.com/s/11lJtb77PEgcxthDiQsbR6A 提取码: vxcw


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

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