首页
论坛
课程
招聘
雪    币: 485
活跃值: 活跃值 (439)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝

[原创]VSCode搭建轻量驱动开发环境

2020-6-29 11:03 3851

[原创]VSCode搭建轻量驱动开发环境

2020-6-29 11:03
3851

前言

工欲善其事,必先利其器。
本文分享我用VSCode开发驱动的一些小心得。
如有雷同,纯属巧合

使用VSCode开发驱动相对VS的优势:

  • 启动快
  • 占用内存小
  • 搭建开发环境迅速

总而言之,特别适合一些小驱动的开发。

准备:

  • VS,WDK(VSCode只是作为IDE,编译还是需要VS工具链)

  • CMake

  • VSCode及其插件

  • FindWDK

具体:

下面以一个helloworld为例,一步步实现VSCode编译驱动。

  1. 把FndWDK的cmake文件夹复制到与helloworld同目录

  2. 新建CMakeLists.txt,main.cpp

     cmake_minimum_required(VERSION 3.10)
    
     list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/../cmake")
    
     project(helloworld)
    
     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /WX-")
     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4 /WX-")
    
     # specify the C++ standard
     set(CMAKE_CXX_STANDARD 17)
     set(CMAKE_CXX_STANDARD_REQUIRED True)
    
     add_definitions(-DUNICODE -D_UNICODE)
    
     find_package(WDK REQUIRED)
    
     wdk_add_driver(helloworld
         main.cpp
         )
    
     extern "C"
     {
     #include <ntifs.h>
     #include <ntddk.h>
     }
    
     extern "C" DRIVER_INITIALIZE DriverEntry;
    
     static DRIVER_UNLOAD DriverUnload;
    
     //------------------------------------------------------------
     //
     //
    
     void DriverUnload(PDRIVER_OBJECT driverObject)
     {
         UNREFERENCED_PARAMETER(driverObject);
     }
    
     NTSTATUS DriverEntry(PDRIVER_OBJECT driverObject,
                         PUNICODE_STRING registryPath)
     {
         UNREFERENCED_PARAMETER(registryPath);
         PAGED_CODE();
         auto status = STATUS_SUCCESS;
    
         //---------------------------------------
         //
         driverObject->DriverUnload = DriverUnload;
    
         return status;
     }
    
  3. VSCode打开,会提示选择工具包:

    我选amd64

  4. 点击生成或F7生成项目

    编译成功。还会提示

    点允许,点允许后有代码补全,错误提示

  5. 然后就可以愉快写代码了。

  6. 以后新建驱动项目,直接复制CMakeLists.txt,然后稍加修改就行了

更多实例

更多编译相关选项,可以查看CMAKE教程

  • 支持汇编

      enable_language(ASM_MASM)
    
      add_executable(helloworld
          main.cpp
          utils.asm
          )
    
  • 也可以轻松支持stl,支持大型驱动构建

          set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /WX-")
          set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4 /WX-")
    
          set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
          set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
    
          list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/../../cmake")
          find_package(WDK REQUIRED)
    
          include_directories(
              "C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/include"
              "C:/Program Files (x86)/Windows Kits/10/Include/10.0.17134.0/ucrt"
          )
    
          # Add source files
          file(GLOB_RECURSE sourcefiles
              "*.h"
              "*.cc"
              "*.cpp"
          )
    
          add_definitions(-D_NO_CRT_STDIO_INLINE)
    
          wdk_add_driver(AntiEAC_kernel
              ${sourcefiles}
              )
    
          target_link_directories(AntiEAC_kernel PRIVATE
              "./infinityhook"
              "./HWIDSpoofer"
          )
    
          target_link_libraries(AntiEAC_kernel
              libinfinityhook
              libHWIDSpoofer
          )
    

[公告]SDC2020 看雪安全者开发者峰会10月23日将在上海举行!欢迎参加!

