DllCache恢復(fù)原理
由于DllCache目錄中存儲有系統(tǒng)文件的備份,總體積大概在200~400M,這給我們封裝系統(tǒng)后控制系統(tǒng)映像體積方面制造了障礙,那我們能不能刪掉它,并在系統(tǒng)部署時恢復(fù)它?為了解決這個問題,“DllCache恢復(fù)”應(yīng)運(yùn)而生。
1、傳統(tǒng)DllCache恢復(fù)
前文已述,DllCache存儲的是系統(tǒng)文件備份,那么這些系統(tǒng)文件肯定同時也是存在于系統(tǒng)目錄中的,這就給了我們一個思路。我們恢復(fù)DllCache文件,源文件可以去當(dāng)前系統(tǒng)尋找,而我們要去尋找哪些文件呢?這就需要我們在清空DllCache目錄前記錄一下這個目錄里有哪些文件就可以了。我舉例簡單的說明一下:
(1)例如目前DllCache目錄里有:a.sys、b.sys、c.dll三個文件,封裝時清空DllCache目錄前運(yùn)行一個小程序,將這三個文件的名字記錄下來,如記錄在一個文本文件里。這個過程即所謂的“DllCache備份”。
(2)系統(tǒng)部署時的一個時機(jī)(常用系統(tǒng)部署中,注冊組件時),DllCache恢復(fù)程序啟動,讀。1)過程中用于記錄DllCache目錄下文件的文本文件,而后去系統(tǒng)目錄尋找這些文件,再將找到的文件復(fù)制到DllCache目錄。
簡而言之,在傳統(tǒng)DllCache恢復(fù)中,“DllCache備份”就是記錄DllCache目錄下有哪些文件,“DllCache恢復(fù)”就是按照記錄將系統(tǒng)文件從系統(tǒng)目錄復(fù)制到DllCache目錄下。
2、新型DllCache恢復(fù)
這個功能的實(shí)現(xiàn)感謝天空曾經(jīng)的編程大師:七貓(由于工作原因,現(xiàn)已退役)
由于傳統(tǒng)的DllCache恢復(fù)必須執(zhí)行“備份-->恢復(fù)”的過程,比較繁瑣,萬一忘記了執(zhí)行備份過程,那恢復(fù)過程就是徒勞。七貓?zhí)岢隽瞬煌乃悸,如果能夠讀取系統(tǒng)函數(shù),直接詢問SFC它需要將哪些文件備份到DllCache目錄,而后將SFC需要的文件全部復(fù)制到DllCache目錄,這不是更好嗎?這樣就根本不需要“備份”過程,而且我們“恢復(fù)”出來的文件是SFC所需要的所有的文件。由于系統(tǒng)不同,精簡的內(nèi)容不同,甚至安裝的驅(qū)動不同,都會造成SFC所需要備份的文件不完全一致,這種詢問SFC需求并將需求實(shí)現(xiàn)的功能無疑是更加強(qiáng)大且更加完善的!
自由天空DllCacheRecover系列使用的即是七貓的實(shí)時詢問系統(tǒng)需求并復(fù)制文件的原理。無需傳統(tǒng)的DllCache備份過程,DllCacheRecover運(yùn)行時會實(shí)時的詢問SFC,并將需要的文件自動搜索與復(fù)制到DllCache目錄。某些系統(tǒng)可能要恢復(fù)2000~2500個文件,而某些系統(tǒng)只需要恢復(fù)1500~2000個文件,DllCacheRecover都能夠根據(jù)實(shí)際需要進(jìn)行復(fù)制,精確度高,更貼近系統(tǒng)需求,不因額外的文件復(fù)制增加時間的消耗。
SFC與DllCache
(以下內(nèi)容以Windows XP為準(zhǔn))SFC,即“系統(tǒng)文件保護(hù)”功能,是Windows XP的系統(tǒng)自帶功能。正如其名,設(shè)計目的是為了保護(hù)系統(tǒng)重要文件。工作原理大致是這樣的:SFC自動將系統(tǒng)重要文件,如“%SystemDrive%\Windows\System32”下的某些.sys、.dll等文件,自動的復(fù)制到一個位置進(jìn)行備份備份,如果發(fā)現(xiàn)系統(tǒng)重要文件被非法替換,則自動使用備份的文件覆蓋非法替換的文件。SFC備份重要系統(tǒng)文件的位置為“%SystemDrive%\Windows\System32\DllCache”目錄,即我們常說的“DllCache”。簡而言之,SFC就是一個備份系統(tǒng)文件并在發(fā)現(xiàn)系統(tǒng)文件被非法竄改時自動恢復(fù)系統(tǒng)文件的功能,而存儲系統(tǒng)文件備份的目錄被叫做“DllCache”。
SFC的設(shè)計本意是好的,在XP誕生之初的確有效的遏制了某些竄改系統(tǒng)文件的病毒和惡意程序,但時過境遷,XP已經(jīng)老了。SFC最大的失敗就是可以在用戶層就將其關(guān)閉。大家可能記得ES2就具備這樣的功能,能夠徹底的或暫時的關(guān)閉SFC功能。大家可以想一想,如果連一個封裝工具都可以輕易的關(guān)掉SFC,那黑客們不會嗎?病毒和木馬的制造者們不會嗎?就像一個加了鎖的門,加鎖是為了防盜,但這把鎖的功能低到隨便找個鐵絲就能打開,那這把鎖還有用嗎?這扇門后的東西還安全嗎?這也就是為什么很多人不使用SFC功能的一個重要原因。
當(dāng)然,還有很多朋友趨向于使用SFC的,盡管它的功能薄弱,但很多朋友仍舊認(rèn)為有總比沒有的好。SFC是否開啟其實(shí)是一個個人喜好問題,大家不要爭執(zhí)開啟與關(guān)閉SFC哪個更好,只能說各有各的好處,且理由都不足以壓倒對方。
其他知識:
1、怎么關(guān)閉SFC?
建議使用NLITE,在系統(tǒng)安裝前就屏蔽掉XP的SFC功能。曾經(jīng)流傳的通過修改注冊表的方法就可以關(guān)閉SFC是一個謬誤。如果要關(guān)掉安裝好的XP的SFC功能,需要修改注冊表,破解1個文件,并將這個文件復(fù)制到DllCache目錄下覆蓋同名文件,具體方法這里不介紹,請大家善用百度和谷歌。
2、DllCache只是一個目錄?
很多年的偏頗傳承,很多人只知道DllCache而不知道SFC。其實(shí)DllCache只是SFC用于存放系統(tǒng)文件備份的文件夾而已,不要把它理解的過于神秘。
3、SFC可操作的功能?
打開cmd,輸入“sfc /?”你將獲得更多知識。
4、關(guān)閉了SFC后DllCache目錄還有用嗎?
無用,DllCache目錄是為SFC而生的,沒有了SFC功能,DllCache目錄就成了垃圾
“DllCache恢復(fù)”是個經(jīng)久不衰的話題,自由天空曾經(jīng)發(fā)布過DllCacheRecover1.x系列,后來因倡導(dǎo)關(guān)閉SFC而停止了對此工具的修正與開發(fā)工作。如今仍發(fā)現(xiàn)有很多朋友堅持開啟SFC功能,且鑒于大多數(shù)DllCache工具已經(jīng)不再更新,為了讓這部分朋友仍然可以享受高效準(zhǔn)確的DllCache恢復(fù)功能,我決定重新開啟DllCacheRecover系列的研發(fā)工作,定名為“DllCacheRecover2.x”系列。在使用此工具前,強(qiáng)烈建議您閱讀一下有關(guān)SFC、DllCache以及DllCache恢復(fù)的相關(guān)知識內(nèi)容。駕馭某個工具,必須掌握它的基本原理。
DllCacheRecover
1、DllCacheRecover使用了實(shí)時詢問系統(tǒng)要求并執(zhí)行DllCache恢復(fù)的方式,無需繁瑣的DllCache備份過程,直接根據(jù)系統(tǒng)需要進(jìn)行DllCache恢復(fù)。(原理樓上已述)
2、DllCacheRecover與系統(tǒng)部署過程兼容性高,理論上可于系統(tǒng)部署時任何時機(jī)調(diào)用,但強(qiáng)烈建議于“系統(tǒng)部署中”(即“注冊組件時”)時機(jī)調(diào)用。
3、DllCacheRecover與注冊組件過程融合度高,渾然一體。