驅動版Hello world

純屬無聊的產物,請不要拍磚,先來看看彙編的,這個例子修改自4-F的KMD教程,我只是加了一句話而已T_T :

01  ;@echo off
02  ;goto make
03  ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
04  ; simplest - Simplest possible kernel-mode driver
05  ;
06  ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
07  .386
08  .model flatstdcall
09  option casemap:none
10  ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
11  ;                                I N C L U D E   F I L E S
12  ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
13  include /masm32/include/w2k/ntstatus.inc
14  include /masm32/include/w2k/ntddk.inc
15  ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
16  ;                                         C O D E
17  ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
18  .code
19  ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
20  ;                                       DriverEntry
21  ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
22  DriverEntry proc pDriverObject:PDRIVER_OBJECT, pusRegistryPath:PUNICODE_STRING
23  
24      invoke DdbPrint,$CTA0("Hello World!")           ;; 打印消息,但得通過調試器或DbgView來捕捉
25  
26      mov eax, STATUS_DEVICE_CONFIGURATION_ERROR      ;;返回錯誤,使驅動被卸載
27      ret
28  
29  DriverEntry endp
30  ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
31  end DriverEntry
32  ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
33  ;                              B U I L D I N G   D R I V E R
34  ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
35  :make
36  set drv=simplest
37  /masm32/bin/ml /nologo /c /coff %drv%.bat
38  /masm32/bin/link /nologo /driver /base:0x10000 /align:32 /out:%drv%.sys /subsystem:native %drv%.obj
39  del %drv%.obj
40  echo.
41  pause
這個驅動是用批處理進行編譯的,下面的是C語言版的,更簡單了,用的是驅動模板的生成文件,也是隻修改了一

句話,嘿嘿,,,看來這一貼是水定了:

01  
02  ////////////////使用驅動模板生成/////////////////////
03  extern "C"
04  {
05      #include <ntddk.h>
06      #include <ntddndis.h>
07      #include <pfhook.h>
08  }
09  
10  NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObj, PUNICODE_STRING pRegistryString)
11  {
12      
13      DbgPrint("Hello world!");  //打印消息,但得通過調試器或DbgView來捕捉
14      return STATUS_DEVICE_CONFIGURATION_ERROR;     //返回錯誤,使驅動被卸載
15  
16  }

文件明顯短了一半,但這種寫法是不好的,至少也應該填充幾個常用的例程,但這個是入門級的,所以能省一點

就省一點。似乎這兩份代碼都是豆腐工程......

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章