專利名稱:計(jì)算機(jī)處理系統(tǒng)和注冊表重定向方法
技術(shù)領(lǐng)域:
本發(fā)明涉及應(yīng)用程序監(jiān)控技術(shù),具體涉及一種計(jì)算機(jī)處理系統(tǒng)和注冊表重定向方法。
背景技術(shù):
LSP(Layered Service Provider)是 Windows 平臺(tái)的通信架構(gòu)WinSock(WinSock(Windows Sockets)是操作系統(tǒng)提供的Windows操作系統(tǒng)應(yīng)用層的網(wǎng)絡(luò)通信架構(gòu)和規(guī)范的縮寫)中特有的一個(gè)機(jī)制。通過可擴(kuò)展的LSP機(jī)制,使得第三方軟件開發(fā)商可以在應(yīng)用程序中插入DLL對TCP/IP數(shù)據(jù)包進(jìn)行監(jiān)聽、修改,從而開發(fā)出豐富的網(wǎng)絡(luò)應(yīng)用,如聊天軟件通信加密工具、網(wǎng)絡(luò)代理軟件、網(wǎng)絡(luò)游戲加速器等。LSP既可以用來開發(fā)正規(guī)的應(yīng)用,病毒木馬作者也可以利用LSP在用戶的系統(tǒng)中插入惡意代碼,竊取用戶信息等。另外,由于LSP注入到系統(tǒng)的絕大多數(shù)進(jìn)程中,串接在應(yīng)用程序的網(wǎng)絡(luò)訪問操作中,如果代碼考慮不周,就會(huì)導(dǎo)致不能上網(wǎng)、程序崩潰或卡死等現(xiàn)象。所以需要有一定的手段來屏蔽LSP機(jī)制,防止對應(yīng)用程序無實(shí)際作用的第三方的LSPDLL加載到應(yīng)用程序進(jìn)程中產(chǎn)生干擾,這對安全軟件尤其重要。然而,目前還沒有一種有效的措施來及時(shí)發(fā)現(xiàn)并屏蔽一些有問題的LSTOLL。
發(fā)明內(nèi)容
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的通過注冊表重定向屏蔽特定LSP DLL的方法和相應(yīng)的通過注冊表重定向屏蔽特定LSP DLL的計(jì)算機(jī)處理系統(tǒng)。依據(jù)本發(fā)明的一個(gè)方面,提供了一種注冊表重定向方法,該方法包括加載應(yīng)用程序的配置信息;根據(jù)所加載的配置信息判斷LSP配置注冊表數(shù)據(jù)中是否包括需要屏蔽的LSP DLL ;應(yīng)用程序啟動(dòng)時(shí),從所述LSP配置注冊表讀取其中的LSP鏈,并確定每個(gè)LSP鏈中是否包括所述配置列表中需要被屏蔽的LSP DLL ;如果包括,則將該LSP DLL的信息從LSP配置注冊表數(shù)據(jù)中刪除,構(gòu)造出一份新的LSP配置注冊表數(shù)據(jù);將對LSP配置注冊表數(shù)據(jù)的操作重定向到新建的LSP注冊表配置注冊表數(shù)據(jù)上??蛇x地,所述配置信息包括需要屏蔽哪些LSP DLL,以及在哪些進(jìn)程中屏蔽這些LSP DLL。可選地,所述重定向操作包括在應(yīng)用層對指定或者全部進(jìn)程進(jìn)行文件操作API函數(shù)的掛鉤??蛇x地,所述重定向操作包括在驅(qū)動(dòng)層通過掛鉤文件操作的系統(tǒng)調(diào)用,或者使用系統(tǒng)提供的文件系統(tǒng)過濾驅(qū)動(dòng)機(jī)制。依據(jù)本發(fā)明的另一方面,提供了一種計(jì)算機(jī)處理系統(tǒng),其包括:WinSock初始化啟動(dòng)模塊,用于啟動(dòng)應(yīng)用程序初始化WinSock ;注冊表重定向裝置,用于基于Windows的LSP配置注冊表數(shù)據(jù),刪除其中需要屏蔽的LSP DLL信息后,構(gòu)造新的LSP配置注冊表數(shù)據(jù),將應(yīng)用程序初始化WinSock時(shí)讀取LSP配置的注冊表操作重定向到該新的LSP配置注冊表數(shù)據(jù)上,使得應(yīng)用程序不加載要屏蔽的LSP DLL。利用本發(fā)明的注冊表重定向方法和計(jì)算機(jī)處理系統(tǒng),通過注冊表重定向機(jī)制,針對Windows系統(tǒng)中的特定或全部進(jìn)程屏蔽特定或者全部的LSP DLL,避免這些LSP DLL加載到進(jìn)程中,提高應(yīng)用程序的穩(wěn)定性和安全性。本發(fā)明的方案不需要攜帶操作系統(tǒng)提供的默認(rèn)的任何LSP配置,既可以針對系統(tǒng)中的單個(gè)LSP DLL進(jìn)行屏蔽,也可以將全部LSP DLL都屏蔽,既可以針對單個(gè)進(jìn)程進(jìn)行LSPDLL屏蔽,也可以針對所有進(jìn)程進(jìn)行LSP DLL屏蔽。上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式
。
通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號表示相同的部件。在附圖中圖1為現(xiàn)有技術(shù)的WinSock框架示意圖;圖2為根據(jù)本發(fā)明一實(shí)施例的注冊表重定向方法流程圖;圖3為根據(jù)本發(fā)明一實(shí)施例的注冊表重定向裝置的結(jié)構(gòu)框圖;圖4為本發(fā)明注冊表重定向方法的一種具體應(yīng)用場景流程圖。
具體實(shí)施例方式下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。圖1為WinSock框架不意圖,參照圖1, transport provider有兩個(gè)鏈TCP鏈、UDP鏈。還可以有其它類型的LSP鏈。TCP鏈中,從上到下共4層(其中底層的mswsock. dll是操作系統(tǒng)本身所具有的功能)。UDP鏈包括3層。右邊的3個(gè)是namespace provider,其中最右邊的winrnr. dll是操作系統(tǒng)提供的。其中,LSP屬于應(yīng)用層,所有LSP DLL都運(yùn)行在環(huán)3特權(quán)級別下,但LSP的行為可以從環(huán)3或者環(huán)0來進(jìn)行一定的控制,比如對其文件或注冊表操作進(jìn)行控制。LSP既可以用來開發(fā)正規(guī)的應(yīng)用,病毒木馬作者也可以利用LSP在用戶的系統(tǒng)中插入惡意代碼,竊取用戶信息等。另外,由于LSP注入到系統(tǒng)的絕大多數(shù)進(jìn)程中,串接在應(yīng)用程序的網(wǎng)絡(luò)訪問操作中,如果代碼考慮不周,就會(huì)導(dǎo)致不能上網(wǎng)、程序崩潰或卡死等現(xiàn)象。所以需要有一定的手段來屏蔽LSP機(jī)制,防止對應(yīng)用程序無實(shí)際作用的第三方的LSP DLL加載到應(yīng)用程序進(jìn)程中產(chǎn)生干擾,這對安全軟件尤其重要。
常見的屏蔽(或者跳過)LSP DLL的方法包括I、利用Windows系統(tǒng)提供的策略,指定哪些進(jìn)程加載或者不加載特定類型的LSPDLL,這種技術(shù)存在的缺點(diǎn)是只有Vista及其以上的Windows平臺(tái)才支持這個(gè)特性;只能根據(jù)LSP所屬的分類來排除,策略太粗放。2、徹底拋棄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é)一般是非文檔化的;在有proxy的環(huán)境下,需要自行實(shí)現(xiàn)proxy協(xié)議才能正常訪問網(wǎng)絡(luò);這種方法不會(huì)加載第三方的任何LSP DLL,在必須要加載某些proxy類型的LSP DLL才能正常訪問網(wǎng)絡(luò)的環(huán)境中,無法上網(wǎng)。3、自帶一份Windows默認(rèn)的LSP配置,這個(gè)配置中不包括操作系統(tǒng)提供的之外的任何LSP DLL,通過注冊表重定向讓應(yīng)用程序訪問這個(gè)默認(rèn)LSP配置,從而不加載第三方的任何LSP DLL。這種方法的缺點(diǎn)是不會(huì)加載第三方的任何LSP DLL,在必須要加載某些proxy類型的LSP DLL才能正常訪問網(wǎng)絡(luò)的環(huán)境中,無法上網(wǎng);要針對不同的Windows版本帶一份不同的默認(rèn)LSP配置,比如32位XP帶一份,32位Win7帶另一份。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ā)明既支持 transport provider,也支持 namespaceprovider。本發(fā)明實(shí)施中,可以基于Windows的LSP注冊表配置,刪除其中要屏蔽的LSP DLL信息后,構(gòu)造新的LSP注冊表配置。將應(yīng)用程序初始化WinSock時(shí)讀取LSP配置的注冊表操作重定向到這份新的LSP注冊表配置上,從而使得應(yīng)用程序不會(huì)加載要屏蔽的LSP DLL。圖2為本發(fā)明的注冊表重定向方法流程圖。該方法通過構(gòu)造新的LSP配置注冊表數(shù)據(jù)、重定向LSP注冊表配置注冊表數(shù)據(jù)的讀寫操作來向應(yīng)用程序屏蔽特定或全部LSPDLL的存在。通常需要屏蔽的LSP DLL包括木馬病毒的LSP DLL、對安全軟件基本無用的網(wǎng)絡(luò)加速器的LSP DLL(這些網(wǎng)絡(luò)加速器主要是對網(wǎng)絡(luò)游戲、WEB瀏覽等應(yīng)用進(jìn)行加速的)等。木馬病毒的LSP DLL在WinSock初始化時(shí)加載到安全應(yīng)用軟件的進(jìn)程中后,會(huì)對其安全功能造成干擾和破壞,比如阻斷安全軟件的計(jì)算機(jī)處理系統(tǒng)和其云安全中心服務(wù)器建立網(wǎng)絡(luò)連接、直接終止安全軟件的進(jìn)程等;網(wǎng)絡(luò)加速器的LSP DLL可能導(dǎo)致安全軟件崩潰、卡死、無法聯(lián)網(wǎng)等,比如“99宿舍加速器”的LSP DLL曾經(jīng)導(dǎo)致很多用戶無法正常上網(wǎng)。參照圖2,在步驟S200,加載應(yīng)用程序的配置列表。配置列表中的配置信息包括需要屏蔽哪些LSP DLL、需要在哪些進(jìn)程中屏蔽這些LSP DLL。通常,選擇哪些進(jìn)程來屏蔽這些LSP DLL是由用戶根據(jù)實(shí)際需要來確定的,例如如果360用戶需要在衛(wèi)士主程序、木馬查殺中屏蔽迅雷網(wǎng)絡(luò)游戲加速器的LSP,則相應(yīng)的配置為進(jìn)程列表為360safe. exe (360衛(wèi)士主程序)、dsmain. exe (360衛(wèi)士的木馬查殺)LSP列表為XLAccLSP. dll (迅雷網(wǎng)絡(luò)游戲加速器的LSP DLL)。在步驟210,讀取系統(tǒng)的LSP配置注冊表數(shù)據(jù)。Windows 的 LSP 配置注冊表包括 transport provider^ name space provider 的信息,保存在注冊表分支HKEY_L0CAL_MACHINE\SYSTEM\CurrentControlSet\Services\ffinSock2\Parameters 下。Transport provider ( “數(shù)據(jù)傳輸提供者”或者“傳輸提供者”)的配置信息包括I)每個(gè)LSP DLL的數(shù)字編號和全球唯一標(biāo)識(shí)GUID編號、文件路徑、支持的網(wǎng)絡(luò)協(xié)議類型如TCP/UDP等;2)每個(gè)LSP鏈的數(shù)字編號和GUID編號、處在該鏈中的每個(gè)DLL的數(shù)字編號和⑶ID編號。transport provider 主要是針對 namespace provider (名字空間提供者)而言。通常說的LSP DLL主要是指前者,本發(fā)明對傳輸提供者、名字空間提供者DLL都適用,下面所有的例子都是用transport provider為例來說明的,因?yàn)閷?shí)際環(huán)境中遇到的導(dǎo)致應(yīng)用程序故障的主要都是transport provider。
所述配置注冊表中還包括DLL/EXE的文件名,也可以包括DLL/EXE的公司名、原始文件名、產(chǎn)品名稱等,這些信息一般可以從DLL/EXE的版本信息中獲得。根據(jù)這些特征信息確定哪些是需要屏蔽的LSP DLL。步驟220,根據(jù)所加載的應(yīng)用程序的配置信息,判斷在所讀取的LSP配置注冊表數(shù)據(jù)中是否包括需要屏蔽的LSP DLL。在該步驟,判斷所讀取的LSP配置注冊表數(shù)據(jù)中LSP DLL的特征信息與所加載的應(yīng)用程序的配置信息中需要屏蔽的LSP DLL的特征信息是否匹配,特征信息例如是文件名等,如果和配置信息中要屏蔽的LSP DLL的特征符合(特征比如是文件名字符串特征,也可以是產(chǎn)品名稱字符串/公司名字符串等特征),例如如果LSP DLL的文件名符合指定的字符串特征,就認(rèn)為相匹配,也就是特征符合。步驟230,根據(jù)判斷結(jié)果,如果在所讀取的LSP配置注冊表數(shù)據(jù)中包括需要屏蔽的LSP DLL,則將該LSP DLL的信息從LSP配置注冊表數(shù)據(jù)中刪除,從而構(gòu)造出新的LSP配置注冊表數(shù)據(jù),將此新的注冊表數(shù)據(jù)另存在注冊表的其它位置。系統(tǒng)原有的LSP配置注冊表數(shù)據(jù)是保持不變的。保持原有的LSP配置注冊表數(shù)據(jù)是為了讓其它的應(yīng)用程序仍然能讀取到原有的配置注冊表數(shù)據(jù),從而不影響其它程序的正常工作,例如網(wǎng)絡(luò)游戲計(jì)算機(jī)處理系統(tǒng)需要能讀取到原始的LSP配置注冊表數(shù)據(jù)才會(huì)去加載網(wǎng)絡(luò)游戲加速器的LSP DLL從而得到游戲的網(wǎng)絡(luò)加速功能。只有指定的應(yīng)用程序才會(huì)讀取到新構(gòu)造的LSP配置注冊表數(shù)據(jù),例如安全軟件讀取到的是不包括網(wǎng)絡(luò)游戲加速器的LSP DLL的新的LSP配置注冊表數(shù)據(jù),從而使得安全軟件不會(huì)加載網(wǎng)絡(luò)游戲加速器的LSP DLL,避免受到不穩(wěn)定的網(wǎng)絡(luò)游戲加速器的LSPDLL的影響出現(xiàn)崩潰或卡死。步驟240,采用如下方式之一進(jìn)行注冊表重定向,將程序操作Windows的LSP配置注冊表數(shù)據(jù)的操作重定向到新建的LSP注冊表配置注冊表數(shù)據(jù)上。本實(shí)施例中,在應(yīng)用層(ring 3)對指定或者全部進(jìn)程進(jìn)行注冊表操作API函數(shù)的掛鉤,和/或在驅(qū)動(dòng)層(ring 0)通過掛鉤掛鉤注冊表操作的系統(tǒng)調(diào)用或者使用系統(tǒng)提供的CmCallback注冊表回調(diào)例程。環(huán)0的注冊表相關(guān)的系統(tǒng)調(diào)用包括系統(tǒng)服務(wù)NtOpenKey、NtCreateKey、NtQueryValueKey^NtQueryInfoKey等,是一整套和注冊表操作相關(guān)的調(diào)用。通過掛鉤這些系統(tǒng)調(diào)用,可以實(shí)現(xiàn)對應(yīng)用程序的注冊表操作的監(jiān)視、修改,包括完成注冊表操作的重定向功能。對于LSP屏蔽的需求來說,可以選擇掛鉤掛鉤NtOpenKey ()系統(tǒng)調(diào)用。環(huán)0的注冊表操作回調(diào)可以包括一種,即通過注冊表回調(diào)函數(shù)CmRegisterCallbackO系統(tǒng)注冊自定義的注冊表操作過濾函數(shù),當(dāng)應(yīng)用程序進(jìn)行任何注冊表操作時(shí),自定義函數(shù)都會(huì)被調(diào)用,從而可以對應(yīng)用程序的注冊表操作進(jìn)行監(jiān)視、修改,包括完成注冊表操作的重定向功能。環(huán)3主要就是掛鉤注冊表的打開API函數(shù)RegOpenKeyExO即可。圖3為根據(jù)本發(fā)明一實(shí)施例的通過文件重定向屏蔽特定LSP DLL的裝置結(jié)構(gòu)框圖。仍以transport provider為例,該裝置包括配置信息加載模塊300,用于加載應(yīng)用程序的配置信息。配置信息包括應(yīng)用程序的基本信息,在本發(fā)明,配置信息另外還包括需要屏蔽哪些LSP DLL、需要在哪些進(jìn)程中屏蔽這些 LSP DLL。數(shù)據(jù)讀取模塊310,用于讀取系統(tǒng)的LSP配置注冊表數(shù)據(jù)。判斷模塊320,用于根據(jù)所加載的應(yīng)用程序的配置信息,判斷在所讀取的LSP配置注冊表數(shù)據(jù)中是否包括需要屏蔽的LSP DLL,如果包括,則將該LSTOLL的信息從LSP配置注冊表數(shù)據(jù)中刪除,從而構(gòu)造出新的LSP配置注冊表數(shù)據(jù),將此新的注冊表數(shù)據(jù)另存在注冊表的其它位置。系統(tǒng)原有的LSP配置注冊表數(shù)據(jù)是保持不變的。 重定向執(zhí)行模塊330,將程序操作Windows的LSP配置注冊表數(shù)據(jù)的操作重定向到新建的LSP注冊表配置注冊表數(shù)據(jù)上進(jìn)行注冊表重定向第一種方式在應(yīng)用層(ring 3)對指定或者全部進(jìn)程進(jìn)行注冊表操作API函數(shù)的掛鉤;第二種方式在驅(qū)動(dòng)層(ring 0)通過掛鉤注冊表操作的系統(tǒng)調(diào)用或者使用系統(tǒng)提供的CmCallback注冊表回調(diào)例程。另外本發(fā)明還提供了一種包括上述注冊表重定向裝置的計(jì)算機(jī)處理系統(tǒng),該計(jì)算機(jī)處理系統(tǒng)還包括有WinSock初始化啟動(dòng)裝置,用于啟動(dòng)應(yīng)用程序初始化WinSock。下面是本發(fā)明方案的一個(gè)具體應(yīng)用舉例,仍以transport provider為例。圖4為本發(fā)明注冊表重定向方法的一種具體應(yīng)用場景流程圖。參照圖4,首先,在步驟S400,應(yīng)用程序啟動(dòng),從所在的Windows系統(tǒng)的LSP注冊表中讀取例如編號為1020、1021、1022、1017、1018的5個(gè)LSP鏈,在此僅以舉例的方式列舉了 5個(gè)LSP鏈,LSP鏈的名稱及數(shù)量可根據(jù)實(shí)際應(yīng)用進(jìn)行變化。在步驟S410,根據(jù)應(yīng)用程序的配置信息判斷所讀取的5個(gè)LSP鏈?zhǔn)欠癜ㄒ黄帘蔚逆湥绻谠摬襟E判斷出未包括要被屏蔽的鏈,則在步驟S420,指定應(yīng)用程序讀取原始的LSP注冊表。如果在步驟S410判斷出LSP注冊表中包括需要被屏蔽的DLL,例如,判斷出要屏蔽TSFilter. dll這個(gè)容易導(dǎo)致程序崩潰的DLL,則在步驟S430從上述5個(gè)鏈中刪除了 TSFilter. dll這個(gè)LSP后,變?yōu)?個(gè)鏈。其中1022這個(gè)鏈,因?yàn)閯h除了動(dòng)態(tài)鏈接庫TSFilter. dll后,鏈中只剩下操作系統(tǒng)提供的mswsock. dl I,故將此鏈全部抹掉。然后在步驟S440,將新的LSP鏈數(shù)據(jù)存入新的注冊表位置HKEY_L0CAL_MACHINE\Sof tware\360\ffinSock2\Parameters\Protoco1_Catalog9。在此僅以舉例的方式描述了刪除動(dòng)態(tài)鏈接庫TSFilter. dll及其所在的鏈1022,當(dāng)然在實(shí)際應(yīng)用中,在刪除DLL的同時(shí),可根據(jù)實(shí)際情況來刪除其所在的鏈或者也可保留其所在的鏈。在步驟S450,在應(yīng)用層掛鉤RegOpenKeyEx OAPI函數(shù),或者在驅(qū)動(dòng)層NtOpenKey ()系統(tǒng)調(diào)用。當(dāng)指定的應(yīng)用程序即將讀取原有注冊表HKEY_LOCAL_MACHINE\SYSTEM\CurrentContro I Set\Services\ffinSock2\Parameters\Protocol_Catalog9 時(shí),讓其讀取新的注冊表HKEY_LOCAL_MACHINE\Sof tware\360\ffinSock2\Parameters\Protoco1_Catalog9。從而使得指定的應(yīng)用程序不會(huì)加載TSFilter.dll,并且網(wǎng)絡(luò)通信正常。本發(fā)明實(shí)施例中,由于既可以屏蔽指定的LSP DLL,也可以屏蔽Windows系統(tǒng)中的全部LSP DLL,既可以屏蔽指定進(jìn)程中的LSP DLL,也可以屏蔽所有進(jìn)程中的LSP DLL,對于采用哪種屏蔽方式,主要取決于應(yīng)用程序的開發(fā)商的屏蔽策略,屏蔽策略通過應(yīng)用程序的LSP屏蔽配置注冊表數(shù)據(jù)來實(shí)現(xiàn)。具有很大的靈活性,從而允許應(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ā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式
的權(quán)利要求書由此明確地并入該具體實(shí)施方式
,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。本領(lǐng)域那些技術(shù)人員可以理解,可以對實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們設(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來代替。此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來使用。本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號處理器(DSP)來實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的通過注冊表重定向屏蔽特定LSP DLL的裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序應(yīng)用程序)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。應(yīng)該注意的是上述實(shí)施例對本發(fā)明進(jìn)行說明而不是對本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包括”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過同一個(gè)硬件項(xiàng)來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
權(quán)利要求
1.一種注冊■表重定向方法,其特征在于,包括 加載應(yīng)用程序的配置列表; 根據(jù)所加載的配置列表中的配置信息來判斷LSP配置注冊表數(shù)據(jù)中是否包括需要屏蔽的 LSP DLL ; 應(yīng)用程序啟動(dòng)吋,從所述LSP配置注冊表讀取其中的LSP鏈,并確定每個(gè)LSP鏈中是否包括所述配置列表中需要被屏蔽的LSP DLL ; 如果包括,則將該LSP DLL的信息從LSP配置注冊表數(shù)據(jù)中刪除,構(gòu)造出新的LSP配置注冊表數(shù)據(jù); 將對LSP配置注冊表數(shù)據(jù)的操作重定向到新建的LSP注冊表配置注冊表數(shù)據(jù)上。
2.根據(jù)權(quán)利要求2所述的方法,包括根據(jù)所述配置列表中的LSPDLL的特征信息來判斷LSP配置列表數(shù)據(jù)中是否包括需要被屏蔽的LSP DLL。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述特征信息為DLL/ΕΧΕ的文件名、DLL/EXE的公司名、原始文件名或者產(chǎn)品名稱,所述特征信息從DLL/ΕΧΕ的版本信息中獲得。
4.根據(jù)權(quán)利要求2或3所述的方法,其特征在于,該方法進(jìn)ー步包括0如果LSP配置注冊表數(shù)據(jù)與所述配置列表需要被屏蔽的LSP DLL的特征信息相匹配,則判斷該LSP配置注冊表中包括需要被屏蔽的LSP DLL。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,該方法進(jìn)ー步包括如果在所讀取的LSP鏈中包括需要被屏蔽的LSP DLL,則刪除該LSP DLL,和/或 在所讀取的LSP鏈中刪除所述LSP DLL之后,進(jìn)ー步判斷該LSP DLL所在的LSP鏈?zhǔn)欠裥枰獎(jiǎng)h除,如果需要,則刪除該LSP鏈。
6.根據(jù)權(quán)利要求4所述的方法,其特征在于,該方法進(jìn)ー步包括,在刪除需要被屏蔽的所述LSP DLL之后,將得到的新的LSP鏈數(shù)據(jù)存儲(chǔ)到新的注冊表位置,并將原LSP鏈數(shù)據(jù)仍保留在原注冊表位置。
7.根據(jù)權(quán)利要求I至6中任一項(xiàng)所述的方法,其中,所述重定向?yàn)楫?dāng)應(yīng)用程序即將讀取原有的注冊表位置時(shí),使其讀取新的注冊表位置,所述注冊表位置是文件路徑。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,該方法進(jìn)ー步包括通過在應(yīng)用層對注冊表操作API函數(shù)進(jìn)行掛鉤,或者通過在驅(qū)動(dòng)層掛鉤注冊表操作的系統(tǒng)調(diào)用來實(shí)現(xiàn)讀取新的注冊■表位置。
9.如權(quán)利要求2所述的方法,其特征在于,重定向操作包括在應(yīng)用層對指定或者全部進(jìn)程進(jìn)行注冊表操作API函數(shù)的掛鉤;和或,在驅(qū)動(dòng)層通過掛鉤注冊表操作的系統(tǒng)調(diào)用或者使用系統(tǒng)提供的注冊表回調(diào)例程。
10.ー種計(jì)算機(jī)處理系統(tǒng),包括 初始化啟動(dòng)裝置,用于啟動(dòng)應(yīng)用程序初始化操作系統(tǒng)通信接ロ ; 注冊表重定向裝置,用于基于操作系統(tǒng)的LSP配置注冊表數(shù)據(jù),刪除其中需要屏蔽的LSP DLL信息后,構(gòu)造新的LSP配置注冊表數(shù)據(jù),將應(yīng)用程序初始化WinSock時(shí)讀取LSP配置的注冊表操作重定向到該新的LSP配置注冊表數(shù)據(jù)上,使得應(yīng)用程序不加載要屏蔽的LSP DLL。
11.根據(jù)權(quán)利要求10所述的計(jì)算機(jī)處理系統(tǒng),其中注冊表重定向裝置進(jìn)ー步包括 配置列表加載模塊,用于加載應(yīng)用程序的配置信息;判斷模塊,根據(jù)所加載的配置信息判斷LSP配置注冊表數(shù)據(jù)中是否包括需要屏蔽的LSP DLL,如果包括,則將該LSP DLL的信息從LSP配置注冊表數(shù)據(jù)中刪除,構(gòu)造出新的LSP配置注冊表數(shù)據(jù); 重定向執(zhí)行模塊,將對LSP配置注冊表數(shù)據(jù)的操作重定向到新建的LSP注冊表配置數(shù)據(jù)上。
12.根據(jù)權(quán)利要求11所述的計(jì)算機(jī)處理系統(tǒng),其中,該注冊表重定向裝置裝置進(jìn)ー步包括數(shù)據(jù)讀取模塊,用于應(yīng)用程序啟動(dòng)吋,從所述LSP配置注冊表讀取其中的LSP鏈,并確定每個(gè)LSP鏈中是否包括所述配置列表中需要被屏蔽的LSP DLL。
全文摘要
本發(fā)明公開了一種注冊表重定向方法和計(jì)算機(jī)處理系統(tǒng),該計(jì)算機(jī)處理系統(tǒng)包括初始化啟動(dòng)裝置,用于啟動(dòng)應(yīng)用程序初始化操作系統(tǒng)通信接口;注冊表重定向裝置,用于基于操作系統(tǒng)的LSP配置注冊表數(shù)據(jù),刪除其中需要屏蔽的LSP DLL信息后,構(gòu)造新的LSP配置注冊表數(shù)據(jù),將應(yīng)用程序初始化WinSock時(shí)讀取LSP配置的注冊表操作重定向到該新的LSP配置注冊表數(shù)據(jù)上,使得應(yīng)用程序不加載要屏蔽的LSP DLL。利用本發(fā)明的技術(shù)方案,通過利用注冊表重定向機(jī)制,針對Windows系統(tǒng)中的特定或全部進(jìn)程屏蔽特定或者全部的LSP DLL,避免這些LSP DLL加載到進(jìn)程中,提高應(yīng)用程序的穩(wěn)定性和安全性。
文檔編號G06F9/44GK102981874SQ20121046089
公開日2013年3月20日 申請日期2012年11月15日 優(yōu)先權(quán)日2012年11月15日
發(fā)明者張波 申請人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司