日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

2 《Undocumented Windows 2000 Secrets》翻譯 --- 第二章( 六 )


譯注:
你需要安裝 Windows 2000 DDK 才能獲得 ntdll.lib
可以到 http://www.microsoft.com/msdownload/platformsdk/sdkupdate/ 下載最新的 SDK
將 NTDLL.DLL 導(dǎo)入庫添加到工程中
在你能成功的編譯和鏈接在用戶模式下使用 ntdll.dll 導(dǎo)出函數(shù)的代碼之前,你必須考慮如下的四個重點:
1. SDK 的頭文件中,沒有包含這些函數(shù)的原型 。
2. SDK 文件中缺少這些函數(shù)使用的幾個基本的數(shù)據(jù)類型 。
3. SDK 和 DDK 頭文件并不兼容,你不能將 #include 加入你的 Win32 C 源代碼文件中 。
4. ntdll.lib 并沒有加入 Visual C/C默認的導(dǎo)入庫列表中
最后一個問題很容易解決,只需要編輯工程的設(shè)置屬性,或者將如下內(nèi)容加入你的源代碼中,#pragma comment(linker,”defaultlib:ntdll.lib”) ,像在前面的 Windows 2000 運行時庫一節(jié)解釋的那樣,這會在編譯時,將 ntdll.dll 加入鏈接器的 /defaultlib 設(shè)置中 。解決缺失的定義比較困難 。因為不可能將 SDK 和 DDK 頭文件整合到 C 程序中,最簡易的解決方法是寫一格自定義的頭文件,在該頭文件中包含所有調(diào)用 ntdll.dll 導(dǎo)出函數(shù)必須的定義 。幸運的是,你不需要開始這項工作了,在本書光盤的 srccommoninclude 目錄下的 w2k_def.h 文件包含了你所需要的所有基本信息 。該頭文件將在第六、七兩章中扮演重要角色 。因為它被設(shè)計為可同時兼容用戶模式和內(nèi)核模式的工程,在用戶模式代碼中,你必須在 #include 之前插入 #define _USER_MODE_ ,以加入僅出現(xiàn)在 DDK 中的一些定義 。
有關(guān) Native API 編程的很多詳細信息都已經(jīng)出版,目前看來,針對 Windows 2000 平臺的好書是 Gary Nebbett"s 的《 Windows NT/2000 Native API Reference 》 。該書提供的示例程序較少,但它覆蓋了 Windows NT/2000 平臺上的所有 Native API ,還包括這些函數(shù)需要的數(shù)據(jù)結(jié)構(gòu)定義以及其他必須的一些結(jié)構(gòu)定義 。
【2 《Undocumented Windows 2000 Secrets》翻譯 --- 第二章】將在第六章介紹的 w2k_call.dll 示例庫,演示了 w2k_def.h 的典型用法 。第六章還將討論另一種在用戶模式進入 Windows 2000 內(nèi)核的方法,此種方法不受限于 Native API。事實上,這種技巧也可用于 ntoskrnl.exe ,對于所有加載到內(nèi)核空間的模塊,只要它們導(dǎo)出了函數(shù)或者可以和 .dbg 或 .pdb 符號文件相匹配都可以使用此方法 。如你所見,在本書剩余章節(jié)中還有很多有趣的信息 。但是,在我們到達那兒之前,我們會繼續(xù)討論一些基本的概念和技術(shù) 。

推薦閱讀