Zw和Nt函式的區別

2022-12-16 18:15:03 字數 1829 閱讀 6670

zw*系列函式和nt*系列函式的區別

什麼是「未公開」函式呢?微軟為了某種目的。對於一些封裝在系統中的函式沒有在任何開發文件提供任何函式說明和定義。

而這些函式有很多都是很有用的。所幸的是一些有心之人對windows系統動態連線庫做了十分詳細的分析,從而將這些未公開函式公開以供廣大開發人員共享(我對他們的感激之情就象滔滔江水,綿綿不絕)

首先他們都是微軟未公開的函式,之所以未公開主要是因為這些函式大部分功能太強大了,把他們公開會讓一些別有用心的人利用。9x下的我不知道,nt(含2000/xp)下你可以參考《windows nt native api》,他們中的大部分函式幾乎就從來沒有變過。而幾乎所有從中引出的win32api,都是通過呼叫的native api(中匯出)實現系統呼叫的。

舉乙個例子:

ntquerysysteminformation這個函式就強大到可以查詢所有的系統資訊,使用時需要使用者擁有相當高的訪問許可權。

in ring3:

lkd> ? ntdll!zwopenprocess

evaluate expression: 2089999739 = 7c92dd7blkd> ? ntdll!ntopenprocess

evaluate expression: 2089999739 = 7c92dd7b

可以看到,在ntdll中,zwopenprocess和ntopenprocess其實是同乙個函式,只不過擁有兩個名稱而已。

也就是說,在ring3環境中,zw***系列函式和nt***系列函式無區別。

in ring0:

lkd> u nt!zwopenprocessnt!zwopenprocess:

804de044 b87a000000 mov eax,7ah

804de049 8d542404 lea edx,[esp+4]804de04d 9cpushfd804de04e 6a08push 8

804de050 e8dc150000 call nt!kisystemservice (804df631)804de055 c21000 ret 10h

lkd> u nt!ntopenprocessnt!ntopenprocess:

80573d06 68c4000000 push 0c4h

80573d0b 6810b44e80 push offset nt!obwatchhandles+0x25c (804eb410)80573d10 e826f7f6ff call nt!_seh_prolog (804e343b)80573d15 33f6xor esi,esi

80573d17 8975d4 mov dword ptr [ebp-2ch],esi80573d1a 33c0xor eax,eax

80573d1c 8d7dd8 lea edi,[ebp-28h]

80573d1f abstos dword ptr es:[edi]

可以看得出,zwopenprocess函式很短,首先把0x7a(ntopenprocess的服務號)存入eax,然後做一些儲存現場的工作即kisystemservice——這個函式根據eax中的service id在ssdt中查詢相應的系統服務,然後呼叫之。

而ntopenprocess函式很長(反彙編結果只是一部分),事實上,

ntopenprocess便是真正執行開啟程序操作的函式(在r0中通常稱為服務,或例程),所以,若在驅動中直接呼叫nt系列函式,是不會經過ssdt的,也就不會被ssdt hook所攔截。

簡單總結如下:

r3下無論如何呼叫,均無法繞過ssdt hook,r0下呼叫nt*可以繞過ssdthook。

報告和請示的區別

一 請示的原則 需要請示的情況大體包括 1 對上級的方針政策有不了解的問題 2 工作中新近發生比較重大的 本單位一時沒有把握處理的問題 3 本地區 本部門因情況特殊難執行統一規定,需要變通處理的問題 4 開展某項工作遇到的人力 物力 財力方面難以解決的問題等。這裡有兩點需要特別注意,第一,要避免事前...

做和作的區別

作 與 做 的區別 李濤 現代漢語中的 作 與 做 用途很廣,使用頻度很高,所構成的詞語很多,二者之間的意義和用法也相當複雜,既有區別又有交叉。筆者為高中語文教師,在教學中,發現總有一些學生對 做 作 的用法搞不清,有些乾脆糊里糊塗使用。看了人民教育出版社譚桂聲同志的關於 做 作 的辨析考證,深有啟...

做和作的區別

作 與 做 人民教育出版社譚桂聲 現代漢語中的 作 與 做 用途很廣,使用頻度很高,所構成的詞語很多,二者之間的意義和用法也相當複雜,既有區別又有交叉。一 作 做 溯源 甲骨文中有 乍 而無 作 乍 是 作 的古文。在甲骨文中作為動詞,意義同 作 例如 甲骨卜辭 我乍邑 意為 我建築城邑 金文銘辭也...