萬盛學電腦網

 萬盛學電腦網 >> 健康知識 >> 不要對我太狠——深入淺出windows的dll文件

不要對我太狠——深入淺出windows的dll文件

今天又中木馬了,木馬咋越來越多了,弄的我的心跋涼跋涼的,經過一查找,發現原來是一個名叫XX的木馬,到木馬存放目錄下面,發現了一個dll文件,心想:小樣的,你穿上馬甲我也認識你,於是就單擊--右鍵—刪除。。。。一個dll文件就這樣被刪掉了,不要對dll太狠了,要知道這可是程序員的血汗啊。。為什麼這樣說呢?那我們先來認識一下什麼是dll

dll實際上是動態鏈接庫的縮寫,從windows1.0開始,動態鏈接庫就是整個操作系統的基礎,那麼這有什麼作用呢?在dos時代,程序員是通過編寫程序來達到預期的目的的,每實現一個目的就需要編寫一個程序,這樣下去,簡單的還好,要是復雜的程序話,那乞不是既浪費時間,又浪費青春。於是聰明的程序員們想出了一個辦法,把的實現一定功能的程序模塊存放在一個文件當中,以API函數形式存放在dll當中,當編寫程序的時候,需要用到這個功能,那麼直接從這個文件當中調用就可以了,於是就出現了dll——動態連接庫。

那麼動態連接庫有什麼作用呢?

優點之一,上面已經提過了,程序員把一些模塊壓入dll文件之後,在要運行程序的時候只需要調用動態鏈接庫就可以了,而並不需要把dll加載到內存中,節省了大量的內存空間,可以方便運行其他的程序,許多朋友在關機的時候,一直關不了,整的郁悶,其實就是因為系統所調用的dll太多,導致了計算機性能的驟減,其實只需要把一些無關緊要的dll刪除掉就可以了

優點之二,在一個很大的游戲中,通常需要調用許許多多的動態鏈接庫來給玩家一個美觀震撼的效果,《極品飛車9---最高通緝》讓本文作者我感受到了一種從來沒有感受過的感覺,那種感覺就象是初戀的味道,畫面效果棒極了。可是要實現這樣一個效果,需要許多程序員編寫不同的dll來互相協助,那麼這些dll可以用vc ,vb,Delphi,asm等等來完成,只要每個程序員負責編寫一個功能,這樣只要調用在一起就方便多了,節省了大量的人力,物力,財力。

既然dll有這麼多好處,而且又這麼方便,我那木馬的程序員又做出過什麼呢?他只不過

調用了系統的dll函數罷了(windwos系統中有3個非常重要dllkernel32.dlluser32.dllgdi32.dll其中包括windows系統諸多功能的函數)

呵呵,其實話不能這樣說。木馬的編寫者也需要有很深的工夫哦,那麼我們現在以黑客之門做為一個例子來看看,這個例子需要的工具depend walker,可以在黑客基地論壇黑客兵器庫?tid=2860045&fpage=1下載

我們首先來看看用depend walker打開黑客之門的動態鏈接庫

點擊查看大圖

我們發現,在左邊的hkdoordll.dll下面的樹狀結構,顯示出了黑客之門所調用的dll列表,從這裡不難發現,其實dll也可以調用dll。那麼dll我們可以把他看做是一個exe文件,只是少了一個入口函數而已(就暫且這樣理解)

分支下有分支,而右邊中間的那4個東東,這個是dll的輸出函數表,在function欄目下的是輸出函數的名稱,因此,我們可以很容易發現,黑客之門hkdoordll.dll主要負責4個方面的任務。DllRegisterServer DllUnRegisterServer ServiceMain DllCanUnloadNow

然而這對於一個後門來說已經夠了,這需要作者有足夠的編程知識,我們再一次向作者致敬。分享了這樣一個環保無污染的後門。

通過對上面的知識的理解。我們可以發現其實,dll可真算是一個大寶庫,不要對他太狠,一看到可疑的就丟到垃圾筒裡去了。其實dll文件還可以盜用哦。盜用的工具,可以在黑客基地論壇黑客兵器庫?tid=2859649&fpage=1下載

點擊查看大圖

我們用他來打開黑客之門的dll,可以看到他的版權等等,對於有位圖,音樂,圖表,對話框的dll,我們也可以看到他裡面的全部內容。我們可以修改版權,更換位圖,更換音樂,更換對話框,總之只有你想不到的,沒有你做不到的。

那麼既然dll被這樣多程序調用,如果結束掉這個木馬後門dll的調用過程,那麼這個後門是不是沒用啦,那回答當然是肯定的,那麼如何知道DLL文件被幾個程序使用呢?

我們只需要:

運行Regedit,進入HKEY_LOCAL_MACHINE\Software\Microsrft\Windows\Current-

Version\SharedDlls子鍵查看,其右邊窗口中就顯示了所有DLL文件及其相關數據,其中數據右邊小括號內的數字就說明了被幾個程序使用,(2)表示被兩個程序使用,(0)則表示無程序使用,可以將其刪除。

嘿嘿,這下知道window優化大師那分析dll的原理了吧。

在黑客基地論壇的新手學堂裡,經常看到有人求助:我的搜索欄什麼也不能顯示了,怎麼辦啊?如圖

其實那是因為dll沒有注冊造成的。

只需要在開始---運行—然後注冊兩個dll然後重新啟動就可以了,具體方法是

regsvr32 vbscript

regsvr32 jscript

當你看到跳出個對話框,裡面寫著,vbscript 中的dllregister server成功的時候,說明已經注冊成功了

什麼?還要注冊?或許你看到這裡開始疑問了,,這什麼注冊啊?是不是象進入一個論壇,需要注冊一個帳號才能進入一樣呢?

其實系統裡面的dll是分為兩類的。一類是需要注冊的,一類是不需要注冊的。

大多數都是通過命令regsvr32來注冊的。而windows為了減少所調用的dll的數量,提升計算機的性能以及速度。通常只把幾個重要的dll默認就注冊了,不常用的dll需要你自己去注冊。而注冊之後,系統就可以調用他了,從而具有了相應的功能。

而當你認為你的計算機所調用的無用dll太多的時候,可以通過命令regsvr32 /u dll的名稱來反注冊。

有些朋友的愛機會出現這樣的情況,在啟動的時候,錯誤對話框中提示DLL文件丟失

這是因為在卸載文件時會提醒你刪除某個DLL文件可能會影響其他應用程序的運行。所以當你卸載軟件時,就有可能誤刪共享的DLL文件。一旦出現了丟失DLL文件的情況,如果你能確定其名稱,可以在Sysbckup(系統備份文件夾)中找到該DLL文件,將其復制到System文件夾中。如果這樣不行,在電腦啟動時又總是出現“***dll文件丟失……”的提示框,你可以在“開始/運行”中運行Msconfig,進入系統配置實用程序對話框以後,單擊選擇“System.ini”標簽,找出提示丟失的DLL文件,使其不被選中,這樣開機時就不會出現錯誤提示了。

copyright © 萬盛學電腦網 all rights reserved