本發(fā)明涉及計(jì)算機(jī)
技術(shù)領(lǐng)域:
,尤其涉及一種監(jiān)控程序的方法及裝置。
背景技術(shù):
:在現(xiàn)有技術(shù)中,出于對(duì)性能的考慮,設(shè)備中的主動(dòng)防御模塊只檢查程序的可執(zhí)行文件(例如,exe文件)是否可以信任,而不檢查程序加載的DLL(DynamicLinkLibrary,動(dòng)態(tài)鏈接庫(kù))文件。DLL注入是指將一個(gè)DLL放進(jìn)某個(gè)進(jìn)程的地址空間里,讓它成為那個(gè)進(jìn)程的一部分?,F(xiàn)有技術(shù)中主動(dòng)防御的上述特點(diǎn)被一些惡意程序所利用,惡意程序使用DLL注入技術(shù)將木馬DLL與可信任的白程序打包在一起,當(dāng)白程序被執(zhí)行時(shí),木馬DLL就會(huì)被加載,從而實(shí)現(xiàn)利用白程序突破主動(dòng)防御的目的?,F(xiàn)有技術(shù)存在利用插樁工具實(shí)現(xiàn)對(duì)可疑程序DLL注入代碼的提取,其前提是要有DLL注入代碼,大多數(shù)情況下,我們只有正常進(jìn)程即被監(jiān)控的進(jìn)程,這種情況該檢測(cè)方式就不起作用了。插樁是在保證被測(cè)程序原有邏輯完整性的基礎(chǔ)上在程序中插入一些探針(又稱為“探測(cè)儀”),通過(guò)探針的執(zhí)行并拋出程序運(yùn)行的特征數(shù)據(jù),通過(guò)對(duì)這些數(shù)據(jù)的分析,可以獲得程序的控制流和數(shù)據(jù)流信息,進(jìn)而得到邏輯覆蓋等動(dòng)態(tài)信息,從而實(shí)現(xiàn)測(cè)試目的的方法。另外,現(xiàn)有技術(shù)對(duì)可疑程序執(zhí)行的每個(gè)API都進(jìn)行插樁監(jiān)控,而一個(gè)程序API數(shù)量眾多,受限于插樁工具的效率,該方法效率及低,實(shí)用性能太差。其中,API(ApplicationProgrammingInterface,應(yīng)用程序編程接口)是一些預(yù)先定義的函數(shù)。技術(shù)實(shí)現(xiàn)要素:本發(fā)明提供了一種監(jiān)控程序的方法和裝置,以至少解決在預(yù)先沒(méi)有獲取注入代碼的前提下,主動(dòng)監(jiān)控程序中是否發(fā)生DLL注入,并判斷注入類型及是否為惡意注入。根據(jù)本發(fā)明的一個(gè)方面,提供了一種監(jiān)控程序的方法,包括:確定被監(jiān)控程序;加載被監(jiān)控程序;在運(yùn)行被監(jiān)控程序時(shí),對(duì)被監(jiān)控程序調(diào)用的每個(gè)應(yīng)用程序編程接口API函數(shù)插樁;獲取所述API函數(shù)的函數(shù)名;根據(jù)所述API函數(shù)的函數(shù)名判斷所述API函數(shù)是否滿足預(yù)設(shè)的判斷邏輯;若是,則判定被監(jiān)控程序發(fā)生動(dòng)態(tài)鏈接庫(kù)DLL注入;根據(jù)預(yù)設(shè)的檢測(cè)邏輯檢測(cè)所述DLL注入的注入類型;獲取注入到被監(jiān)控程序的DLL模塊的注入信息;所述注入信息包括滿足預(yù)設(shè)的判斷邏輯的API函數(shù)的參數(shù)、函數(shù)名、模塊名稱和堆棧信息。根據(jù)本發(fā)明的另一方面,提供了一種監(jiān)控程序的裝置,包括:確定模塊,用于確定被監(jiān)控程序;加載模塊,用于加載被監(jiān)控程序;插樁模塊,用于在運(yùn)行被監(jiān)控程序時(shí),對(duì)被監(jiān)控程序調(diào)用的的每個(gè)應(yīng)用程序編程接口API函數(shù)插樁;函數(shù)名獲取模塊,用于獲取所述API函數(shù)的函數(shù)名;注入判斷模塊,用于根據(jù)所述API函數(shù)的函數(shù)名判斷所述API函數(shù)是否滿足預(yù)設(shè)的判斷邏輯;若是,則判定被監(jiān)控程序發(fā)生動(dòng)態(tài)鏈接庫(kù)DLL注入;注入類型獲取模塊,用于根據(jù)預(yù)設(shè)的檢測(cè)邏輯檢測(cè)所述DLL注入的注入類型;注入信息獲取模塊,用于獲取注入到被監(jiān)控程序的DLL模塊的注入信息;所述注入信息包括滿足預(yù)設(shè)的判斷邏輯的API函數(shù)的參數(shù)、函數(shù)名、模塊名稱和堆棧信息。根據(jù)本發(fā)明的一種監(jiān)控程序的方法及裝置,通過(guò)確定被監(jiān)控程序;加載被監(jiān)控程序;在運(yùn)行被監(jiān)控程序時(shí),對(duì)被監(jiān)控程序調(diào)用的每個(gè)應(yīng)用程序編程接口API函數(shù)插樁;獲取所述API函數(shù)的函數(shù)名;根據(jù)所述API函數(shù)的函數(shù)名判斷所述API函數(shù)是否滿足預(yù)設(shè)的判斷邏輯;若是,則判定被監(jiān)控程序發(fā)生動(dòng)態(tài)鏈接庫(kù)DLL注入;根據(jù)預(yù)設(shè)的檢測(cè)邏輯檢測(cè)所述DLL注入的注入類型;獲取注入到被監(jiān)控程序的DLL模塊的注入信息;所述注入信息包括滿足預(yù)設(shè)的判斷邏輯的API函數(shù)的參數(shù)、函數(shù)名、模塊名稱和堆棧信息。本發(fā)明能夠有效判斷被監(jiān)控程序是否被注入DLL模塊,何時(shí)被注入,以及注入方式,實(shí)現(xiàn)了對(duì)注入代碼的提取和注入類型的判斷。采用本發(fā)明預(yù)設(shè)的判斷邏輯,本發(fā)明僅需輸出與判斷邏輯相符的DLL模塊中的API函數(shù)的信息,而對(duì)其他API函數(shù)則不進(jìn)行處理和輸出,從而顯著提高了監(jiān)控效率。另外,在本發(fā)明中,插樁工具可以同時(shí)自動(dòng)對(duì)大批量的程序進(jìn)行監(jiān)控,代碼注入提取,輸出大批日志文件,減少了人工干預(yù),提高了效率。附圖說(shuō)明為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案和優(yōu)點(diǎn),下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單的介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其它附圖。圖1是根據(jù)本發(fā)明實(shí)施例的監(jiān)控程序的方法的計(jì)算機(jī)終端的硬件結(jié)構(gòu)框圖;圖2是根據(jù)本發(fā)明實(shí)施例1的監(jiān)控程序的方法的流程圖;圖3是根據(jù)本發(fā)明實(shí)施例1的步驟S208的流程圖;圖4是根據(jù)本發(fā)明實(shí)施例1的方法的又一流程圖;圖5是根據(jù)本發(fā)明實(shí)施例1的步驟S209的流程圖;圖6是根據(jù)本發(fā)明實(shí)施例1的步驟S209的又一流程圖;圖7是根據(jù)本發(fā)明實(shí)施例2的監(jiān)控程序的裝置的框圖;圖8是根據(jù)本發(fā)明實(shí)施例的計(jì)算機(jī)終端的結(jié)構(gòu)框圖。具體實(shí)施方式為了使本
技術(shù)領(lǐng)域:
的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分的實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。需要說(shuō)明的是,本發(fā)明的說(shuō)明書(shū)和權(quán)利要求書(shū)及上述附圖中的術(shù)語(yǔ)“第一”、“第二”等是用于區(qū)別類似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語(yǔ)“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過(guò)程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒(méi)有清楚地列出的或?qū)τ谶@些過(guò)程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。實(shí)施例1根據(jù)本發(fā)明實(shí)施例,提供了一種監(jiān)控程序的方法的實(shí)施例,需要說(shuō)明的是,在附圖的流程圖示出的步驟可以在諸如一組計(jì)算機(jī)可執(zhí)行指令的計(jì)算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。本申請(qǐng)實(shí)施例1所提供的方法實(shí)施例可以在移動(dòng)終端、計(jì)算機(jī)終端或者類似的運(yùn)算裝置中執(zhí)行。以運(yùn)行在計(jì)算機(jī)終端上為例,圖1是根據(jù)本發(fā)明實(shí)施例的監(jiān)控程序的方法的計(jì)算機(jī)終端的硬件結(jié)構(gòu)框圖。如圖1所示,計(jì)算機(jī)終端100可以包括一個(gè)或多個(gè)(圖中僅示出一個(gè))處理器102(處理器102可以包括但不限于微處理器MCU或可編程邏輯器件FPGA等的處理裝置)、用于存儲(chǔ)數(shù)據(jù)的存儲(chǔ)器104、以及用于通信功能的傳輸裝置106。本領(lǐng)域普通技術(shù)人員可以理解,圖1所示的結(jié)構(gòu)僅為示意,其并不對(duì)上述電子裝置的結(jié)構(gòu)造成限定。例如,計(jì)算機(jī)終端100還可包括比圖2中所示更多或者更少的組件,或者具有與圖1所示不同的配置。存儲(chǔ)器104可用于存儲(chǔ)應(yīng)用軟件的軟件程序以及模塊,如本發(fā)明實(shí)施例中的監(jiān)控程序的方法對(duì)應(yīng)的程序指令/模塊,處理器102通過(guò)運(yùn)行存儲(chǔ)在存儲(chǔ)器104內(nèi)的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理,即實(shí)現(xiàn)上述的監(jiān)控程序的方法。存儲(chǔ)器104可包括高速隨機(jī)存儲(chǔ)器,還可包括非易失性存儲(chǔ)器,如一個(gè)或者多個(gè)磁性存儲(chǔ)裝置、閃存、或者其他非易失性固態(tài)存儲(chǔ)器。在一些實(shí)例中,存儲(chǔ)器104可進(jìn)一步包括相對(duì)于處理器102遠(yuǎn)程設(shè)置的存儲(chǔ)器,這些遠(yuǎn)程存儲(chǔ)器可以通過(guò)網(wǎng)絡(luò)連接至計(jì)算機(jī)終端10。上述網(wǎng)絡(luò)的實(shí)例包括但不限于互聯(lián)網(wǎng)、企業(yè)內(nèi)部網(wǎng)、局域網(wǎng)、移動(dòng)通信網(wǎng)及其組合。傳輸裝置106用于經(jīng)由一個(gè)網(wǎng)絡(luò)接收或者發(fā)送數(shù)據(jù)。上述的網(wǎng)絡(luò)具體實(shí)例可包括計(jì)算機(jī)終端100的通信供應(yīng)商提供的無(wú)線網(wǎng)絡(luò)。在一個(gè)實(shí)例中,傳輸裝置106包括一個(gè)網(wǎng)絡(luò)適配器(NetworkInterfaceController,簡(jiǎn)稱為NIC),其可通過(guò)基站與其他網(wǎng)絡(luò)設(shè)備相連從而可與互聯(lián)網(wǎng)進(jìn)行通訊。在一個(gè)實(shí)例中,傳輸裝置106可以為射頻(RadioFrequency,簡(jiǎn)稱為RF)模塊,其用于通過(guò)無(wú)線方式與互聯(lián)網(wǎng)進(jìn)行通訊。在上述運(yùn)行環(huán)境下,本申請(qǐng)?zhí)峁┝巳鐖D2所示的監(jiān)控程序的方法。該方法可以應(yīng)用于計(jì)算機(jī)終端中,也可以應(yīng)用于智能終端設(shè)備中,由智能終端設(shè)備中的處理器執(zhí)行,智能終端設(shè)備可以是智能手機(jī)、平板電腦等。智能終端設(shè)備中安裝有至少一個(gè)應(yīng)用程序,本發(fā)明實(shí)施例并不限定應(yīng)用程序的種類,可以為系統(tǒng)類應(yīng)用程序,也可以為軟件類應(yīng)用程序。圖2是根據(jù)本發(fā)明實(shí)施例的監(jiān)控程序的方法的流程圖。如圖2所示,該監(jiān)控程序的方法的一種可選的方案包括如下步驟:步驟S201,確定被監(jiān)控程序。本申請(qǐng)中的被監(jiān)控程序可以是EXE(可執(zhí)行文件)也可以是DLL(動(dòng)態(tài)鏈接庫(kù)),泛指任意程序。對(duì)于Windows操作系統(tǒng)來(lái)說(shuō),被監(jiān)控程序是PE文件,PE文件的全稱是PortableExecutable,意為可移植的可執(zhí)行的文件,常見(jiàn)的EXE、DLL、OCX、SYS、COM都是PE文件,PE文件是微軟Windows操作系統(tǒng)上的程序文件(可能是間接被執(zhí)行,如DLL)。步驟S202,加載被監(jiān)控程序。本申請(qǐng)中所述的加載被監(jiān)控程序是指通過(guò)二進(jìn)制動(dòng)態(tài)插樁工具加載被監(jiān)控程序。二進(jìn)制插樁是指在不需要程序的源代碼的情況下,直接對(duì)目標(biāo)程序解碼,在相應(yīng)的位置進(jìn)行插樁工作,這個(gè)過(guò)程由于比較繁瑣,很多插樁工具都將其進(jìn)行封裝起來(lái),直接將接口方便用戶使用。二進(jìn)制插樁發(fā)生在程序運(yùn)行之前叫做靜態(tài)插樁,發(fā)生在程序運(yùn)行中,叫做動(dòng)態(tài)插樁。二進(jìn)制動(dòng)態(tài)插樁工具是指在程序執(zhí)行過(guò)程中,根據(jù)事先設(shè)定好的規(guī)則,對(duì)程序的指令或者其他特征進(jìn)行插樁過(guò)濾等。步驟S203、在運(yùn)行被監(jiān)控程序時(shí),對(duì)被監(jiān)控程序調(diào)用的每個(gè)應(yīng)用程序編程接口API函數(shù)插樁。API(ApplicationProgrammingInterface,應(yīng)用程序編程接口)是一些預(yù)先定義的函數(shù),目的是提供應(yīng)用程序與開(kāi)發(fā)人員基于某軟件或硬件得以訪問(wèn)一組例程的能力,而又無(wú)需訪問(wèn)源碼,或理解內(nèi)部工作機(jī)制的細(xì)節(jié)。在Windows操作系統(tǒng)中,API函數(shù)包含在Windows系統(tǒng)目錄下的動(dòng)態(tài)連接庫(kù)DLL文件中。插樁是在保證被測(cè)程序原有邏輯完整性的基礎(chǔ)上在程序中插入一些探針(又稱為“探測(cè)儀”),探針也稱為監(jiān)控代碼或插樁代碼,通過(guò)探針的執(zhí)行并拋出程序運(yùn)行的特征數(shù)據(jù),通過(guò)對(duì)這些數(shù)據(jù)的分析,可以獲得程序的控制流和數(shù)據(jù)流信息,進(jìn)而得到邏輯覆蓋等動(dòng)態(tài)信息,從而實(shí)現(xiàn)測(cè)試目的的方法。在現(xiàn)有技術(shù)中,為了HOOK(鉤子)其他進(jìn)程,達(dá)到控制目標(biāo)進(jìn)程的目的,常常將準(zhǔn)備好的功能DLL(動(dòng)態(tài)鏈接庫(kù))注入到目標(biāo)進(jìn)程中,這樣就可以躲避各類監(jiān)控軟件,沒(méi)辦法對(duì)其進(jìn)行檢測(cè)。作為一種可選的實(shí)施方式,本申請(qǐng)通過(guò)PIN(PinAPIRecordTool)插樁工具,對(duì)被監(jiān)控程序調(diào)用的每個(gè)API函數(shù)進(jìn)行監(jiān)控。PIN是目前國(guó)內(nèi)外廣泛采用的二進(jìn)制動(dòng)態(tài)插樁工具,其采用JIT(Just-In-Time)編譯,由Intel公司研發(fā)公布,通過(guò)在程序中插入探針實(shí)現(xiàn)對(duì)目標(biāo)進(jìn)程進(jìn)行監(jiān)控的目的。編程接口采用C/C++,支持多個(gè)平臺(tái)(Window、Linux等),擁有多重插樁粒度,大到函數(shù)插樁,小到指令插樁,本申請(qǐng)利用該工具來(lái)檢測(cè)對(duì)被監(jiān)控程序的DLL注入行為。作為一種可選的實(shí)施例,所述在運(yùn)行被監(jiān)控程序時(shí),對(duì)被監(jiān)控程序調(diào)用的的每個(gè)應(yīng)用程序編程接口API函數(shù)插樁,包括:通過(guò)插樁工具對(duì)被監(jiān)控程序的每個(gè)應(yīng)用程序編程接口API函數(shù)的頭部和尾部插入插樁代碼。也就是說(shuō),對(duì)被監(jiān)控程序的每個(gè)API函數(shù)的入口處和返回處插入插樁代碼。由于一個(gè)程序的API數(shù)量眾多,對(duì)每個(gè)應(yīng)用程序編程接口API函數(shù)的每條指令都插樁效率很低。本申請(qǐng)僅在被監(jiān)控程序的API函數(shù)的頭部和尾部插入插樁代碼,也就是僅進(jìn)行函數(shù)插樁,而非指令插樁,能夠極大地提高監(jiān)控效率。以PIN插樁工具為例,本申請(qǐng)中,對(duì)程序進(jìn)行函數(shù)插樁(RTN_InsertCall)監(jiān)控。插樁代碼如下:步驟S204、獲取所述API函數(shù)的函數(shù)名。本申請(qǐng)?jiān)趯?duì)被監(jiān)控程序的API函數(shù)動(dòng)態(tài)插樁時(shí),獲取插樁代碼的輸出值,插樁代碼的輸出值為API函數(shù)的函數(shù)名。但是,值得注意的是,這些插樁代碼的輸出值僅用于后續(xù)的監(jiān)控過(guò)程中的邏輯判斷,只有在滿足預(yù)設(shè)的判斷時(shí),才對(duì)插樁代碼的輸出值進(jìn)行輸出,并進(jìn)一步對(duì)相關(guān)API進(jìn)行插樁,從而極大地提高了程序的監(jiān)控處理效率。步驟S205、根據(jù)所述API函數(shù)的函數(shù)名判斷所述API函數(shù)是否滿足預(yù)設(shè)的判斷邏輯。若是,則執(zhí)行步驟S206。若不是,則判定被監(jiān)控程序沒(méi)有發(fā)生DLL注入。具體來(lái)說(shuō),所述預(yù)設(shè)的判斷邏輯可以為:所述預(yù)設(shè)的判斷邏輯為:檢測(cè)到對(duì)被監(jiān)控程序內(nèi)存寫(xiě)入數(shù)據(jù)后調(diào)用CreateRemoteThread函數(shù)和LoadLibrary函數(shù);或者,檢測(cè)到對(duì)被監(jiān)控程序內(nèi)存寫(xiě)入數(shù)據(jù)后調(diào)用CreateRemoteThreadEx函數(shù)和LoadLibrary函數(shù);或者,檢測(cè)到APC隊(duì)列中調(diào)用LoadLibrary函數(shù),且在所述LoadLibrary函數(shù)調(diào)用之前發(fā)生過(guò)軟中斷。滿足這個(gè)條件可以判定為DLL注入。需要說(shuō)明的是,上述僅是示例性的三種判斷邏輯,本申請(qǐng)中的判斷邏輯并不局限于上述三種判斷邏輯。步驟S206,判定被監(jiān)控程序發(fā)生動(dòng)態(tài)鏈接庫(kù)DLL注入。步驟S207,根據(jù)預(yù)設(shè)的檢測(cè)邏輯檢測(cè)所述DLL注入的注入類型。作為一種可選的實(shí)施例,本申請(qǐng)的上述步驟S207包括:提取滿足預(yù)設(shè)的判斷邏輯的的API函數(shù)的函數(shù)名;若檢測(cè)到對(duì)被監(jiān)控程序內(nèi)存寫(xiě)入數(shù)據(jù)后調(diào)用CreateRemoteThread函數(shù)和LoadLibrary函數(shù),或者檢測(cè)到對(duì)被監(jiān)控程序內(nèi)存寫(xiě)入數(shù)據(jù)后調(diào)用CreateRemoteThreadEx函數(shù)和LoadLibrary函數(shù),則判定所述DLL注入的注入類型為遠(yuǎn)程線程注入;若檢測(cè)到到APC隊(duì)列中調(diào)用LoadLibrary函數(shù),且在所述LoadLibrary函數(shù)執(zhí)行之前發(fā)生過(guò)軟中斷,則判定所述DLL注入的注入類型為異步調(diào)用過(guò)程APC注入。具體來(lái)說(shuō),若在API函數(shù)的調(diào)用序列里檢測(cè)到LoadLibrary函數(shù),且在所述LoadLibrary函數(shù)執(zhí)行之前發(fā)生過(guò)軟中斷,則判定所述DLL注入的注入類型為異步調(diào)用過(guò)程APC注入。本發(fā)明的發(fā)明人通過(guò)對(duì)遠(yuǎn)程線程注入和APC(AsynchronousProcedureCall)的分析研究,得出判定是否發(fā)生DLL注入及注入類型的判斷邏輯。遠(yuǎn)程線程注入方式通過(guò)對(duì)目標(biāo)進(jìn)程內(nèi)存寫(xiě)入數(shù)據(jù)之后會(huì)調(diào)用CreateRemoteThread函數(shù)(或CreateRemoteThreadEx函數(shù))和LoadLibrary函數(shù)兩個(gè)函數(shù),完成DLL注入。所以在API函數(shù)調(diào)用序列里面,滿足這個(gè)條件的就可以判定為DLL注入,且注入方式為遠(yuǎn)程線程注入。APC注入方式是利用線程喚醒時(shí)候APC中的注冊(cè)函數(shù)被執(zhí)行的機(jī)制,通常將LoadLibrary函數(shù)插入線程的APC隊(duì)列。所以在調(diào)用序列里面,會(huì)執(zhí)行LoadLibrary函數(shù),且這個(gè)函數(shù)之前線程產(chǎn)生過(guò)軟中斷,比如調(diào)用SleepEx函數(shù)或者WaitForSingleObjectEx函數(shù)。滿足這個(gè)條件的指令序列可以判定為DLL注入,且注入方式為APC注入。目前有專利利用插樁工具實(shí)現(xiàn)對(duì)注入代碼的提取,其前提是要有注入代碼,大多數(shù)情況下,我們只有正常進(jìn)程即被監(jiān)控的進(jìn)程,這種情況該檢測(cè)方式就不起作用了,本申請(qǐng)旨在解決沒(méi)有惡意代碼的注入判斷,實(shí)用范圍更廣泛。并且,本申請(qǐng)首先根據(jù)所述插樁代碼的輸出值獲取API函數(shù)的調(diào)用序列;其次,判斷所述API函數(shù)的調(diào)用序列是否滿足預(yù)設(shè)的判斷邏輯,若滿足,則判定發(fā)送DLL注入,且進(jìn)一步判斷注入類型。需要說(shuō)明的是,目前的檢測(cè)邏輯中針對(duì)遠(yuǎn)程線程注入和APC兩種注入方式加以分類,僅是示例性的方式,本發(fā)明不局限于上述兩種檢測(cè)邏輯,對(duì)于更多類型的注入方式,均可加入本發(fā)明的檢測(cè)邏輯,從而完善對(duì)DLL注入的檢測(cè)。步驟S208、獲取注入到被監(jiān)控程序的DLL模塊的注入信息;所述注入信息包括滿足預(yù)設(shè)的判斷邏輯的API函數(shù)的參數(shù)、函數(shù)名、模塊名稱和堆棧信息。作為一種可選的實(shí)施例,如圖3所示,步驟S208包括:步驟S301,提取輸出的API函數(shù)的信息。步驟S301、獲取滿足預(yù)設(shè)的判斷邏輯的API函數(shù)的參數(shù)、函數(shù)名、模塊名稱和堆棧信息。步驟S302、定位注入到被監(jiān)控程序的DLL模塊的注入點(diǎn)。定位注入點(diǎn)是指定位LoadLibrary函數(shù)。步驟S303、根據(jù)所述API函數(shù)的參數(shù)、函數(shù)名、模塊名稱和堆棧信息獲取所述注入點(diǎn)的信息。具體來(lái)說(shuō),所述注入點(diǎn)的信息可以包括:LoadLibrary函數(shù)的參數(shù)、內(nèi)存地址、返回值、堆棧信息以及所在模塊的模塊地址。獲取注入到被監(jiān)控程序的DLL模塊的注入點(diǎn)信息和所述注入點(diǎn)的上下文信息后,可將其存儲(chǔ)到日志文件中。本申請(qǐng)只將滿足預(yù)設(shè)的判斷邏輯的API函數(shù)的相關(guān)信息(如,參數(shù),名稱,模塊,堆棧等)存入日志文件中,而對(duì)非DLL注入的API函數(shù)的相關(guān)信息自動(dòng)過(guò)濾,不輸出,從而能夠提高監(jiān)控效率,并節(jié)省系統(tǒng)存儲(chǔ)空間。獲取注入到被監(jiān)控程序的DLL模塊的注入代碼的程序如下:作為一種可選的實(shí)施例,如圖4所示,步驟S208后還包括:步驟S209,跟蹤執(zhí)行注入到被監(jiān)控程序的DLL模塊,提取所述DLL模塊執(zhí)行的API函數(shù)序列,根據(jù)所述API函數(shù)序列判斷注入到被監(jiān)控程序的DLL模塊是否為惡意進(jìn)程。作為一種可選的實(shí)施例,如圖5所示,步驟S209包括:步驟S501,跟蹤執(zhí)行注入到被監(jiān)控程序的DLL模塊。步驟S502,提取所述DLL模塊中的API函數(shù)的函數(shù)名稱和API函數(shù)的調(diào)用序列。步驟S502包括提取注入DLL代碼調(diào)用API函數(shù)的名稱,參數(shù)以及調(diào)用順序。在檢測(cè)到被監(jiān)控程序被DLL注入后,在執(zhí)行注入的DLL模塊時(shí),對(duì)所述DLL模塊中每個(gè)API函數(shù)的頭尾插入的監(jiān)控代碼(插樁代碼),在執(zhí)行所述監(jiān)控代碼時(shí),該監(jiān)控代碼能夠?qū)γ總€(gè)API函數(shù)進(jìn)行記錄,并且將函數(shù)的參數(shù)等信息保存在日志文件中。在對(duì)注入DLL模塊是否惡意進(jìn)行甄別時(shí),從所述日志文件提取所述注入DLL模塊所調(diào)用的API函數(shù)序列,包括:運(yùn)行所述監(jiān)控程序時(shí),注入DLL代碼調(diào)用API函數(shù)的名稱,參數(shù)以及先后順序。值得注意的是,上述步驟S502中,所述API函數(shù)的調(diào)用序列為所述DLL模塊中的全部API函數(shù)組成的調(diào)用序列;或者,所述API函數(shù)的調(diào)用序列為所述DLL模塊中的部分API函數(shù)組成的調(diào)用序列。不同的API函數(shù)的調(diào)用序列可以實(shí)現(xiàn)的功能不同,比如“movefile->shellexecute”,用來(lái)拷貝執(zhí)行文件;再比如“suspendthread->setthreadcontext->resumethread…”,用來(lái)惡意代碼切換執(zhí)行路程。在預(yù)設(shè)的惡意序列庫(kù)中查找所述API函數(shù)的調(diào)用序列,若找到,則判定所述DLL模塊是惡意進(jìn)程;若找不到,則判定所述DLL模塊不是惡意進(jìn)程。步驟S503,查找預(yù)設(shè)的惡意序列庫(kù)中是否存在所述API函數(shù)的調(diào)用序列。若是,則執(zhí)行步驟S504,若否,則執(zhí)行步驟S505。步驟S504,判定所述DLL模塊是惡意進(jìn)程。步驟S505,判定所述DLL模塊不是惡意進(jìn)程。通過(guò)判斷API函數(shù)的調(diào)用序列在預(yù)設(shè)的惡意序列庫(kù)中是否有記錄,若有則判定API函數(shù)序列不合法,若庫(kù)里面沒(méi)有,則API函數(shù)序列合法。預(yù)設(shè)的惡意序列庫(kù)中記錄著全部惡意代碼在被執(zhí)行的時(shí)候可能調(diào)用的API函數(shù)序列。預(yù)設(shè)的惡意序列庫(kù)可以為比如騰訊的哈勃系統(tǒng),由專業(yè)技術(shù)人員維護(hù)更新,該惡意API函數(shù)序列庫(kù)中存儲(chǔ)有現(xiàn)有全部已知的惡意API函數(shù)序列,用于對(duì)計(jì)算機(jī)進(jìn)行破壞。其中,所述惡意API函數(shù)序列庫(kù)記錄的惡意API函數(shù)序列,主要分為以下幾類:(1)修改注冊(cè)表的API函數(shù)序列;比如:“RegOpenKeyEx->RegSetKeyValue…”。(2)訪問(wèn)惡意連接的API函數(shù)序列,或者用于下載惡意程序的API函數(shù)序列。比如:“URLDownloadToFIleA->CreateFile(%temp%xxx.exe,…)->winexec(%temp%/xxx.exe)…”。通過(guò)上述步驟S209,本發(fā)明監(jiān)控注入DLL的API函數(shù)調(diào)用序列,這樣有利于對(duì)注入的代碼進(jìn)行分析,識(shí)別是否存在惡意行為,保證計(jì)算機(jī)安全。作為一種可選的實(shí)施例,如圖6所示,步驟S501后還包括:S506,獲取所述DLL模塊的地址空間和被監(jiān)控程序的地址空間。S507,根據(jù)所述DLL模塊的地址空間和被監(jiān)控程序的地址空間判斷所述DLL模塊是否為注入DLL模塊。采用步驟S506和步驟S507,可以通過(guò)地址空間進(jìn)一步驗(yàn)證所述DLL模塊是否為注入DLL模塊。根據(jù)本發(fā)明的一種監(jiān)控程序的方法,通過(guò)插樁工具對(duì)被監(jiān)控程序的每個(gè)應(yīng)用程序編程接口API函數(shù)進(jìn)行監(jiān)控;運(yùn)行所述被監(jiān)測(cè)程序;判斷被監(jiān)控的API函數(shù)是否滿足預(yù)設(shè)的判斷邏輯;若是,則判定被監(jiān)控程序發(fā)生動(dòng)態(tài)鏈接庫(kù)DLL注入;輸出滿足預(yù)設(shè)的判斷邏輯的API函數(shù)的信息;根據(jù)預(yù)設(shè)的檢測(cè)邏輯檢測(cè)所述DLL注入的注入類型;根據(jù)輸出的API函數(shù)的信息獲取注入到被監(jiān)控程序的DLL模塊的注入信息。本發(fā)明能夠有效判斷被監(jiān)控程序是否被注入DLL模塊,何時(shí)被注入,以及注入方式,實(shí)現(xiàn)了對(duì)注入代碼的提取和注入類型的判斷。采用本發(fā)明預(yù)設(shè)的判斷邏輯,本發(fā)明僅需輸出與判斷邏輯相符的DLL模塊中的API函數(shù)的信息,而對(duì)其他API函數(shù)則不進(jìn)行處理和輸出,從而顯著提高了監(jiān)控效率。另外,在本發(fā)明中,插樁工具可以同時(shí)自動(dòng)對(duì)大批量的程序進(jìn)行監(jiān)控,代碼注入提取,輸出大批日志文件,減少了人工干預(yù),提高了效率。需要說(shuō)明的是,對(duì)于前述的各方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說(shuō)明書(shū)中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到根據(jù)上述實(shí)施例的方法可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)(如ROM/RAM、磁碟、光盤(pán))中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。實(shí)施例2根據(jù)本發(fā)明實(shí)施例,還提供了一種用于實(shí)施上述監(jiān)控程序的方法的裝置。圖7是根據(jù)本發(fā)明第一實(shí)施例的監(jiān)控程序的裝置的示意圖,如圖7所示,該裝置包括:確定模塊701,用于確定被監(jiān)控程序。加載模塊702,用于加載被監(jiān)控程序。插樁模塊703,用于在運(yùn)行被監(jiān)控程序時(shí),對(duì)被監(jiān)控程序調(diào)用的的每個(gè)應(yīng)用程序編程接口API函數(shù)插樁。函數(shù)名獲取模塊704,用于獲取所述API函數(shù)的函數(shù)名。注入判斷模塊705,用于根據(jù)所述API函數(shù)的函數(shù)名判斷所述API函數(shù)是否滿足預(yù)設(shè)的判斷邏輯;若是,則判定被監(jiān)控程序發(fā)生動(dòng)態(tài)鏈接庫(kù)DLL注入;注入類型獲取模塊706,用于根據(jù)預(yù)設(shè)的檢測(cè)邏輯檢測(cè)所述DLL注入的注入類型;注入信息獲取模塊707,用于獲取注入到被監(jiān)控程序的DLL模塊的注入信息;所述注入信息包括滿足預(yù)設(shè)的判斷邏輯的API函數(shù)的參數(shù)、函數(shù)名、模塊名稱和堆棧信息。作為一種可選的實(shí)施例,裝置還包括:惡意注入判斷模塊708,用于跟蹤執(zhí)行注入到被監(jiān)控程序的DLL模塊,提取所述DLL模塊執(zhí)行的API函數(shù)序列,根據(jù)所述API函數(shù)序列判斷注入到被監(jiān)控程序的DLL模塊是否為惡意進(jìn)程。作為一種可選的實(shí)施例,所述插樁模塊703還包括:函數(shù)插樁單元7031,用于對(duì)被監(jiān)控程序的每個(gè)應(yīng)用程序編程接口API函數(shù)的頭部和尾部插入插樁代碼。所述預(yù)設(shè)的判斷邏輯為:檢測(cè)到對(duì)被監(jiān)控程序內(nèi)存寫(xiě)入數(shù)據(jù)后調(diào)用CreateRemoteThread函數(shù)和LoadLibrary函數(shù),或者調(diào)用CreateRemoteThreadEx函數(shù)和LoadLibrary函數(shù);或者,所述預(yù)設(shè)的判斷邏輯為:在API函數(shù)的調(diào)用序列里檢測(cè)到LoadLibrary函數(shù),且在所述LoadLibrary函數(shù)調(diào)用之前發(fā)生過(guò)軟中斷。作為一種可選的實(shí)施例,所述注入類型獲取模塊706包括:第一函數(shù)提取單元7061,用于提取滿足預(yù)設(shè)的判斷邏輯的API函數(shù)的函數(shù)名。第一類型判斷單元7062,用于在檢測(cè)到對(duì)被監(jiān)控程序內(nèi)存寫(xiě)入數(shù)據(jù)后調(diào)用CreateRemoteThread函數(shù)和LoadLibrary函數(shù),或者檢測(cè)到對(duì)被監(jiān)控程序內(nèi)存寫(xiě)入數(shù)據(jù)后調(diào)用CreateRemoteThreadEx函數(shù)和LoadLibrary函數(shù),則判定所述DLL注入的注入類型為遠(yuǎn)程線程注入。第二類型判斷單元7063,用于在檢測(cè)到APC隊(duì)列中調(diào)用LoadLibrary函數(shù),且在所述LoadLibrary函數(shù)執(zhí)行之前發(fā)生過(guò)軟中斷,則判定所述DLL注入的注入類型為異步調(diào)用過(guò)程APC注入。作為一種可選的實(shí)施例,所述注入信息獲取模塊707包括:函數(shù)信息獲取模塊7071,用于獲取滿足預(yù)設(shè)的判斷邏輯的API函數(shù)的參數(shù)、函數(shù)名、模塊名稱和堆棧信息。注入點(diǎn)定位模塊7072,用于定位注入到被監(jiān)控程序的DLL模塊的注入點(diǎn)。注入點(diǎn)信息獲取模塊7073,用于根據(jù)所述API函數(shù)的參數(shù)、函數(shù)名、模塊名稱和堆棧信息獲取所述注入點(diǎn)的信息。作為一種可選的實(shí)施例,所述惡意注入判斷模塊708包括:跟蹤單元7081,用于跟蹤執(zhí)行注入到被監(jiān)控程序的DLL模塊;提取單元7082,用于提取所述DLL模塊中的API函數(shù)的函數(shù)名稱和API函數(shù)的調(diào)用序列;惡意注入判定單元7083,用于在預(yù)設(shè)的惡意序列庫(kù)中查找所述API函數(shù)的調(diào)用序列,若找到,則判定所述DLL模塊是惡意進(jìn)程;若找不到,則判定所述DLL模塊不是惡意進(jìn)程。作為一種可選的實(shí)施例,所述惡意注入判斷模塊708還包括:地址空間獲取單元7084,用于獲取所述DLL模塊的地址空間和被監(jiān)控程序的地址空間;地址空間判斷單元7085,用于根據(jù)所述DLL模塊的地址空間和被監(jiān)控程序的地址空間判斷所述DLL模塊是否為注入DLL模塊。根據(jù)本發(fā)明的一種監(jiān)控程序的裝置,通過(guò)確定被監(jiān)控程序;加載被監(jiān)控程序;在運(yùn)行被監(jiān)控程序時(shí),對(duì)被監(jiān)控程序調(diào)用的每個(gè)應(yīng)用程序編程接口API函數(shù)插樁;獲取所述API函數(shù)的函數(shù)名;根據(jù)所述API函數(shù)的函數(shù)名判斷所述API函數(shù)是否滿足預(yù)設(shè)的判斷邏輯;若是,則判定被監(jiān)控程序發(fā)生動(dòng)態(tài)鏈接庫(kù)DLL注入;根據(jù)預(yù)設(shè)的檢測(cè)邏輯檢測(cè)所述DLL注入的注入類型;獲取注入到被監(jiān)控程序的DLL模塊的注入信息;所述注入信息包括滿足預(yù)設(shè)的判斷邏輯的API函數(shù)的參數(shù)、函數(shù)名、模塊名稱和堆棧信息。本發(fā)明能夠有效判斷被監(jiān)控程序是否被注入DLL模塊,何時(shí)被注入,以及注入方式,實(shí)現(xiàn)了對(duì)注入代碼的提取和注入類型的判斷。采用本發(fā)明預(yù)設(shè)的判斷邏輯,本發(fā)明僅需輸出與判斷邏輯相符的DLL模塊中的API函數(shù)的信息,而對(duì)其他API函數(shù)則不進(jìn)行處理和輸出,從而顯著提高了監(jiān)控效率。另外,在本發(fā)明中,插樁工具可以同時(shí)自動(dòng)對(duì)大批量的程序進(jìn)行監(jiān)控,代碼注入提取,輸出大批日志文件,減少了人工干預(yù),提高了效率。實(shí)施例3本發(fā)明的實(shí)施例還提供了一種存儲(chǔ)介質(zhì)??蛇x地,在本實(shí)施例中,上述存儲(chǔ)介質(zhì)可以用于保存上述實(shí)施例一種監(jiān)控程序的方法所執(zhí)行的程序代碼??蛇x地,在本實(shí)施例中,存儲(chǔ)介質(zhì)被設(shè)置為存儲(chǔ)用于執(zhí)行以下步驟的程序代碼:第一步,確定被監(jiān)控程序。第二步,加載被監(jiān)控程序。第三步,在運(yùn)行被監(jiān)控程序時(shí),對(duì)被監(jiān)控程序調(diào)用的每個(gè)應(yīng)用程序編程接口API函數(shù)插樁。第四步,獲取所述API函數(shù)的函數(shù)名。第五步,根據(jù)所述API函數(shù)的函數(shù)名判斷所述API函數(shù)是否滿足預(yù)設(shè)的判斷邏輯。第六步,若是,則判定被監(jiān)控程序發(fā)生動(dòng)態(tài)鏈接庫(kù)DLL注入。第七步,根據(jù)預(yù)設(shè)的檢測(cè)邏輯檢測(cè)所述DLL注入的注入類型。第八步,獲取注入到被監(jiān)控程序的DLL模塊的注入信息;所述注入信息包括滿足預(yù)設(shè)的判斷邏輯的API函數(shù)的參數(shù)、函數(shù)名、模塊名稱和堆棧信息??蛇x地,本實(shí)施例中的具體示例可以參考上述實(shí)施例1和實(shí)施例2中所描述的示例,本實(shí)施例在此不再贅述。可選地,在本實(shí)施例中,上述存儲(chǔ)介質(zhì)可以包括但不限于:U盤(pán)、只讀存儲(chǔ)器(ROM,Read-OnlyMemory)、隨機(jī)存取存儲(chǔ)器(RAM,RandomAccessMemory)、移動(dòng)硬盤(pán)、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。實(shí)施例4本發(fā)明的實(shí)施例還提供一種計(jì)算機(jī)終端,該計(jì)算機(jī)終端可以是計(jì)算機(jī)終端群中的任意一個(gè)計(jì)算機(jī)終端設(shè)備。受限于插樁工具的平臺(tái),本申請(qǐng)的方法主要應(yīng)用于PC端或服務(wù)器端??蛇x地,圖8是根據(jù)本發(fā)明實(shí)施例的計(jì)算機(jī)終端的結(jié)構(gòu)框圖。如圖8所示,該計(jì)算機(jī)終端A可以包括:一個(gè)或多個(gè)(圖中僅示出一個(gè))處理器161和存儲(chǔ)器163。其中,存儲(chǔ)器163可用于存儲(chǔ)軟件程序以及模塊,如本發(fā)明實(shí)施例中的監(jiān)控程序的方法和裝置對(duì)應(yīng)的程序指令/模塊,處理器161通過(guò)運(yùn)行存儲(chǔ)在存儲(chǔ)器163內(nèi)的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理,即實(shí)現(xiàn)上述的監(jiān)控程序的。存儲(chǔ)器163可包括高速隨機(jī)存儲(chǔ)器,還可以包括非易失性存儲(chǔ)器,如一個(gè)或者多個(gè)磁性存儲(chǔ)裝置、閃存、或者其他非易失性固態(tài)存儲(chǔ)器。在一些實(shí)例中,存儲(chǔ)器163可進(jìn)一步包括相對(duì)于處理器161遠(yuǎn)程設(shè)置的存儲(chǔ)器,這些遠(yuǎn)程存儲(chǔ)器可以通過(guò)網(wǎng)絡(luò)連接至計(jì)算機(jī)終端A。其中,具體地,存儲(chǔ)器163用于存儲(chǔ)預(yù)設(shè)動(dòng)作條件和預(yù)設(shè)權(quán)限用戶的信息、以及應(yīng)用程序。處理器161可以通過(guò)傳輸裝置調(diào)用存儲(chǔ)器163存儲(chǔ)的信息及應(yīng)用程序,以執(zhí)行下述步驟:可選的,上述處理器161還可以執(zhí)行如下步驟的程序代碼:第一步,確定被監(jiān)控程序。第二步,加載被監(jiān)控程序。第三步,在運(yùn)行被監(jiān)控程序時(shí),對(duì)被監(jiān)控程序調(diào)用的每個(gè)應(yīng)用程序編程接口API函數(shù)插樁。第四步,獲取所述API函數(shù)的函數(shù)名。第五步,根據(jù)所述API函數(shù)的函數(shù)名判斷所述API函數(shù)是否滿足預(yù)設(shè)的判斷邏輯。第六步,若是,則判定被監(jiān)控程序發(fā)生動(dòng)態(tài)鏈接庫(kù)DLL注入。第七步,根據(jù)預(yù)設(shè)的檢測(cè)邏輯檢測(cè)所述DLL注入的注入類型。第八步,獲取注入到被監(jiān)控程序的DLL模塊的注入信息;所述注入信息包括滿足預(yù)設(shè)的判斷邏輯的API函數(shù)的參數(shù)、函數(shù)名、模塊名稱和堆棧信息。可選地,本實(shí)施例中的具體示例可以參考上述實(shí)施例1和實(shí)施例2中所描述的示例,本實(shí)施例在此不再贅述。上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。上述實(shí)施例中的集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在上述計(jì)算機(jī)可讀取的存儲(chǔ)介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)或多臺(tái)計(jì)算機(jī)設(shè)備(可為個(gè)人計(jì)算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。在本發(fā)明的上述實(shí)施例中,對(duì)各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒(méi)有詳述的部分,可以參見(jiàn)其他實(shí)施例的相關(guān)描述。在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的客戶端,可通過(guò)其它的方式實(shí)現(xiàn)。其中,以上所描述的裝置實(shí)施例僅僅是示意性的,例如所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本
技術(shù)領(lǐng)域:
的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。當(dāng)前第1頁(yè)1 2 3