VXD技術漫談(1) (轉)

worldblog發表於2007-12-25
VXD技術漫談(1) (轉)[@more@]VXD技術漫談(1)
 
  說起VxD技術,很多接觸的人都會感到陌生,不過提起,我相信您一定不再搖頭。

  有過一定的人可能聽說過VxD這個詞。80386的保護給了我們非常多的“保護”,對於一個不懈地追求自由的人來說,“鍍金的籠子也是籠子”,翻遍Windows程式設計的書籍,也許最終只找到這樣一扇通向自由的門:試一試VxD。

  VxD是什麼?為什麼CIH會如此猖獗?

  CIH執行在Ring 0,掛接IFS(Installable File System)服務,截獲File Opening操作,然後把自己“傳染”到別的PE格式的中,如果到了該發作的時間,它就主機板的Flash Memory。

  CIH之所以能破壞資源(透過攻擊主機板的Flash Memory,達到破壞硬體的目的),正是因為它利用了VxD技術。對於一般的執行於Ring 3的Windows應用來說,想破壞主機板的Flash Memory是不可能的,因為這是80386保護模式對於程式碼的盤查所不允許的,其結果頂多是引起操作異常,也就是在Windows中經常出現的、令心跳加速的、藍底白

  VxD = Virtual “something" Device,這裡的x代表Something。比如說VKD代表Virtual Keyboard Device(鍵盤),VPICD 代表 Virtual Programmable Interrupt Device(可程式設計中斷控制器驅動)。VxD是Windows 3.1、Windows 95的驅動程式模型(也支援VxD)。

  在很多人的印象中,VxD是與硬體裝置打交道的,對於來說沒有太大的作用,其理由之一是:用來開發VxD的DDK一般來說都分發給硬體開發商,對於搞的人來說,SDK才是看家本領,而SDK中對於VxD卻是言及甚少。這種想法可是大錯而特錯了。

  由於VxD執行在系統的Ring 0級,擁有與同等的級別,所以,VxD可以最大程度地幫助我們走出80386保護模式強加給我們的“鍍金的籠子”。我們就拿最近轟動一時的CIH病毒來說一說VxD這柄利劍的強大。字的“General Protection Fault”,在這裡,我們該感謝那個“鍍金的籠子”,至少它使我們免受鄰居家那個只學過Turbo C程式設計的小孩的搔擾。
了搞破壞,VxD還可以用來做些什麼呢?

  在這裡我簡單談一下VxD的應用。

  由於VxD可以虛擬根本不存在的硬體,因此,可以利用VxD虛擬硬體狗來一些有版權的軟體的保護(怎麼又是幹壞事?我只是想告訴硬體狗的製造者:有些吝嗇鬼想透過這種手段來省銀子,早作提防啊!)。

  由於VxD工作在作業系統的最底層,所以,掌握它 能使你具備擴充套件作業系統的能力。有沒有想過在Windows 95裡按下Ctrl+Alt+Delete鍵,而後彈出的是你自己設計的對話方塊(聰明的你一定可以發揮你天才的想像力,比如說顯示一張你女朋友的照片,以提醒自己關了電腦之後別忘了去赴約會),VxD可以幫助你跟Windows 95開開玩笑。

  好吧,說點正經的應用。想不想利用VxD來作些“實時”控制之類的東西?當然,作實時工控,首選的作業系統還是DOS,但是如果你經不住Windows那張漂亮面孔的誘惑,也可以在Windows下作“準實時”控制應用。一般來說,透過VxD的協助,在很多情況下,我們還是可以獲得比較滿意的實時效果的。據測試,486/66的PC機上執行Windows 95,在沒有別的應用程式干擾的情況下,VxD可以處理10kHz的硬體中斷,不會漏掉一箇中斷!精心設計你的應用程式和VxD(最好再買臺好點的電腦),相信你可以獲得滿意的“實時”效果。

  再講一個有趣的應用吧(今天有點發暈了,平時我可不大愛吹牛的)。如果你有一堆16位的DLL,(假設你曾在Windows 31下作過應用程式開發,並曾為討老闆的歡心而奮力地寫過許多功能不錯的DLL),而你又懶得透過重寫程式碼或者利用煩瑣的Thunk移值到Windows 95下,那麼,試一試VxD,可能會給你“它山之石可攻玉”的經歷。當然,我的前提是你對於VxD已經有了比較多的認識並有一些實戰經驗,否則你大概會因此導致神經衰弱的。

  再說一個比較有趣的應用。想不想使DTSR、Win16應用程式、應用程式之間產生一些協作?想不想打破Win32應用程式4GB獨立線性地址空間帶來的限制?透過VxD作中介,你會發現原來“萬物通於一理”。別相信坐在你對面的那個權威的“No”,相信你自己。

  對於VxD,我們已經說得夠多了,也許你已經興奮得想立刻去書攤上找本《21天輕輕鬆鬆掌握VxD技術》來一讀為快了。先安靜會兒,現在開始潑冷水

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-995716/,如需轉載,請註明出處,否則將追究法律責任。

相關文章