其他
VSCode搭建轻量驱动开发环境
本文为看雪论坛优秀文章
看雪论坛作者ID:欲望的奴隶
前言
1. 工欲善其事,必先利其器。
2. 本文分享我用VSCode开发驱动的一些小心得。
使用VSCode开发驱动相对VS的优势
启动快
占用内存小
搭建开发环境迅速
总而言之,特别适合一些小驱动的开发。
准备
VS,WDK(VSCode只是作为IDE,编译还是需要VS工具链) CMake VSCode及其插件
FindWDK
具体
下面以一个helloworld为例,一步步实现VSCode编译驱动。
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;
}
更多实例
支持汇编
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
)
看雪ID:欲望的奴隶
https://bbs.pediy.com/user-897726.htm
*本文由看雪论坛 欲望的奴隶 原创,转载请注明来自看雪社区。
推荐文章++++
好书推荐