彙編寫驅動 光速入門

2021-06-22 14:36:59 字數 1844 閱讀 9561

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

一、準備軟體:radasm

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

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

二、認識kmdkit

之所以能用radasm編寫驅動,就是因為它整合了kmdkit,它是由**人開發的,kmdkit的全稱是

kernel mode driver development kit for assembly language programmers

三、彙編寫驅動的基本框架

.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檔案時,要使用絕對路徑,為什麼必須要這樣我也不清楚,如果有明白這個問題的朋友,也請你告訴我。

五、示例

.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刪除了...

Hive 光速入門

hive 是 hadoop 生態系統中乙個重要的框架.hive 是建立在 hdfs 儲存系統之上的資料查詢,統計,分析框架,對應的大資料生態中的分析模組,而非儲存模組.hive 是乙個資料倉儲工具,通過類 sql hql 查詢語句,管理已經存在 hdfs 上的大型資料集.hive 可以根據已經儲存的...

php光速入門

windows 安裝整合環境wamp mac 安裝整合環境xampp 變成三要素 變數,運算,控制結構 a za z0 9 首位不能是數字 variable 1 echo variable 順序 分支if else 迴圈while 單引號只認得 雙引號認得多 n t 等等 建立陣列 arr arra...