參考資訊:
https://wasm.in/
http://four-f.narod.ru/
https://github.com/steward-fu/ddk
main.asm
export DriverEntry extern DbgPrint area .data, data, arm64 Msg dcb "Hello, world!", 0 area .text, code, arm64, align = 3 Unload ret DriverEntry stp fp, lr, [sp, #-0x20]! mov fp, sp str x0, [sp, #0x10] str x1, [sp, #0x18] adrp x0, Msg bl DbgPrint ldr x1, [sp, #0x10] add x1, x1, #0x68 adrp x0, Unload str x0, [x1] mov x0, #0 ldp fp, lr, [sp], #0x20 ret end
Create a new project
Empty WDM Driver
hello
Add New Item
在hello.asm上按下滑鼠右鍵,選擇Properties,將檔案改成Microsoft Macro Assembler
移除hello.inf,只要留下hello.asm即可
選擇ARM64
Build => Rebuild Solution
在開始安裝驅動程式之前,我們需要先下載除錯工具,讓驅動程式的Debug訊息可以顯示在除錯工具上面,目前在Kernel Mode以及User Mode上,最佳的Debug輸出訊息工具是DbgView,該公司目前已經被Microsoft併購,所以可以從Microsoft網站下載,下載完後執行DbgView並將Capture => Capture Kernel選項打勾,接著重啟DbgView
Legacy(NT-Style)驅動程式的安裝很方便,它是使用Service的方式安裝,因此,複製hello.sys到c:\windows\system32\drivers資料夾下並輸入如下命令進行安裝
c:\> sc create MyDriver binpath= c:\windows\system32\drivers\hello.sys type= kernel start= demand error= normal displayname= MyDriver c:\> sc start MyDriver
P.S. 要記得在"="前面都需要一個空格
輸入完上列指令後,就可以看到輸出的Hello, world!字串
如果要更方便測試,建議使用Four-F撰寫的KmdManager