查看原文
其他

VSCode搭建轻量驱动开发环境

欲望的奴隶 看雪学院 2021-03-07

本文为看雪论坛优秀文章

看雪论坛作者ID:欲望的奴隶





前言


1. 工欲善其事,必先利其器。


2. 本文分享我用VSCode开发驱动的一些小心得。


3. 如有雷同,纯属巧合。




使用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++ standardset(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 filesfile(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)




- End -


看雪ID:欲望的奴隶

https://bbs.pediy.com/user-897726.htm

  *本文由看雪论坛 欲望的奴隶 原创,转载请注明来自看雪社区。



推荐文章++++

* 使用Frida简单实现函数粒度脱壳

* 从三道题目入门frida

* 物联网的基石-mqtt 协议初识

* 初探侧信道攻击:功耗分析爆破密码

* x64dbg入门之工具使用实战


好书推荐











公众号ID:ikanxue
官方微博:看雪安全
商务合作:wsc@kanxue.com



“阅读原文”一起来充电吧!

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存