windows 核心函式字首解析

2021-06-27 07:44:42 字數 2410 閱讀 3025

1.對於ring3 api主要由 kernel32.dll,user32.dll等dll匯出函式,

2.對於核心函式,由ntoskrnl.exe匯出。可以直接用ida載入,在export欄中察看(可使用搜尋欄搜尋函式)

注意:文件化:

在export顯示的函式,說明函式已匯出,在wdk文件中,可查詢到的函式(聯網+本地),為文件化,可直接呼叫。

未文件化:若匯出了,未文件化,則要宣告此核心函式

主要的字首有:

zw:zw 和同名的 nt 函式具有相同的功能,中間是從 zw 到 nt 函式的簡單跳轉。本系列核心函式用於檔案和登錄檔方面的操作,比如檔案操作、登錄檔操作、訪問程序、事件操作、令牌操作、程序操作和埠操作等。

ex:管理層,ex 是 executive 的開頭兩個字母。

ke:核心層,ke 是 kernel 的開頭兩個字母。

hal:硬體抽象層,hal 是 hardware abstranction layer 的縮寫。

ob:物件管理,ob 是 object 的開頭兩個字母。

mm:記憶體管理,mm 是 memory manager 的縮寫。

ps:程序(執行緒)管理,ps 表示process。

se:安全管理,se 是 security 的開頭兩個字母。

io:i/o管理。

fs:檔案系統,fs 是 file system 的縮寫。

cc:檔案快取管理,cc 表示 cache。

cm:系統配置管理,cm 是 configuration manager 的縮寫。

pp:「即插即用」管理,pp 表示 pnp。

rtl:執行時程式庫,rtl 是 runtime library 的縮寫。本系列核心函式用於執行時庫,以rtl為字首的函式可以完成多種操作,例如字串、執行緒、資源、臨界區、安全物件的初始化和使用,記憶體、程序異常和資料型別的處理,還用於完成定時器、堆、ipv4和ipv6方面的操作,以及壓縮和解壓縮等。

ndis:與ndis網路驅動開發相關的函式。

wdf:開發wdf驅動相關的函式都是以 wdf 開頭。

kietw:本系列核心函式用於系統核心,這些函式只能從核心的內部進行呼叫,常用的有:kiusercallbackdispatcher、kiraiseuserexceptiondispatcher、kiuserapcdispatcher、kiuserexceptiondispatcher等。

csr系列:此系列函式用於客戶機和伺服器執行時,如果您想攔截客戶機/伺服器方面的操作,那麼就需要對csr系列核心函式做進一步的了解。常見的有:csrclientcallserver、csrcapturemessagebuffer、csrconnectclienttoserver和crsnewthread等。

ldr系列:本系列核心函式用於引導程式管理器,如果你打算攔截引導程式的話,那麼請進一步考察這組以ldr為字首的函式,常用的有:ldrinitializethunk、ldrlockloaderlock、ldrunlockloaderlock、ldrgetdllhandle、ldrgetprocedureaddress等。

dbg系列:本系列核心函式用於除錯管理,如果打算攔截除錯操作的話,那麼請進一步考察這組以dbg為字首的函式,常用的函式包括:、dbgbreakpoint、dbguserbreakpoint、dbgprint和dbguiconnecttodbg等。

etw系列:本系列核心函式用於追蹤視窗事件,如果你打算攔截追蹤之類的操作的話,那麼請進一步考察這組以etw為字首的函式。常用的函式包括:etwtraceevent、etwenabletrace、etwgettraceenablelevel和etwgettraceenableflags等。

pfx系列:本系列核心函式用於ansi字串操作,如果你打算攔截asni串表方面的操作的話,就需要進一步了解這些函式。常用的包括:pfxinitialize、pfxremoveprefix、pfxinsertprefix、pfxfindprefix等。

不過並非所有函式名都帶有這樣的字首,對字首的使用也並非非常嚴格。

例如:核心層函式名的字首本應該是ke,但實際上有不少核心層函式名的字首是 ki,這些函式大都是與中斷有關的比較底層的函式。

有時候還在函式名的字首後面加上小寫字母 f,表示這個函式是快速呼叫函式。

例如:ntkernelapi long_ptr 

fastcall obfdereferenceobject

(in pvoid object);

這裡的型別說明 

fastcall

向編譯工具表明這是個快速呼叫函式,函式名字首加 f 則使人一看見函式名就知道這個函式是個快速呼叫函式,一般的函式呼叫是通過堆疊傳遞引數的,而快速呼叫函式則通過 ecx 等暫存器傳遞引數,因為避免了幾個堆疊操作而使效率有所提高。

這裡的 

fastcall

是必須的,否則編譯工具不知道應該通過暫存器傳遞引數,而在函式名中加 f 則只是為了增加程式的可讀性。

核心函式字首簡單介紹

1.kietw系列 本系列核心函式用於系統核心,這些函式只能從核心的內部進行呼叫,常用的有 kiusercallbackdispatcher kiraiseuserexceptiondispatcher kiuserapcdispatcher kiuserexceptiondispatcher等。2...

Windows核心函式的命名

windows的核心函式在命名上有個很好的特色,就是函式名都按其所在的層次或模組加上了特定的字首。了解了這些字首,看到乙個函式名就可以大致 知道這個函式所屬的層次和模組,主要的字首有 ex 管理層,ex是executive的開頭兩個字母。ke 核心層,ke是kernel的開頭兩個字母。hal 硬體抽...

Windows核心函式的命名

windows核心情景分析 採用開源 reactos 上 下冊 本書通過分析reactos的源 介紹了windows核心各個方面的結構 功能 演算法與具體實現。本小節為大家介紹windows核心函式的命名。ad 1.5 windows核心函式的命名 windows的核心函式在命名上有個很好的特色,就...