日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

Windows内核编程学习1:构建HelloWorld

發(fā)布時(shí)間:2023/12/10 windows 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows内核编程学习1:构建HelloWorld 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

附本章需要資源:VS+SDK+WDK+InstDrv+DbgView-系統(tǒng)安全文檔類資源-CSDN下載

首先下載VS+WDK,資源可以從微軟上下,我這里資源也附在后面,但不是最新的。

今天我們開始第一個(gè)項(xiàng)目:HelloWorld

(我用的是VS2019)打開VS,[創(chuàng)建新項(xiàng)目]=>[Kernel Mode Driver Empty],再填寫名稱:HelloWorld

進(jìn)入項(xiàng)目后,右擊“解決方案管理器”中的“Source Files”,“添加”,“新建項(xiàng)”,不要選擇上面的任何項(xiàng)目,直接在“名稱”中填寫“main.c”,然后在“main.c”里寫入以下C語(yǔ)言代碼:

#include <ntddk.h>VOID DriverUnload(PDRIVER_OBJECT driver) {DbgPrint("HW: Our driver is unloading...\r\n"); } NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path) {DbgPrint("HW: Hello, World!\r\n");driver->DriverUnload = DriverUnload;return STATUS_SUCCESS; }

保存項(xiàng)目。然后根據(jù)你的系統(tǒng)版本,在菜單欄中選擇“x86”“x64”“ARM”或“ARM64”。

接著開始生成解決方案了。菜單欄中“生成”=>“生成解決方案”。

接下來(lái)有些人會(huì)遇到要添加Spectre緩解庫(kù)的情況,可以從開始菜單里打開“Visual Studio 2019 Installer”,進(jìn)行修改。修改完后重新生成。

還有個(gè)問題。VS會(huì)提示代碼中有錯(cuò)誤,原因在于driver與reg_path沒用到過,可以改成下面的樣子:(也就是自己給自己賦值了一下)

#include <ntddk.h>VOID DriverUnload(PDRIVER_OBJECT driver) {DbgPrint("HW: Our driver is unloading...\r\n");driver = driver; } NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path) {DbgPrint("HW: Hello, World!\r\n");reg_path = reg_path;driver->DriverUnload = DriverUnload;return STATUS_SUCCESS; }

生成完畢后,就是運(yùn)行項(xiàng)目了。這時(shí)候你到項(xiàng)目文件夾下會(huì)找到一個(gè)“.sys”的文件,因?yàn)槲覀冞@里項(xiàng)目名稱叫HelloWorld,所以文件名為“HelloWorld.sys”。怎么運(yùn)行呢?因?yàn)閃indows內(nèi)核程序不同于普通的應(yīng)用程序,你也不要指望它會(huì)彈出個(gè)窗口,所以只能用`DbgPrint`,也就是調(diào)試輸出,來(lái)查看它的狀態(tài)。輸出內(nèi)容可以用DbgView軟件查看——接下來(lái)介紹如何查看`DbgPrint`的內(nèi)容。

先安裝驅(qū)動(dòng)程序。我這里用的InstDrv,資源附在后面。

打開InstDrv.exe,把HelloWorld.sys拖到輸入框上,會(huì)自動(dòng)輸入文件路徑。接下來(lái)先不忙安裝啟動(dòng),我們打開DbgView.exe,把菜單欄中“監(jiān)視”欄中除了“啟動(dòng)日志”以外都勾上,接下來(lái)會(huì)出現(xiàn)一堆監(jiān)視輸出信息,不管它們,我們的程序還沒安裝呢。

但是啟動(dòng)失敗了。為什么?因?yàn)闆]有簽名。

打開測(cè)試模式,在測(cè)試模式下可以安裝啟動(dòng)沒有簽名的驅(qū)動(dòng)程序。Win+R,輸入cmd回車,在命令提示符中輸入`bcdedit /set testsigning on`打開測(cè)試模式,再重啟就行了。(同理,`bcdedit /set testsigning off`可以再重啟后關(guān)閉測(cè)試模式)

InstDrv中 安裝=>啟動(dòng)? 程序,DbgView中會(huì)立刻出現(xiàn)調(diào)試信息(迅速一定要迅速!!!),我這里把我的給大家看看:

?同樣,“停止”之后,會(huì)有驅(qū)動(dòng)程序卸載的信息:

?接下來(lái)可以卸載了。

今天的學(xué)習(xí)就結(jié)束了!感謝大家的閱讀!也歡迎大家提出問題!

總結(jié)

以上是生活随笔為你收集整理的Windows内核编程学习1:构建HelloWorld的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。