欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種文件重定向方法、裝置和計(jì)算機(jī)系統(tǒng)的制作方法

文檔序號(hào):6381413閱讀:163來源:國(guó)知局
專利名稱:一種文件重定向方法、裝置和計(jì)算機(jī)系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及信息安全技術(shù),具體涉及ー種文件重定向方法、裝置及計(jì)算機(jī)系統(tǒng)。
背景技術(shù)
LSP (Layered Service Provider,網(wǎng)絡(luò)套接字工具)是Windows平臺(tái)的通信架構(gòu)WinSock (Windows Sockets,分層服務(wù)提供商)中特有的ー個(gè)機(jī)制,通過可擴(kuò)展的LSP機(jī)制,使得第三方軟件開發(fā)商可以在應(yīng)用程序中插入DLL (Dynamic Link Library,動(dòng)態(tài)鏈接庫(kù))對(duì)TCP/IP數(shù)據(jù)包進(jìn)行監(jiān)聽、修改,從而開發(fā)出豐富的網(wǎng)絡(luò)應(yīng)用,如聊天軟件通信加密工具、網(wǎng)絡(luò)代理軟件、網(wǎng)游加速器等。LSP既可以用來開發(fā)正規(guī)的應(yīng)用,病毒或者木馬作者也可以利用LSP在用戶的操作系統(tǒng)中插入惡意代碼,竊取用戶信息等。另外,由于LSP注入到系統(tǒng)的絕大多數(shù)進(jìn)程中,串接在應(yīng)用程序的網(wǎng)絡(luò)訪問操作中,如果代碼考慮不周,就會(huì)導(dǎo)致應(yīng)用程序所在的計(jì)算機(jī)系統(tǒng)不能上網(wǎng)、程序崩潰或卡死等現(xiàn)象。然而,目前還沒有一種有效的措施來及時(shí)發(fā)現(xiàn)并屏蔽ー些有問題的LSTOLL文件。

發(fā)明內(nèi)容
鑒于上述問題,提出了本發(fā)明實(shí)施例以便提供ー種克服上述問題或者至少部分地解決上述問題的文件重定向方法和裝置。依據(jù)本發(fā)明實(shí)施例的ー個(gè)方面,提供了 一種文件重定向方法,包括加載應(yīng)用程序的配置信息;根據(jù)所加載的配置信息判斷加載有問題的LSP DLL文件;將加載有問題的LSPDLL文件的操作替換為加載直通型LSP DLL文件??蛇x地,特定LSP DLL文件為需要被屏蔽的LSP DLL文件,所述預(yù)定義的LSP DLL文件是直通型DLL文件,直通型DLL文件為通過特定磁盤文件路徑加載的DLL文件,以便于在LSP鏈上層和下層之間透?jìng)鲾?shù)據(jù)包??蛇x地,所述配置列表包括需要屏蔽的LSP DLL文件,以及要屏蔽這些LSP DLL文件的進(jìn)程??蛇x地,根據(jù)所述配置列表中的LSP DLL文件的特征信息來判斷LSP配置列表數(shù)據(jù)中是否包括需要被屏蔽的LSP DLL文件??蛇x地,所述特征信息為DLL文件的文件名、DLL文件的公司名、原始文件名或者產(chǎn)品名稱,所述特征信息從DLL的版本信息中獲得。可選地,替換操作進(jìn)ー步包括應(yīng)用程序?qū)PI函數(shù)進(jìn)行掛鉤處理,指向自定義的函數(shù),其中該API函數(shù)是用于加載DLL文件的系統(tǒng)功能函數(shù);當(dāng)應(yīng)用程序初始化WinSock吋,調(diào)用該API函數(shù)以加載對(duì)應(yīng)的LSP DLL文件,并將該LSP DLL文件的文件路徑傳遞給該自定義的函數(shù);在該自定義的函數(shù)中,應(yīng)用程序根據(jù)配置信息判斷該傳遞來的LSP DLL文件是否為需要被屏蔽的LSP DLL文件,如果是則將加載該LSP DLL文件的操作替換為加載直通型LSP DLL文件操作。如果傳遞來的LSP DLL文件為需要被屏蔽的LSP DLL文件,則替換LSP DLL文件的文件路徑為直通型LSP DLL的文件路徑,并傳遞給掛鉤處理之前的API函數(shù),執(zhí)行調(diào)用直通型LSP DLL的文件路徑??蛇x地,所述替換操作進(jìn)ー步包括在驅(qū)動(dòng)層掛鉤文件操作的系統(tǒng)調(diào)用文件打開函數(shù),將其替換為自定義的函數(shù);當(dāng)應(yīng)用程序初始化WinSock吋,逐個(gè)加載LSP鏈上的LSPDLL文件,打開對(duì)應(yīng)的LSP DLL文件,預(yù)先調(diào)用自定義函數(shù),在自定義函數(shù)中判斷要打開的LSP DLL文件是否為待屏蔽LSTOLL文件,如果是,則將該LSP DLL文件的文件路徑修替換為直通型LSP DLL文件的文件路徑,并將此修改后的文件路徑傳遞給鉤掛前的文件打開函數(shù),使系統(tǒng)加載直通型DLL文件??蛇x地,所述替換操作進(jìn)ー步包括創(chuàng)建文件系統(tǒng)過濾驅(qū)動(dòng)程序,用于對(duì)LSP DLL文件的打開操作進(jìn)行過濾;應(yīng)用程序初始化WinSock時(shí),逐個(gè)加載LSP鏈上的LSP DLL文件,打開對(duì)應(yīng)的LSP DLL文件,文件系統(tǒng)過濾驅(qū)動(dòng)程序?qū)ε袛嘣摯蜷_的LSP DLL文件是否為配置列表中需要被屏蔽的LSP DLL文件,是則修改該LSP DLL文件的文件路徑為直通型LSP DLL的文件路徑,將加載該需要被屏蔽的LSP DLL文件替換為加載直通型DLL文件??蛇x地,在替換操作步驟中,當(dāng)攔截到加載需要被屏蔽的LSP DLL文件的的文件操作吋,讀取Windows的LSP注冊(cè)表配置,找到該DLL文件對(duì)應(yīng)的LSP編號(hào),加載直通型DLL文件,并將LSP編號(hào)傳遞給該直通型DLL文件??蛇x地,當(dāng)加載直通型DLL文件后,獲取傳遞的LSP編號(hào),讀取操作系統(tǒng)的LSP注冊(cè)表配置,從而在配置中找到該直通型DLL文件本次在LSP鏈中的位置,并加載下層LSPDLL文件。依據(jù)本發(fā)明實(shí)施例的另一方面,提出一種文件重定向裝置,包括配置文件加載裝置,用于加載應(yīng)用程序的配置列表;加載轉(zhuǎn)換裝置,根據(jù)所加載的配置列表中的配置信息判斷需要加載的LSP DLL文件是否為特定LSP DLL文件,并將加載該特定LSP DLL文件的操作替換為加載預(yù)定義的LSP DLL文件。依據(jù)本發(fā)明實(shí)施例的再一方面,提出一種計(jì)算機(jī)系統(tǒng),包括配置文件加載裝置,用于加載應(yīng)用程序的配置列表;加載替換裝置,根據(jù)所加載的配置列表中的配置信息判斷需要加載的LSP DLL文件是否為特定LSP DLL文件,并將加載該特定LSP DLL文件的操作替換為加載預(yù)定義的LSP DLL文件。本發(fā)明實(shí)施例通過文件重定向技術(shù),使得應(yīng)用程序不會(huì)加載有問題的LSTOLL文件,而是加載直通型LSP DLL文件,并保證正常的網(wǎng)絡(luò)通信。本發(fā)明實(shí)施例不需要攜帶微軟默認(rèn)的任何LSP配置,既可以針對(duì)系統(tǒng)中的單個(gè)LSP DLL文件進(jìn)行屏蔽,也可以將全部LSP DLL文件都屏蔽,既可以針對(duì)單個(gè)進(jìn)程所對(duì)應(yīng)的文件進(jìn)行LSP DLL文件屏蔽,也可以針對(duì)多個(gè)進(jìn)程所對(duì)應(yīng)的文件進(jìn)行LSP DLL文件屏蔽。上述說明僅是本發(fā)明實(shí)施例技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明實(shí)施例的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明實(shí)施例的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明實(shí)施例的具體實(shí)施方式