最新回复 (23)
雪    币: 9089
活跃值: 活跃值 (426)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
pureGavin 活跃值 2020-6-29 11:04
2
0
mark,楼主辛苦了
雪    币: 2896
活跃值: 活跃值 (73)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Genes 活跃值 2020-6-29 11:53
3
0
mark,想把vscode构造一个轻量的vc开发编辑器,发现真麻烦,直接安装vs2019了~~
雪    币: 485
活跃值: 活跃值 (439)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
欲望的奴隶 活跃值 2020-6-29 11:58
4
0
Genes mark,想把vscode构造一个轻量的vc开发编辑器,发现真麻烦,直接安装vs2019了~~
就第一次和前几次麻烦点,后面的项目复用前面的配置文件,非常快速,便捷。
雪    币: 1565
活跃值: 活跃值 (64)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Rookietp 活跃值 2020-6-29 14:08
5
1
真好,我还是选择vs.
雪    币: 1034
活跃值: 活跃值 (111)
能力值: ( LV3,RANK:10 )
在线值:
发帖
回帖
粉丝
のばら 活跃值 2020-6-29 15:00
6
0
可以不用,但是得会用
雪    币: 4757
活跃值: 活跃值 (441)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
敏而好学 活跃值 2020-6-29 16:42
7
0
VS启动也不慢呀,这是电脑配置的问题吧,我VS都是秒开。
雪    币: 14805
活跃值: 活跃值 (284)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
wsc 活跃值 2020-6-29 17:00
8
0
vim 插件装好,写代码非常快 再也不用鼠标了- -
雪    币: 964
活跃值: 活跃值 (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
江北浪 活跃值 2020-7-1 16:52
9
0
Genes mark,想把vscode构造一个轻量的vc开发编辑器,发现真麻烦,直接安装vs2019了~~
配置够就VS2019最省心,除非电脑带不动VS。毕竟重点在写,而不是环境,环境怎么省心怎么来
雪    币: 3331
活跃值: 活跃值 (139)
能力值: ( LV8,RANK:126 )
在线值:
发帖
回帖
粉丝
Roger 活跃值 1 2020-7-1 17:37
10
0
还是VS吧,vscode在linux用用挺好
雪    币: 5591
活跃值: 活跃值 (319)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
黑洛 活跃值 1 2020-7-2 08:08
11
0
VSCode写windows上的cpp代码真的不太行。
雪    币: 4757
活跃值: 活跃值 (441)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
敏而好学 活跃值 2020-7-2 08:20
12
0
您好,软件调试第二版,卷2何时出呀,是不是讲软件方面的?
雪    币: 4757
活跃值: 活跃值 (441)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
敏而好学 活跃值 2020-7-2 08:25
13
0
wsc vim 插件装好,写代码非常快 再也不用鼠标了- -
请问软件调试第二版,关于软件方面的书何时出呀,等的心都碎了。
雪    币: 7067
活跃值: 活跃值 (135)
能力值: ( LV5,RANK:68 )
在线值:
发帖
回帖
粉丝
万剑归宗 活跃值 1 2020-7-2 08:37
14
0
mark
雪    币: 388
活跃值: 活跃值 (60)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
wowocock 活跃值 1 2020-7-3 18:20
15
0
用VS2008+DDKBUILD的路过。
雪    币: 8799
活跃值: 活跃值 (789)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
hzqst 活跃值 3 2020-7-3 18:48
16
0
经典Anti EAC
雪    币: 337
活跃值: 活跃值 (104)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
淡然他徒弟 活跃值 2020-7-4 02:17
17
0
mark
雪    币: 337
活跃值: 活跃值 (104)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
淡然他徒弟 活跃值 2020-7-4 02:18
18
0
hzqst 经典Anti EAC
亮生你发现了华点
雪    币: 1361
活跃值: 活跃值 (416)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
风中小筑V 活跃值 2020-7-6 19:49
19
0
我可以不用,,但是我不能不知道..(o゜▽゜)o☆
雪    币: 194
活跃值: 活跃值 (53)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
Lthis 活跃值 1 2020-7-12 19:02
20
0
楼主的vs和wdk分别什么版本啊~~
雪    币: 14805
活跃值: 活跃值 (284)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
wsc 活跃值 2020-7-15 11:10
21
0
敏而好学 您好,软件调试第二版,卷2何时出呀,是不是讲软件方面的?
第二卷我也不清楚 估计得催下作者
雪    币: 4757
活跃值: 活跃值 (441)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
敏而好学 活跃值 2020-7-15 14:16
22
0
wsc 第二卷我也不清楚 估计得催下作者
谢谢版主
雪    币: 5591
活跃值: 活跃值 (319)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
黑洛 活跃值 1 2020-8-2 19:10
23
0
M$的vscode对其他平台的C/C++支持都很好(除了windows),所以用vscode的话,我一般当个代码阅读器来用的。
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
mb_ozfzqyfc 活跃值 5天前
24
0
一直使用vs code在linux下开发驱动、移植linux内核,毕竟vs没法在linux下使用,移植的时候需要的库在windows下又很难找
游客
登录 | 注册 方可回帖
返回