用彙編寫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...