通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明實(shí)施例的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中圖1為WinSock框架示意圖;圖2為本發(fā)明實(shí)施例的文件重定向方法流程圖;圖3為本發(fā)明實(shí)施例的文件重定向裝置的流程圖。圖4示出了本發(fā)明實(shí)施例通過文件重定向屏蔽特定LSP DLL文件的方法的一具體應(yīng)用場(chǎng)景實(shí)現(xiàn)流程圖。
具體實(shí)施例方式下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開 的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。圖1 為 WinSock 框架不意圖。WinSock 中包含 transport provider DLL 和namespace provider DLL兩種可擴(kuò)展的DLL, transport provider用于網(wǎng)絡(luò)數(shù)據(jù)收發(fā),是分層的,理論上支持無限多層,所有的各層上下串在一起形成ー個(gè)鏈;namespace provider用于網(wǎng)絡(luò)名稱解析,不分層。一般所說的LSP是指transport provider。本發(fā)明實(shí)施例既
transport provider,也支namespace provider 參照?qǐng)D1, transport provider有兩個(gè)鏈TCP鏈、UDP鏈。還可以有其它類型的LSP 鏈。TCP鏈中從上到下共4層(其中底層的mswsock. dll是操作系統(tǒng)本身所具有的功能)。UDP鏈包括3層。右邊的3個(gè)是namespace provider,其中最右邊的winrnr. dll是操作系統(tǒng)提供的。雖然現(xiàn)有技術(shù)中也有ー些能夠屏蔽(或者跳過)LSP DLL的機(jī)制,例如,Windows系統(tǒng)提供的策略,指定哪些進(jìn)程加載或者不加載特定類型的LSPDLL,這種技術(shù)存在的缺點(diǎn)是只有Vista及其以上的Windows平臺(tái)才支持這個(gè)特性;只能根據(jù)LSP所屬的分類來排除,策略太粗放。另外ー種機(jī)制是徹底拋棄WinSock,越過應(yīng)用層的WinSock架構(gòu),直接向網(wǎng)絡(luò)驅(qū)動(dòng)發(fā)控制碼、數(shù)據(jù)包進(jìn)行網(wǎng)絡(luò)通信。這種方法的缺點(diǎn)是需要了解和驅(qū)動(dòng)層通信的任何細(xì)節(jié),這細(xì)節(jié)一般是非文檔化的;在有代理服務(wù)器的環(huán)境下,需要自行實(shí)現(xiàn)代理服務(wù)器協(xié)議才能正常訪問網(wǎng)絡(luò);這種方法不會(huì)加載第三方的任何LSP DLL文件,在必須要加載某些代理服務(wù)器類型的LSP DLL文件才能正常訪問網(wǎng)絡(luò)的環(huán)境中,無法正常訪問網(wǎng)絡(luò)。本發(fā)明實(shí)施例是利用文件重定向機(jī)制,針對(duì)Windows系統(tǒng)中的特定或全部進(jìn)程屏蔽特定或者全部的LSP DLL文件,避免有問題的LSP DLL文件加載到進(jìn)程中,提高應(yīng)用程序的穩(wěn)定性和安全性。本發(fā)明實(shí)施例的原理主要是通過攜帯高穩(wěn)定性、高兼容性的直通型的LSTOLL文件,利用該直通型的LSP DLL文件替換有問題的LSP DLL文件,從而將該直通型的DLL文件加載到應(yīng)用程序的進(jìn)程中。直通型LSP DLL文件用于網(wǎng)絡(luò)數(shù)據(jù)的收發(fā),就是發(fā)送數(shù)據(jù)包時(shí)直接轉(zhuǎn)發(fā)給下層,接收數(shù)據(jù)包時(shí)直接轉(zhuǎn)發(fā)給上層,不修改數(shù)據(jù)包的任何內(nèi)容。對(duì)于數(shù)據(jù)收發(fā)來說,直通型LSP DLL文件就是發(fā)送數(shù)據(jù)包時(shí)直接轉(zhuǎn)發(fā)給下層,接收數(shù)據(jù)包時(shí)直接轉(zhuǎn)發(fā)給上層,不修改數(shù)據(jù)包的任何內(nèi)容;對(duì)于名字解析來說,不做任何解析。直通型DLL文件可以通過特定磁盤文件路徑加載的DLL文件,以便于在LSP鏈上層和下層之間透?jìng)鲾?shù)據(jù)包。LSP屬于應(yīng)用層,所有LSP DLL文件都運(yùn)行在環(huán)3特權(quán)級(jí)別下,但LSP的行為可以從環(huán)3或者環(huán)0來進(jìn)行一定的控制,比如對(duì)其文件或注冊(cè)表操作進(jìn)行控制。環(huán)3 (ring 3)、環(huán)0 (ring 0)是Intel處理器架構(gòu)的專用術(shù)語(yǔ),環(huán)3是低特權(quán)級(jí)別,一般是由應(yīng)用程序使用;環(huán)0是最高特權(quán)級(jí)別,由操作系統(tǒng)內(nèi)核使用。由于LSP文件是分層結(jié)構(gòu),發(fā)送網(wǎng)絡(luò)數(shù)據(jù)吋,網(wǎng)絡(luò)數(shù)據(jù)從最上層依次傳遞至最下層;接收網(wǎng)絡(luò)數(shù)據(jù)時(shí),網(wǎng)絡(luò)數(shù)據(jù)從最下層依次傳遞至最上層。每層對(duì)應(yīng)ー個(gè)DLL文件,從上至下串接成一個(gè)鏈。鏈?zhǔn)前淳W(wǎng)絡(luò)協(xié)議類型來劃分的,比如TCP鏈、UDP鏈等。普通LSP DLL文件在收到應(yīng)用程序或者上層LSP下達(dá)的網(wǎng)絡(luò)數(shù)據(jù)發(fā)送請(qǐng)求后,會(huì)將相應(yīng)的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行修改(比如加密類型的LSP會(huì)將網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行加密,代理服務(wù)器轉(zhuǎn)發(fā)類型的LSP會(huì)修改數(shù)據(jù)包的目的地址甚至重新進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)包封裝,防火墻類型的LSP會(huì)根據(jù)防火墻策略丟棄數(shù)據(jù)和阻止某些網(wǎng)絡(luò)數(shù)據(jù)),然后將修改后的網(wǎng)絡(luò)數(shù)據(jù)傳遞給下層LSP進(jìn)行發(fā)送;普通LSTOLL在接收到下層LSP收到的網(wǎng)絡(luò)數(shù)據(jù)后,會(huì)進(jìn)行修改(比如解密等操作),然后將修改后的網(wǎng)絡(luò)數(shù)據(jù)返回給上層LSP或應(yīng)用程序。圖2為本發(fā)明實(shí)施例的文件重定向方法流程圖。以transport provider為例參照?qǐng)D2,該方法包括以下步驟步驟S200,加載應(yīng)用程序的配置列表。配置列表中的配置信息包括應(yīng)用程序的基本信息,例如應(yīng)用程序的安裝目錄、當(dāng)前版本等。在本發(fā)明實(shí)施例中,配置信息另外還包括需要屏蔽哪些LSP DLL文件、需要在哪些進(jìn)程中屏蔽這些LSP DLL文件。通常需要屏蔽的LSP DLL文件包括木馬或者病毒等惡意程序的LSTOLL文件、網(wǎng)絡(luò)加速器的LSP DLL文件(這些網(wǎng)絡(luò)加速器主要是對(duì)網(wǎng)游、WEB瀏覽等應(yīng)用進(jìn)行加速的)等。木馬或者病毒等惡意程序的LSP DLL文件在WinSock初始化時(shí)加載到安全應(yīng)用軟件的進(jìn)程中后,會(huì)對(duì)其安全功能造成干擾和破壞,比如阻斷安全軟件和其云安全中心建立網(wǎng)絡(luò)連接、直接終止安全軟件的進(jìn)程等;網(wǎng)絡(luò)加速器的LSP DLL文件則可能導(dǎo)致安全軟件崩潰、卡死、無法進(jìn)行網(wǎng)絡(luò)訪問等,比如“99宿舎加速器”的LSP DLL文件曾經(jīng)導(dǎo)致很多用戶無法正常上網(wǎng)。步驟S210,根據(jù)所加載的配置列表中的配置信息判斷需要加載的LSTOLL文件是否為特定LSP DLL文件。上述特定LSP DLL文件為需要被屏蔽的LSP DLL文件,預(yù)定義的LSTOLL文件是直通型DLL文件,直通型DLL文件為通過特定磁盤文件路徑加載的DLL文件,用于在LSP鏈上層和下層之間透?jìng)鲾?shù)據(jù)包。根據(jù)配置列表中的LSP DLL文件的特征信息來判斷LSP配置列表數(shù)據(jù)中是否包括需要被屏蔽的LSP DLL文件。特征信息為DLL文件的文件名、DLL文件的公司名、原始文件名或者產(chǎn)品名稱,所述特征信息從DLL文件的版本信息中獲得。步驟S220,將加載該特定LSP DLL文件的操作替換為加載預(yù)定義的LSTOLL文件的操作。操作系統(tǒng)中用于加載DLL文件的系統(tǒng)功能函數(shù)在加載LSI3DLL文件時(shí)如遇到有問題的LSP DLL文件,則將加載該有問題的LSP DLL文件的操作替換為加載直通型LSP DLL文件的操作。當(dāng)本發(fā)明實(shí)施例攔截到加載需要被屏蔽的LSP DLL文件的文件操作時(shí),所述的操作系統(tǒng)中用于加載DLL文件的系統(tǒng)功能函數(shù)讀取Windows的LSP注冊(cè)表配置,找到該DLL文件對(duì)應(yīng)的LSP編號(hào),加載直通型DLL文件,并將LSP編號(hào)傳遞給該直通型DLL文件。WinSock初始化時(shí)會(huì)讀取系統(tǒng)注冊(cè)表中配置的LSP DLL鏈,如果操作系統(tǒng)中用于加載DLL文件的系統(tǒng)功能函數(shù)加載鏈中的某個(gè)LSP DLL文件失敗,則WinSock初始化就失敗了,就會(huì)導(dǎo)致對(duì)應(yīng)的應(yīng)用程序或者其所在的計(jì)算機(jī)系統(tǒng)無法正常訪問網(wǎng)絡(luò)。所以本發(fā)明實(shí)施例采用了一個(gè)穩(wěn)定、簡(jiǎn)單的直通型LSP DLL文件來替代存在問題的LSP DLL文件,使得WinSock可以初始化成功,同時(shí)又可以避免加載有問題的LSP DLL文件到應(yīng)用程序的進(jìn)程中。根據(jù)本發(fā)明該方法的一個(gè)實(shí)施例,步驟S220進(jìn)ー步包括應(yīng)用程序利用內(nèi)嵌掛鉤等方式對(duì)API函數(shù)進(jìn)行掛鉤處理,指向自定義的函數(shù),其中該API函數(shù)是用于加載DLL文件的系統(tǒng)功能函數(shù);當(dāng)應(yīng)用程序初始化WinSock時(shí),調(diào)用該API函數(shù)以加載對(duì)應(yīng)的LSP DLL文件,并將該LSP DLL的文件路徑傳遞給該自定義的函數(shù);在該自定義的函數(shù)中,應(yīng)用程序根據(jù)配置信息判斷該傳遞來的LSP DLL文件是否為需要被屏蔽的LSP DLL,如果是則將加載該LSP DLL文件的操作替換為加載直通型LSP DLL文件。如果傳遞來的LSTOLL文件為需要被屏蔽的LSP DLL文件,則替換LSP DLL文件的文件路徑為直通型LSP DLL文件的文件路徑,并傳遞給掛鉤處理之前的API函數(shù),執(zhí)行調(diào)用直通型LSP DLL文件的文件路徑。該實(shí)施例的一具體舉例為在應(yīng)用層(ring 3)對(duì)指定或者全部進(jìn)程進(jìn)行文件操作API函數(shù)(LoadLibrary/CreateFile等)的掛鉤處理,具體包括a、應(yīng)用程序首先使用inline hook(內(nèi)嵌掛鉤)等方式對(duì)LoadLibraryExWO這個(gè)API函數(shù)進(jìn)行掛鉤處理,指向應(yīng)用程序自定義的函數(shù)My_LoadLibraryExW (),LoadLibraryExff ()是Windows系統(tǒng)用來加載DLL文件的系統(tǒng)功能函數(shù)。b、當(dāng)應(yīng)用程序初始化WinSock時(shí),會(huì)調(diào)用LoadLibraryExWOAPI函數(shù)加載對(duì)應(yīng)的LSP DLL文件,并將LSP DLL文件的文件路徑傳遞給該函數(shù)。C、由于應(yīng)用程序?qū)oadLibraryExWO進(jìn)行了掛鉤處理,于是自定義的函數(shù)My_LoadLibraryExffO被該應(yīng)用程序調(diào)用。在該自定義的函數(shù)中,應(yīng)用程序根據(jù)配置信息檢查傳遞進(jìn)來的LSP DLL的特征信息例如,文件名等,如果和配置信息中要屏蔽的LSP DLL文件的特征符合(特征比如是文件名字符串特征(也可以是產(chǎn)品名稱字符串/公司名字符串等特征),如果LSP DLL的文件名符合指定的字符串特征,就認(rèn)為相匹配,也就是特征符合,文件名字符串特征是人工配置的。),則根據(jù)所述的文件名獲知文件路徑,替換LSP DLL文件的文件路徑為直通型LSP DLL文件的文件路徑如c Aprogram f iles\360\lsp. dll,并傳遞給掛鉤處理之前的LoadLibraryExWO,即執(zhí)行調(diào)用LoadLibraryExW( " c Aprogramfiles\360\lsp. dll"),同吋,查詢Windows系統(tǒng)的LSP注冊(cè)表配置,從中獲取到該需要替換的LSP DLL文件的編號(hào),將該編號(hào)通過進(jìn)程環(huán)境變量等方式傳遞給即將加載的直通型LSPDLL文件。d、如果LSP DLL文件的特征和配置信息中的特征不符合,就不替換LSTOLL文件的文件路徑。根據(jù)本發(fā)明該方法的另ー實(shí)施例,步驟S220進(jìn)ー步包括在驅(qū)動(dòng)層掛鉤文件操作的系統(tǒng)調(diào)用文件打開函數(shù),將其替換為自定義的函數(shù);當(dāng)應(yīng)用程序初始化WinSock時(shí),逐個(gè)加載LSP鏈上的LSP DLL文件,打開對(duì)應(yīng)的LSP DLL文件文件,預(yù)先調(diào)用自定義函數(shù),在自定義函數(shù)中判斷要打開的LSP DLL文件是否為待屏蔽LSPDLL文件,如果是,則將該LSP DLL文件的文件路徑修替換為直通型LSP DLL文件的文件路徑,并將此修改后的路徑傳遞給掛鉤前的文件打開函數(shù),使系統(tǒng)加載直通型DLL。本實(shí)施例中,以在驅(qū)動(dòng)層掛鉤文件操作的系統(tǒng)調(diào)用ZwOpenFile (僅以ZwOpenFile為例,如果掛鉤ZwCreateFile、ZwMapViewOfSection,流程是類似的),將其替換為自行實(shí)現(xiàn)的函數(shù)My_ZwOpenFile ()。ZwOpenFile是ー個(gè)內(nèi)核函數(shù),執(zhí)行寫驅(qū)動(dòng)操作時(shí)使用,用于打開ー個(gè)現(xiàn)有的文件、目錄、設(shè)備、或卷。當(dāng)應(yīng)用程序初始化WinSock時(shí),會(huì)調(diào)用動(dòng)態(tài)鏈接庫(kù)LoadLibrary ()逐個(gè)加載LSP鏈上的LSP DLL文件。LoadLibraryO會(huì)觸發(fā)系統(tǒng)調(diào)用ZwOpenFile來打開對(duì)應(yīng)的LSP DLL文件。由于ZwOpenFile已被掛鉤,所以My_ZwOpenFile ()先被調(diào)用。在My_ZwOpenFile ()中,對(duì)要打開的LSP DLL文件進(jìn)行特征判斷(比如檢測(cè)文件名字符串是否符合人工配置的正則表達(dá)式特征),如果和預(yù)先配置好的特征相匹配,則通過LSP DLL文件名獲知文件路徑,修為直通型LSP DLL文件的文件路徑,并將此修改后的文件路徑傳遞給鉤掛前的ZwOpenFile (),從而讓系統(tǒng)加載直通型DLL文件。如果要打開的LSP DLL文件不符合預(yù)先配置的特征,則不修改LSP DLL文件的文件名,直接傳遞給鉤掛前的ZwOpenFile,以完成該LSP DLL文件的加載。根據(jù)本發(fā)明該方法的又ー實(shí)施例,步驟S220進(jìn)ー步包括創(chuàng)建文件系統(tǒng)過濾驅(qū)動(dòng)程序,用于對(duì)LSP DLL文件的打開操作進(jìn)行過濾;應(yīng)用程序初始化WinSock時(shí),逐個(gè)加載LSP鏈上的LSP DLL文件,打開對(duì)應(yīng)的LSP DLL文件,文件系統(tǒng)過濾驅(qū)動(dòng)程序判斷該打開的LSPDLL文件是否為配置列表中需要被屏蔽的LSP DLL文件,是則修改該LSP DLL文件的文件路徑為直通型LSP DLL的文件路徑,將加載該需要被屏蔽的LSP DLL文件替換為加載直通型DLL文件。本發(fā)明實(shí)施例可以使用文件系統(tǒng)過濾驅(qū)動(dòng)進(jìn)行DLL文件重定向。其中,Windows的文件系統(tǒng)過濾驅(qū)動(dòng)程序也是分層結(jié)構(gòu),首先,編寫ー個(gè)文件系統(tǒng)過濾驅(qū)動(dòng)(file systemfilter driver)程序,對(duì)NTFS、FAT等文件系統(tǒng)的操作進(jìn)行監(jiān)控。任何文件操作都會(huì)經(jīng)由此文件系統(tǒng)過濾驅(qū)動(dòng)程序,包括LSP DLL文件的打開操作等。當(dāng)應(yīng)用程序初始化WinSock時(shí),會(huì)調(diào)用LoadLibraryO逐個(gè)加載LSP鏈上的LSPDLL文件。LoadLibraryO會(huì)觸發(fā)系統(tǒng)調(diào)用ZwOpenFile來打開對(duì)應(yīng)的LSP DLL文件,這個(gè)打開文件的系統(tǒng)調(diào)用會(huì)替換為對(duì)文件系統(tǒng)的操作,操作類型為IRP_MJ_CREATE,操作參數(shù)包含LSP DLL文件的文件名。對(duì)文件系統(tǒng)的所有操作會(huì)到達(dá)文件系統(tǒng)過濾驅(qū)動(dòng)程序。在該過濾驅(qū)動(dòng)程序的IRP_MJ_CREATE消息的處理函數(shù)中,對(duì)要打開的LSP DLL文件進(jìn)行特征判斷(比如檢測(cè)文件名字符串是否符合人工配置的正則表達(dá)式特征),如果和預(yù)先配置好的特征相匹配,則修改LSPDLL文件的文件名為直通。當(dāng)應(yīng)用程序初始化WinSock時(shí),會(huì)調(diào)用LoadLibraryO逐個(gè)加載LSP鏈上的LSPDLL文件。LoadLibraryO會(huì)觸發(fā)系統(tǒng)調(diào)用ZwOpenFile來打開對(duì)應(yīng)的LSP DLL文件,這個(gè)打開文件的系統(tǒng)調(diào)用會(huì)替換為對(duì)文件系統(tǒng)的操作,操作類型為IRP_MJ_CREATE,操作參數(shù)包含LSP DLL文件的的文件名。對(duì)文件系統(tǒng)的所有操作會(huì)到達(dá)文件系統(tǒng)過濾驅(qū)動(dòng)程序。在該過濾驅(qū)動(dòng)程序的IRP_MJ_CREATE消息的處理函數(shù)中,對(duì)要打開的LSP DLL文件進(jìn)行特征判斷(比如檢測(cè)文件名字符串是否符合人工配置的正則表達(dá)式特征),如果和預(yù)先配置好的特征相匹配,則修改LSPDLL文件的文件名為直通型LSI3DLL的路徑,并將此修改后的路徑傳遞給文件系統(tǒng)驅(qū)動(dòng)程序或者下層的文件系統(tǒng)過濾驅(qū)動(dòng)程序,從而替換為加載直通型DLL。如果要打開的LSP DLL不符合預(yù)先配置的特征,則不修改LSP DLL文件名,直接傳遞給文件系統(tǒng)驅(qū)動(dòng)程序或者下層的文件系統(tǒng)過濾驅(qū)動(dòng)程序,以完成該LSP DLL的加載。在步驟220,當(dāng)攔截到加載有問題的LSP DLL的文件操作吋,讀取Windows的LSP注冊(cè)表配置,找到該DLL文件對(duì)應(yīng)的唯一 LSP編號(hào)(編號(hào)一般是個(gè)整數(shù)或者ー個(gè)⑶ID串如{5B2272D4-EAC0-4FFB-A2EB-B9EAA78DAEEF})。不加載有問題的LSTOLL文件,而是替換為加載直通型DLL文件,并將LSP編號(hào)傳遞給該直通型DLL文件。在步驟230,當(dāng)加載直通型DLL文件后,獲取傳遞的LSP編號(hào),讀取操作系統(tǒng)的LSP注冊(cè)表配置,從而在配置中找到該直通型DLL文件本次在LSP鏈中的位置,并加載下層LSPDLL文件。通過上述步驟可以完成進(jìn)程中整個(gè)WinSock的初始化,并且不會(huì)加載有問題的LSP DLL 文件。LSP鏈中的各個(gè)LSP DLL文件的加載是WinSock初始化中很重要的ー個(gè)環(huán)節(jié)。基于WinSock實(shí)現(xiàn)的所有網(wǎng)絡(luò)通信應(yīng)用程序都要初始化WinSock才能進(jìn)行后續(xù)的網(wǎng)絡(luò)數(shù)據(jù)收發(fā)等操作。如果初始化WinSock失敗,就無法進(jìn)行網(wǎng)絡(luò)通信。所以本發(fā)明實(shí)施例,可以完成進(jìn)程中整個(gè)WinSock的初始化,并且不會(huì)加載有問題的LSP DLL文件,可以保證網(wǎng)絡(luò)通信功能正常,從而使得應(yīng)用程序可以正常的進(jìn)行網(wǎng)絡(luò)訪問。圖3為本發(fā)明一實(shí)施例的的文件重定向裝置結(jié)構(gòu)框圖。本發(fā)明實(shí)施例以DLL為例來說明,因?yàn)閷?shí)際環(huán)境中遇到的導(dǎo)致應(yīng)用程序故障的主要都是DLL。參照?qǐng)D3,本發(fā)明實(shí)施例的文件重定向裝置包括配置列表加載裝置300,用于加載應(yīng)用程序的配置列表。配置列表中包括需要屏蔽哪些LSP DLL文件以及需要在哪些進(jìn)程中屏蔽這些LSPDLL文件。加載替換裝置310,用于將程序加載有問題的LSP DLL文件的操作替換為加載直通型LSP DLL文件的操作。加載轉(zhuǎn)換裝置310,用于根據(jù)所加載的配置列表中的配置信息判斷需要加載的LSPDLL文件是否為特定LSP DLL文件,并將加載該特定LSP DLL文件的操作替換為加載預(yù)定義的LSP DLL文件。即加載轉(zhuǎn)換裝置310用于實(shí)現(xiàn)文件重定向,也就是將程序加載有問題的LSP DLL文件的操作替換為加載直通型LSP DLL文件的操作。上述特定LSP DLL文件是指需要被屏蔽的LSP DLL文件,預(yù)定義的LSTOLL文件是直通型DLL文件,直通型DLL文件為通過特定磁盤文件路徑加載的DLL文件,以便于通過所述直通型DLL文件為在LSP鏈上層和下層之間透?jìng)鲾?shù)據(jù)包。加載轉(zhuǎn)換裝置310根據(jù)所述配置列表中的LSP DLL文件的特征信息來判斷LSP配置列表數(shù)據(jù)中是否包括需要被屏蔽的LSP DLL文件。特征信息為DLL文件的文件名、DLL文件的公司名、原始文件名或者產(chǎn)品名稱,所述特征信息可以從DLL的版本信息中獲得。加載轉(zhuǎn)換裝置310進(jìn)ー步包括程序創(chuàng)建單元311、掛鉤處理單元312以及加載執(zhí)行單元313。在其中一實(shí)施例中,掛鉤處理單元312用于通過應(yīng)用程序?qū)PI函數(shù)進(jìn)行掛鉤處理,指向自定義的函數(shù),其中該API函數(shù)是用于加載DLL文件的系統(tǒng)功能函數(shù)。加載執(zhí)行單元313,用于當(dāng)應(yīng)用程序初始化WinSock時(shí),調(diào)用該API函數(shù)以加載對(duì)應(yīng)的LSP DLL文件,并將該LSP DLL文件的文件路徑傳遞給該自定義的函數(shù),在該自定義的函數(shù)中,利用應(yīng)用程序根據(jù)配置信息判斷該傳遞來的LSP DLL文件是否為需要被屏蔽的LSPDLL文件,如果是則將加載該LSP DLL文件的操作替換為加載直通型LSP DLL文件。加載執(zhí)行單元313,判斷如果傳遞來的LSP DLL文件為需要被屏蔽的LSTOLL文件,則替換LSP DLL文件的文件路徑為直通型LSP DLL文件的文件路徑,并傳遞給掛鉤處理之前的API函數(shù),執(zhí)行調(diào)用直通型LSP DLL文件的文件路徑。在另ー實(shí)施例中,掛鉤處理單元312,用于在驅(qū)動(dòng)層掛鉤文件操作的系統(tǒng)調(diào)用文件打開函數(shù),將其替換為自定義的函數(shù);加載執(zhí)行單元313,用于當(dāng)應(yīng)用程序初始化WinSock吋,逐個(gè)加載LSP鏈上的LSPDLL文件,打開對(duì)應(yīng)的LSP DLL文件,預(yù)先調(diào)用自定義函數(shù),在自定義函數(shù)中判斷要打開的LSP DLL文件是否為待屏蔽LSP DLL文件,如果是,則將該LSP DLL文件的文件路徑替換為直通型LSP DLL文件的文件路徑,并將此修改后的路徑傳遞給鉤掛前的文件打開函數(shù),使系統(tǒng)加載直通型DLL文件。在再一實(shí)施例中,程序創(chuàng)建單元311用于創(chuàng)建文件系統(tǒng)過濾驅(qū)動(dòng)程序,用于對(duì)LSPDLL文件的打開操作進(jìn)行過濾;加載執(zhí)行單元313,用于在應(yīng)用程序初始化WinSock時(shí),逐個(gè)加載LSP鏈上的LSPDLL文件,打開對(duì)應(yīng)的LSP DLL文件,文件系統(tǒng)過濾驅(qū)動(dòng)程序?qū)ε袛嘣摯蜷_的LSP DLL文件是否為配置列表中需要被屏蔽的LSP DLL文件,是則修改該LSP DLL文件名或文件路徑為直通型LSP DLL的文件名或文件路徑,將加載該需要被屏蔽的LSP DLL文件替換為加載直通型DLL文件。加載轉(zhuǎn)換裝置在當(dāng)攔截到加載有問題的LSP DLL文件的文件操作時(shí),讀取Windows的LSP注冊(cè)表配置,找到該DLL文件對(duì)應(yīng)的唯一 LSP編號(hào)(編號(hào)一般是個(gè)整數(shù)或者ー個(gè)⑶ID 串如{5B2272D4-EAC0-4FFB-A2EB-B9EAA78DAEEF}),不加載有問題的 LSPDLL 文件,而是替換為加載直通型DLL文件,并將LSP編號(hào)傳遞給該直通型DLL文件。直通型DLL文件被加載后,獲取傳遞過來的直通型DLL文件的LSP編號(hào),讀取Windows的LSP注冊(cè)表配置,從而在配置中找到本次在LSP鏈中的位置,并加載下層LSP DLL文件。本發(fā)明的文件重定向裝置可以應(yīng)用于計(jì)算機(jī)系統(tǒng)安全軟件或者是其他任何計(jì)算機(jī)系統(tǒng)軟件。下面是本發(fā)明實(shí)施例方案的ー個(gè)具體應(yīng)用舉例,仍以transport provider為例。圖4為該具體應(yīng)用的流程圖。參照?qǐng)D4,在步驟S410,應(yīng)用程序啟動(dòng),從所在的Windows系統(tǒng)的LSP注冊(cè)表中讀取到例如4個(gè)特定編號(hào)的DLL。DLL加載時(shí),上層LSP DLL文件負(fù)責(zé)加載下層LSP DLL文件;發(fā)送網(wǎng)絡(luò)數(shù)據(jù)時(shí),上層LSP DLL文件將要發(fā)送的網(wǎng)絡(luò)數(shù)據(jù)傳遞給下層LSP DLL文件;接收網(wǎng)絡(luò)數(shù)據(jù)時(shí),下層LSP DLL文件將接收到的網(wǎng)絡(luò)數(shù)據(jù)傳遞給上層DLL文件。在步驟S420,根據(jù)應(yīng)用程序的配置信息判斷所讀取的若干個(gè)LSP鏈?zhǔn)欠癜艘黄帘蔚逆?,其中判斷出要屏蔽TSFilter. dll這個(gè)容易導(dǎo)致程序崩潰的DLL文件,應(yīng)用程序自帶的直通型DLL文件的文件路徑是c Aprogramfiles\360\lsp.dll。通常需要屏蔽的LSP DLL文件包括破壞安全軟件功能的木馬或者病毒等惡意程序的LSP DLL文件、導(dǎo)致應(yīng)用程序崩潰/卡死/無法連網(wǎng)的LSP DLL文件。在步驟S430,應(yīng)用程序啟動(dòng)文件操作的API掛鉤或者內(nèi)核掛鉤/過濾。在步驟S440,當(dāng)應(yīng)用程序進(jìn)行TCP網(wǎng)絡(luò)通信,首先會(huì)觸發(fā)TCP鏈的初始化。ws2_32.dll會(huì)加載該鏈頂部的LSP,即TSFilter. dll,這個(gè)DLL文件加載操作被掛鉤所攔截。文件操作攔截函數(shù)檢測(cè)到需要替換TSFi I ter. dl I,替換為加載直通型DLL c \programfiles\360\lsp. dll,并將TSFilter. dll在此鏈中的編號(hào)1019傳遞給該加載的直通型DLL。C \program f iles\360\lsp. dll被加載后,獲取到LSP頂部的編號(hào),查找Windows的LSP注冊(cè)■表配置,發(fā)現(xiàn)自己本次所在的鏈的下層是Engine, dll,開始加載Engine, dll,而Engine,dll又會(huì)加載其下層的mswsock. dll。至此完成整個(gè)TCP鏈的初始化。UDP鏈的初始化也是是類似的。最終所有的TSFilter. dll都被替換成了 c Aprogram files\360\lsp.dll。應(yīng) 用程序不會(huì)加載TSFilter. dll,并且網(wǎng)絡(luò)通信正常。本發(fā)明實(shí)施例還公開了一種計(jì)算機(jī)系統(tǒng),其中,包括計(jì)算機(jī)可讀介質(zhì),中央處理単元,計(jì)算機(jī)驅(qū)動(dòng)程序,操作系統(tǒng),其中,配置列表加載裝置300,用于響應(yīng)在中央處理單元的指令操作,通過計(jì)算機(jī)可讀介質(zhì)加載應(yīng)用程序的配置列表;加載轉(zhuǎn)換裝置310,用于在操作系統(tǒng)中,根據(jù)所加載的配置列表中的配置信息判斷需要加載的LSP DLL文件是否為特定LSP DLL文件,并將加載該特定LSP DLL文件的操作替換為加載預(yù)定義的LSP DLL文件。本發(fā)明實(shí)施例由于既可以屏蔽指定的LSP DLL文件,也可以屏蔽Windows系統(tǒng)中的全部LSP DLL文件,既可以屏蔽指定進(jìn)程中的LSP DLL文件,也可以屏蔽所有進(jìn)程中的LSP DLL文件,也可以實(shí)現(xiàn)對(duì)于需要屏蔽DLL的進(jìn)程顯示的是直通型DLL的路徑,而其他進(jìn)程顯示的是LSP DLL的原始路徑,從而允許應(yīng)用程序在保證網(wǎng)絡(luò)通信功能正常的前提下提高自身的穩(wěn)定性和安全性,帶來好的用戶體驗(yàn)。在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明實(shí)施例也不針對(duì)任何特定編程語(yǔ)言。應(yīng)當(dāng)明白,可以利用各種編程語(yǔ)言實(shí)現(xiàn)在此描述的本發(fā)明實(shí)施例的內(nèi)容,并且上面對(duì)特定語(yǔ)言所做的描述是為了披露本發(fā)明實(shí)施例的最佳實(shí)施方式。在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明實(shí)施例的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技木,以便不模糊對(duì)本說明書的理解。類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開并幫助理解各個(gè)發(fā)明方面中的ー個(gè)或多個(gè),在上面對(duì)本發(fā)明實(shí)施例的示例性實(shí)施例的描述中,本發(fā)明實(shí)施例的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖即所要求保護(hù)的本發(fā)明實(shí)施例要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式
的權(quán)利要求書由此明確地并入該具體實(shí)施方式
,其中每個(gè)權(quán)利要求本身都作為本發(fā)明實(shí)施例的單獨(dú)實(shí)施例。本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中。可以把實(shí)施例中的模塊或單元或組件組合成ー個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過程或者単元中的至少ー些是相互排斥之外,可以采用任何組合對(duì)本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或単元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來代替。此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明實(shí)施例的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來使用。本發(fā)明實(shí)施例的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在ー個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(DSP)來實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的通過文件重定向屏蔽特定LSP DLL的裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明實(shí)施例還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序應(yīng)用程序)。這樣的實(shí)現(xiàn)本發(fā)明實(shí)施例的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有ー個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得至IJ,或者在載體信號(hào)上提供,或者以任何其他形式提供。應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明實(shí)施例進(jìn)行說明而不是對(duì)本發(fā)明實(shí)施例進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“ー個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明實(shí)施例可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過同一個(gè)硬件項(xiàng)來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。本文公開了 Al、一種文件重定向方法,其特征在于,包括加載應(yīng)用程序的配置列表;根據(jù)所加載的配置列表中的配置信息判斷需要加載的LSTOLL文件是否為特定LSP DLL文件;若是,則將加載該特定LSP DLL文件的操作替換為加載預(yù)定義的LSP DLL文件操作。A2、如Al所述的方法,其特征在于,所述特定LSP DLL文件為需要被屏蔽的LSP DLL文件,所述預(yù)定義的LSP DLL文件是直通型DLL文件,直通型DLL文件為通過特定磁盤文件路徑加載的DLL文件,用于在LSP鏈上層和下層之間透?jìng)鲾?shù)據(jù)包。A3、如A2所述的方法,其特征在于,所述配置列表包括需要屏蔽的LSP DLL,以及所述需要屏蔽的LSP DLL所對(duì)應(yīng)的進(jìn)程信息。A4、根據(jù)A3所述的方法,包括根據(jù)所述配置列表中的LSP DLL文件的特征信息來判斷LSP配置列表數(shù)據(jù)中是否包括需要被屏蔽的LSP DLL文件。A5、根據(jù)A4所述的方法,其特征在于,所述特征信息為DLL文件的文件名、DLL文件的公司名、原始文件名或者產(chǎn)品名稱,所述特征信息從DLL文件的版本信息中獲得。A6、如A3所述的方法,其特征在于,替換操作進(jìn)ー步包括在應(yīng)用層對(duì)執(zhí)行文件操作的API函數(shù)進(jìn)行掛鉤處理,當(dāng)應(yīng)用程序初始化WinSock吋,調(diào)用該API函數(shù)以加載對(duì)應(yīng)的LSP DLL文件,并將該LSP DLL文件的文件路徑傳遞給該自定義的函數(shù);在該自定義的函數(shù)中,應(yīng)用程序根據(jù)配置信息判斷該傳遞來的LSPDLL文件是否為需要被屏蔽的LSP DLL文件,如果是則將加載該LSTOLL文件的操作替換為加載直通型LSP DLL文件。A7、如A6所述的方法,其特征在于,替換操作進(jìn)ー步包括如果傳遞來的LSP DLL文件為需要被屏蔽的LSP DLL文件,則替換LSP DLL文件的文件路徑為直通型LSP DLL文件的文件路徑,并傳遞給掛鉤處理之前的API函數(shù),執(zhí)行調(diào)用直通型LSPDLL文件的文件路徑。A8、如A3所述的方法,其特征在于,所述替換操作進(jìn)ー步包括在驅(qū)動(dòng)層用于在驅(qū)動(dòng)層掛鉤文件操作的系統(tǒng)調(diào)用文件打開函數(shù),將其替換為自定義的函數(shù);將該LSP DLL文件路徑修替換為直通型LSP DLL文件的文件路徑,并將此修改后的路徑傳遞給鉤掛前的文件打開函數(shù),使系統(tǒng)加載直通型DLL文件。A9、如A3所述的方法,其特征在于,所述替換操作進(jìn)ー步包括創(chuàng)建文件系統(tǒng)過濾驅(qū)動(dòng)程序,用于對(duì)LSP DLL文件的打開操作進(jìn)行過濾;文件系統(tǒng)過濾驅(qū)動(dòng)程序?qū)ε袛嘣摯蜷_的LSP DLL文件是否為配置列表中需要被屏蔽的LSP DLL文件,是則修改該LSP DLL文件的文件路徑為直通型LSP DLL文件的文件路徑,將加載該需要被屏蔽的LSP DLL文件替換為加載直通型DLL文件。A10、如A6-A9任一項(xiàng)所述的方法,其特征在于,在替換操作步驟中,當(dāng)攔截到加載需要被屏蔽的LSP DLL文件的文件操作吋,讀取Windows的LSP注冊(cè)表配置,獲取該DLL文件對(duì)應(yīng)的LSP編號(hào),加載直通型DLL文件,并將LSP編號(hào)傳遞給該直通型DLL文件。All、如AlO所述的方法,其特征在于,該方法進(jìn)ー步包括當(dāng)加載直通型DLL文件后,獲取傳遞的LSP編號(hào),讀取操作系統(tǒng)的LSP注冊(cè)表配置,從而在配置中找到該直通型DLL文件本次在LSP鏈中的位置,并加載下層LSP DLL 文件。本文公開了 B12、一種文件重定向裝置,其特征在于,包括配置文件加載裝置,用于加載應(yīng)用程序的配置列表;加載轉(zhuǎn)換裝置,根據(jù)所加載的配置列表中的配置信息判斷需要加載的LSP DLL文件是否為特定LSP DLL文件,并將加載該特定LSP DLL文件的操作替換為加載預(yù)定義的LSP DLL文件。B13、如B12所述的文件重定向裝置,其特征在于,所述特定LSP DLL文件為需要被屏蔽的LSP DLL文件,所述預(yù)定義的LSP DLL文件是直通型DLL文件,直通型DLL文件為通過特定磁盤文件路徑加載的DLL文件,以便于通過所述直通型DLL文件在LSP鏈上層和下層之間透?jìng)鲾?shù)據(jù)包。B14、如B13所述的文件重定向裝置,其特征在于,所述配置列表包括需要屏蔽的LSP DLL文件,以及要屏蔽這些LSP DLL文件的進(jìn)程。B15、根據(jù)B14所述的文件重定向裝置,包括根據(jù)所述配置列表中的LSP DLL文件的特征信息來判斷LSP配置列表數(shù)據(jù)中是否包括需要被屏蔽的LSP DLL文件。B16、根據(jù)B15所述的文件重定向裝置,其特征在于,所述特征信息為DLL文件的文件名、DLL文件的公司名、原始文件名或者產(chǎn)品名稱,所述特征信息從DLL文件的版本信息中獲得。B17、如B14所述的文件重定向裝置,其特征在于,加載轉(zhuǎn)換裝置進(jìn)ー步包括掛鉤處理單元,用于對(duì)執(zhí)行文件操作的API函數(shù)進(jìn)行掛鉤處理,指向自定義的函數(shù),其中該API函數(shù)是用于加載DLL文件的系統(tǒng)功能函數(shù);加載執(zhí)行單元,用于當(dāng)應(yīng)用程序初始化WinSock時(shí),調(diào)用該API函數(shù)以加載對(duì)應(yīng)的LSP DLL文件,并將該LSP DLL文件的文件路徑傳遞給該自定義的函數(shù),根據(jù)配置信息判斷該傳遞來的LSP DLL文件是否為需要被屏蔽的LSP DLL文件,如果是則將加載該LSPDLL文件的操作替換為加載直通型LSP DLL文件。B18、如B17所述的文件重定向裝置,其特征在于,加載轉(zhuǎn)換裝置判斷如果傳遞來的LSP DLL文件為需要被屏蔽的LSP DLL文件,則替換LSP DLL文件的文件路徑為直通型LSP DLL文件的文件路徑,并傳遞給掛鉤處理之前的API函數(shù),執(zhí)行調(diào)用直通型LSP DLL文件的文件路徑。B19、如B14所述的文件重定向裝置,其特征在于,加載轉(zhuǎn)換裝置進(jìn)一步包括掛鉤處理單元,用于在驅(qū)動(dòng)層掛鉤文件操作的系統(tǒng)調(diào)用文件打開函數(shù),將其替換為自定義的函數(shù);加載執(zhí)行單元,當(dāng)應(yīng)用程序初始化WinSock時(shí),加載LSP鏈上的LSP DLL文件,打開對(duì)應(yīng)的LSP DLL文件,預(yù)先調(diào)用自定義函數(shù),判斷要打開的LSP DLL文件是否為待屏蔽LSP DLL文件,如果是,則將該LSTOLL文件路徑修替換為直通型LSP DLL文件的文件路徑,并將此修改后的路徑傳遞給鉤掛前的文件打開函數(shù),使系統(tǒng)加載直通型DLL。B20、如B14所述的文件重定向裝置,其特征在于,加載轉(zhuǎn)換裝置進(jìn)一步包括程序創(chuàng)建單元,用于創(chuàng)建文件系統(tǒng)過濾驅(qū)動(dòng)程序,用于對(duì)LSP DLL文件的打開操作進(jìn)行過濾;加載執(zhí)行單元,用于在應(yīng)用程序初始化WinSock時(shí),加載LSP鏈上的LSP DLL文件,打開對(duì)應(yīng)的LSP DLL文件,如果該打開的LSP DLL文件是配置列表中需要被屏蔽的LSPDLL文件,則修改該LSP DLL文件的文件名或文件路徑為直通型LSP DLL文件的文件名或文件路徑,將加載該需要被屏蔽的LSP DLL文件替換為加載直通型DLL。B21、如B17-B20任一項(xiàng)所述的文件重定向裝置,其特征在于,當(dāng)攔截到加載需要被屏蔽的LSP DLL文件的文件操作時(shí),加載轉(zhuǎn)換裝置讀取Windows的LSP注冊(cè)表配置,找到該DLL文件對(duì)應(yīng)的LSP編號(hào),力口載直通型DLL文件,并將LSP編號(hào)傳遞給該直通型DLL文件。B22、如B21所述的文件重定向裝置,其特征在于,加載轉(zhuǎn)換裝置在當(dāng)加載直通型DLL文件后,獲取傳遞的LSP編號(hào),讀取操作系統(tǒng)的LSP注冊(cè)表配置,從而在配置中找到該直通型DLL文件在LSP鏈中的位置,并加載下層LSP DLL文件。本文公開了 C23、一種計(jì)算機(jī)系統(tǒng),其中,包括計(jì)算機(jī)可讀介質(zhì),中央處理單元,計(jì)算機(jī)驅(qū)動(dòng)程序,操作系統(tǒng),其中,配置列表加載裝置,用于加載應(yīng)用程序的配置列表;加載轉(zhuǎn)換裝置,根據(jù)所加載的配置列表中的配置信息判斷需要加載的LSP DLL文件是否為特定LSP DLL文件,并將加載該特定LSP DLL文件的操作替換為加載預(yù)定義的LSP DLL文件。
權(quán)利要求
1.一種文件重定向方法,其特征在于,包括 加載應(yīng)用程序的配置列表; 根據(jù)所加載的配置列表中的配置信息判斷需要加載的LSP DLL文件是否為特定LSPDLL文件;若是,則將加載該特定LSP DLL文件的操作替換為加載預(yù)定義的LSP DLL文件操作。
2.如權(quán)利要求1所述的方法,其特征在于,所述特定LSPDLL文件為需要被屏蔽的LSPDLL文件,所述預(yù)定義的LSP DLL文件是直通型DLL文件,直通型DLL文件為通過特定磁盤文件路徑加載的DLL文件,用于在LSP鏈上層和下層之間透?jìng)鲾?shù)據(jù)包。
3.如權(quán)利要求2所述的方法,其特征在于,所述配置列表包括需要屏蔽的LSPDLL,以及所述需要屏蔽的LSP DLL所對(duì)應(yīng)的進(jìn)程信息。
4.根據(jù)權(quán)利要求3所述的方法,包括根據(jù)所述配置列表中的LSPDLL文件的特征信息來判斷LSP配置列表數(shù)據(jù)中是否包括需要被屏蔽的LSP DLL文件。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述特征信息為DLL文件的文件名、DLL文件的公司名、原始文件名或者產(chǎn)品名稱,所述特征信息從DLL文件的版本信息中獲得。
6.如權(quán)利要求3所述的方法,其特征在于,替換操作進(jìn)一步包括 在應(yīng)用層對(duì)執(zhí)行文件操作的API函數(shù)進(jìn)行掛鉤處理,當(dāng)應(yīng)用程序初始化WinSock時(shí),調(diào)用該API函數(shù)以加載對(duì)應(yīng)的LSP DLL文件,并將該LSP DLL文件的文件路徑傳遞給該自定義的函數(shù); 在該自定義的函數(shù)中,應(yīng)用程序根據(jù)配置信息判斷該傳遞來的LSP DLL文件是否為需要被屏蔽的LSP DLL文件,如果是則將加載該LSP DLL文件的操作替換為加載直通型LSPDLL文件。
7.如權(quán)利要求6所述的方法,其特征在于,替換操作進(jìn)一步包括如果傳遞來的LSPDLL文件為需要被屏蔽的LSP DLL文件,則替換LSP DLL文件的文件路徑為直通型LSP DLL文件的文件路徑,并傳遞給掛鉤處理之前的API函數(shù),執(zhí)行調(diào)用直通型LSP DLL文件的文件路徑。
8.如權(quán)利要求3所述的方法,其特征在于,所述替換操作進(jìn)一步包括 在驅(qū)動(dòng)層用于在驅(qū)動(dòng)層掛鉤文件操作的系統(tǒng)調(diào)用文件打開函數(shù),將其替換為自定義的函數(shù);將該LSP DLL文件路徑修替換為直通型LSP DLL文件的文件路徑,并將此修改后的路徑傳遞給鉤掛前的文件打開函數(shù),使系統(tǒng)加載直通型DLL文件。
9.如權(quán)利要求3所述的方法,其特征在于,所述替換操作進(jìn)一步包括 創(chuàng)建文件系統(tǒng)過濾驅(qū)動(dòng)程序,用于對(duì)LSP DLL文件的打開操作進(jìn)行過濾; 文件系統(tǒng)過濾驅(qū)動(dòng)程序?qū)ε袛嘣摯蜷_的LSP DLL文件是否為配置列表中需要被屏蔽的LSP DLL文件,是則修改該LSP DLL文件的文件路徑為直通型LSP DLL文件的文件路徑,將加載該需要被屏蔽的LSP DLL文件替換為加載直通型DLL文件。
10.如權(quán)利要求6-9任一項(xiàng)所述的方法,其特征在于,在替換操作步驟中,當(dāng)攔截到加載需要被屏蔽的LSP DLL文件的文件操作時(shí),讀取Windows的LSP注冊(cè)表配置,獲取該DLL文件對(duì)應(yīng)的LSP編號(hào),加載直通型DLL文件,并將LSP編號(hào)傳遞給該直通型DLL文件。
11.如權(quán)利要求10所述的方法,其特征在于,該方法進(jìn)一步包括當(dāng)加載直通型DLL文件后,獲取傳遞的LSP編號(hào),讀取操作系統(tǒng)的LSP注冊(cè)表配置,從而在配置中找到該直通型DLL文件本次在LSP鏈中的位置,并加載下層LSP DLL文件。
12.—種文件重定向裝置,其特征在于,包括 配置文件加載裝置,用于加載應(yīng)用程序的配置列表; 加載轉(zhuǎn)換裝置,根據(jù)所加載的配置列表中的配置信息判斷需要加載的LSTOLL文件是否為特定LSP DLL文件,并將加載該特定LSP DLL文件的操作替換為加載預(yù)定義的LSP DLL文件。
13.如權(quán)利要求12所述的文件重定向裝置,其特征在于,所述特定LSTOLL文件為需要被屏蔽的LSP DLL文件,所述預(yù)定義的LSP DLL文件是直通型DLL文件,直通型DLL文件為通過特定磁盤文件路徑加載的DLL文件,以便于通過所述直通型DLL文件在LSP鏈上層和下層之間透?jìng)鲾?shù)據(jù)包。
14.如權(quán)利要求13所述的文件重定向裝置,其特征在于,所述配置列表包括需要屏蔽的LSP DLL文件,以及要屏蔽這些LSP DLL文件的進(jìn)程。
15.根據(jù)權(quán)利要求14所述的文件重定向裝置,包括根據(jù)所述配置列表中的LSPDLL文件的特征信息來判斷LSP配置列表數(shù)據(jù)中是否包括需要被屏蔽的LSP DLL文件。
16.根據(jù)權(quán)利要求15所述的文件重定向裝置,其特征在于,所述特征信息為DLL文件的文件名、DLL文件的公司名、原始文件名或者產(chǎn)品名稱,所述特征信息從DLL文件的版本信息中獲得。
17.如權(quán)利要求14所述的文件重定向裝置,其特征在于,加載轉(zhuǎn)換裝置進(jìn)一步包括 掛鉤處理單元,用于對(duì)執(zhí)行文件操作的API函數(shù)進(jìn)行掛鉤處理,指向自定義的函數(shù),其中該API函數(shù)是用于加載DLL文件的系統(tǒng)功能函數(shù); 加載執(zhí)行單元,用于當(dāng)應(yīng)用程序初始化WinSock時(shí),調(diào)用該API函數(shù)以加載對(duì)應(yīng)的LSPDLL文件,并將該LSP DLL文件的文件路徑傳遞給該自定義的函數(shù),根據(jù)配置信息判斷該傳遞來的LSP DLL文件是否為需要被屏蔽的LSP DLL文件,如果是則將加載該LSP DLL文件的操作替換為加載直通型LSP DLL文件。
18.如權(quán)利要求17所述的文件重定向裝置,其特征在于,加載轉(zhuǎn)換裝置判斷如果傳遞來的LSP DLL文件為需要被屏蔽的LSP DLL文件,則替換LSTOLL文件的文件路徑為直通型LSP DLL文件的文件路徑,并傳遞給掛鉤處理之前的API函數(shù),執(zhí)行調(diào)用直通型LSP DLL文件的文件路徑。
19.如權(quán)利要求14所述的文件重定向裝置,其特征在于,加載轉(zhuǎn)換裝置進(jìn)一步包括 掛鉤處理單元,用于在驅(qū)動(dòng)層掛鉤文件操作的系統(tǒng)調(diào)用文件打開函數(shù),將其替換為自定義的函數(shù); 加載執(zhí)行單元,當(dāng)應(yīng)用程序初始化WinSock時(shí),加載LSP鏈上的LSP DLL文件,打開對(duì)應(yīng)的LSP DLL文件,預(yù)先調(diào)用自定義函數(shù),判斷要打開的LSTOLL文件是否為待屏蔽LSP DLL文件,如果是,則將該LSP DLL文件路徑修替換為直通型LSP DLL文件的文件路徑,并將此修改后的路徑傳遞給鉤掛前的文件打開函數(shù),使系統(tǒng)加載直通型DLL。
20.一種計(jì)算機(jī)系統(tǒng),其中,包括計(jì)算機(jī)可讀介質(zhì),中央處理單元,計(jì)算機(jī)驅(qū)動(dòng)程序,操作系統(tǒng),其中, 配置列表加載裝置,用于加載應(yīng)用程序的配置列表; 加載轉(zhuǎn)換裝置,根據(jù)所加載的配置列表中的配置信息判斷需要加載的LSTOLL文件是否為特定LSP DLL文件,并將加載該特定L SP DLL文件的操作替換為加載預(yù)定義的LSP DLL文件。
全文摘要
本發(fā)明實(shí)施例公開了一種文件重定向方法、裝置和計(jì)算機(jī)系統(tǒng),該方法包括加載應(yīng)用程序的配置列表;根據(jù)所加載的配置列表的配置信息判斷需要加載的LSP DLL文件是否為特定LSP DLL文件;將加載該特定LSP DLL文件的操作替換為加載預(yù)定義的LSP DLL文件操作。本發(fā)明實(shí)施例的方案通過文件重定向技術(shù),使得應(yīng)用程序避免加載需要被屏蔽的LSP DLL文件,而是加載直通型LSP DLL文件,并保證正常的網(wǎng)絡(luò)通信。
文檔編號(hào)G06F9/445GK103019765SQ201210461020
公開日2013年4月3日 申請(qǐng)日期2012年11月15日 優(yōu)先權(quán)日2012年11月15日
發(fā)明者張波, 譚合力 申請(qǐng)人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
苏尼特左旗| 武川县| 锦州市| 长宁县| 汝阳县| 武隆县| 牙克石市| 六枝特区| 本溪市| 房产| 赞皇县| 渝北区| 镇康县| 嵊州市| 互助| 甘泉县| 孙吴县| 南丰县| 扶沟县| 东莞市| 陕西省| 建德市| 上杭县| 滁州市| 五家渠市| 大田县| 福鼎市| 屏山县| 富阳市| 江达县| 定陶县| 井陉县| 马山县| 驻马店市| 瑞金市| 葫芦岛市| 临朐县| 扶沟县| 青海省| 绵阳市| 新野县|