彙編寫驅動 一 光速入門

2021-05-24 14:13:51 字數 1825 閱讀 8318

用彙編寫windows驅動非常簡單,只要有彙編基礎和用c寫驅動的能力即可。有了這兩樣基礎,我們距離用彙編寫驅動,只剩下一層窗戶紙,一戳就破。

一、準備軟體:radasm

為了快速入門,好的ide是降低入門難度的有效手段。radasm是我最為鍾愛的一款軟體,第一次使用過它,我就果斷地將masm32刪除了。

radasm是一款著名的win32彙編編輯器,精通win32彙編的人對它應該不會陌生。支援masm、tasm等多種彙編編譯器,提供優秀的ide,自帶乙個資源編輯器和乙個偵錯程式(od)。擁有較強的工程管理功能,加之眾多外掛程式的支援,使得它用組合語言編寫windows軟體變得得心應手。 

二、認識kmdkit

.386

.model flat, stdcall

option casemap:none

.data

.code

;;;driverentry這個入口函式還是老樣子

driverentry proc pdriverobject:pdriver_object,pusregistrypath:punicode_string

retdriverentry endp

end driverentry  ;;;這裡和使用者模式有點不同

四、可供使用的系統呼叫庫

kmdkit開發包提供的inc和lib庫檔案都分別儲存在「w2k」「wnet」和「wxp」三個的資料夾裡,其大部分內容都在w2k裡。對應的,radasm也在masm32資料夾中的include和lib資料夾裡,也分別儲存了這三個資料夾。

另外,有乙個特別值得注意的問題,當radasm引用以上三個資料夾裡lib檔案時,要使用絕對路徑,為什麼必須要這樣我也不清楚,如果有明白這個問題的朋友,也請你告訴我。

更新:dustno告訴了我答案,radasm沒有註冊環境變數,不知道是不是僅僅是我的安裝包的問題,還是這個軟體根本沒有註冊環境變數,反正大家注意一下吧。

五、示例

.386

.model flat, stdcall

option casemap:none

include w2k/ntddk.inc

include w2k/ntoskrnl.inc

includelib d:/radasm/masm32/lib/w2k/ntoskrnl.lib ;;請填寫自己的絕對路徑

.data

hello_str db 'hello,world',0

unload_str db "driver has been unloaded",0

.code

driverentry proc pdriverobject:pdriver_object,pusregistrypath:punicode_string

push offset hello_str

call dbgprint

add  esp,4

mov  eax,pdriverobject

mov [eax+34h],offset driverunloadproc;;xp裡pdriverobject.driverunload

mov eax,status_success

retdriverentry endp

driverunloadproc proc  driverobject:pdriver_object

push offset unload_str

call dbgprint

add  esp,4

retdriverunloadproc endp

end driverentry

彙編寫驅動 光速入門

用彙編寫windows驅動非常簡單,只要有彙編基礎和用c寫驅動的能力即可。有了這兩樣基礎,我們距離用彙編寫驅動,只剩下一層窗戶紙,一戳就破。一 準備軟體 radasm 為了快速入門,好的ide是降低入門難度的有效手段。radasm是我最為鍾愛的一款軟體,第一次使用過它,我就果斷地將masm32刪除了...

linux驅動編寫(usb host驅動入門)

usb協議是乙個複雜的協議,目前涉及到的版本就有usb1.0,usb2.0,usb3.0。大家如果開啟kernel usb host目錄,就會發現下面包含了ohci,uhci,ehci,xhci,whci等多種形式的控制器驅動。那麼,對於我們這些不是很了解usb的開發人員,如何了解usb的 結構呢?...

linux驅動編寫(入門)

csdn 大牛 feixiaoxing 在我離職之前,工作內容幾乎不涉及到驅動方面的知識。我所要做的內容就是把客戶對裝置的請求拆分成乙個乙個的介面,呼叫驅動的設定進行配置就可以了。當然,至於驅動下面是怎麼實現那就要根據具體情況而定了。比如說,有的驅動是晶元廠商直接寫好的,假設晶元廠商提供了對應平台的...