本發(fā)明涉及信息處理技術(shù)領(lǐng)域,具體而言,涉及一種檢測(cè)swf文件調(diào)用者的方法、裝置、服務(wù)端及客戶端。
背景技術(shù):
目前,flash被廣泛的用于網(wǎng)頁(yè)設(shè)計(jì)和網(wǎng)頁(yè)動(dòng)畫(huà)制作及網(wǎng)頁(yè)視頻播放等。大多數(shù)的視頻網(wǎng)站包括直播網(wǎng)站都采用flash作為其視頻播放器,并且大多數(shù)的網(wǎng)頁(yè)游戲也會(huì)使用flash來(lái)開(kāi)發(fā),flash的開(kāi)發(fā)是使用actionscript腳本語(yǔ)言來(lái)開(kāi)發(fā)。由于其腳本語(yǔ)言的特性,導(dǎo)致其非常容易被反編譯,從而可以從最終發(fā)布的swf文件(flash的執(zhí)行文件)中反編譯查看其源碼,并尋找其各個(gè)功能接口及接口的使用方法。同時(shí)由于flash具有反射機(jī)制的原理,從而可以從最終發(fā)布的swf文件中獲取到swf文件的所有接口,通過(guò)反射機(jī)制可以調(diào)用其接口功能,第三方程序則可以直接使用該swf的功能,從而使得flash極其不安全。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種檢測(cè)swf文件調(diào)用者的方法、裝置、服務(wù)端及客戶端,用以改善上述問(wèn)題。
為了實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例采用的技術(shù)方案如下:
第一方面,本發(fā)明提供了一種檢測(cè)swf文件調(diào)用者的方法,應(yīng)用于服務(wù)端以及與服務(wù)端通信連接的客戶端。所述方法包括:服務(wù)端獲取swc庫(kù)文件,并將swc庫(kù)文件加入swf文件中;服務(wù)端基于客戶端的文件獲取請(qǐng)求,將swf文件發(fā)送至客戶端;客戶端獲取swf文件,當(dāng)swf文件被客戶端的應(yīng)用程序運(yùn)行時(shí),客戶端通過(guò)swc庫(kù)文件來(lái)獲取swf文件的運(yùn)行環(huán)境信息;客戶端將運(yùn)行環(huán)境信息發(fā)送至服務(wù)端;服務(wù)端獲取運(yùn)行環(huán)境信息,并根據(jù)運(yùn)行環(huán)境信息檢測(cè)swf文件的調(diào)用者。
第二方面,本發(fā)明提供了一種檢測(cè)swf文件調(diào)用者的方法,應(yīng)用于與客戶端通信連接的服務(wù)端。所述方法包括:獲取swc庫(kù)文件,并將swc庫(kù)文件加入swf文件中;基于客戶端的文件獲取請(qǐng)求,將swf文件發(fā)送至客戶端;獲取客戶端發(fā)送的swf文件的運(yùn)行環(huán)境信息,其中,運(yùn)行環(huán)境信息通過(guò)swc庫(kù)文件在swf文件被客戶端的應(yīng)用程序運(yùn)行時(shí)獲?。桓鶕?jù)運(yùn)行環(huán)境信息檢測(cè)swf文件的調(diào)用者。
第三方面,本發(fā)明提供了一種檢測(cè)swf文件調(diào)用者的方法,應(yīng)用于與服務(wù)端通信連接的客戶端。所述方法包括:基于文件獲取請(qǐng)求,從服務(wù)端獲取包含有swc庫(kù)文件的swf文件;當(dāng)swf文件被客戶端的應(yīng)用程序運(yùn)行時(shí),swc庫(kù)文件獲取swf文件的運(yùn)行環(huán)境信息;將運(yùn)行環(huán)境信息發(fā)送至服務(wù)端,以使服務(wù)端根據(jù)運(yùn)行環(huán)境信息檢測(cè)swf文件的調(diào)用者。
第四方面,本發(fā)明提供了一種檢測(cè)swf文件調(diào)用者的裝置,應(yīng)用于與客戶端通信連接的服務(wù)端。所述裝置包括swc庫(kù)文件獲取模塊、發(fā)送模塊、第一執(zhí)行模塊及調(diào)用者檢測(cè)模塊。其中,swc庫(kù)文件獲取模塊用于獲取swc庫(kù)文件,并將swc庫(kù)文件加入swf文件中;發(fā)送模塊用于基于客戶端的文件獲取請(qǐng)求,將swf文件發(fā)送至客戶端;第一執(zhí)行模塊用于獲取客戶端發(fā)送的swf文件的運(yùn)行環(huán)境信息,其中,運(yùn)行環(huán)境信息通過(guò)swc庫(kù)文件在swf文件被客戶端的應(yīng)用程序運(yùn)行時(shí)獲取;調(diào)用者檢測(cè)模塊用于根據(jù)運(yùn)行環(huán)境信息檢測(cè)swf文件的調(diào)用者。
第五方面,本發(fā)明提供了一種檢測(cè)swf文件調(diào)用者的裝置,應(yīng)用于與服務(wù)端通信連接的客戶端。所述裝置包括swf文件獲取模塊、第二執(zhí)行模塊、運(yùn)行環(huán)境信息發(fā)送模塊。其中,swf文件獲取模塊用于基于文件獲取請(qǐng)求,從服務(wù)端獲取包含有swc庫(kù)文件的swf文件;第二執(zhí)行模塊用于當(dāng)swf文件被客戶端的應(yīng)用程序運(yùn)行時(shí),swc庫(kù)文件獲取swf文件的運(yùn)行環(huán)境信息;運(yùn)行環(huán)境信息發(fā)送模塊用于將運(yùn)行環(huán)境信息發(fā)送至服務(wù)端,以使服務(wù)端根據(jù)運(yùn)行環(huán)境信息檢測(cè)swf文件的調(diào)用者。
第六方面,本發(fā)明提供了一種服務(wù)端,所述服務(wù)端與客戶端通信連接,其包括第一存儲(chǔ)器、第一處理器、以及檢測(cè)swf文件調(diào)用者的裝置,所述檢測(cè)swf文件調(diào)用者的裝置安裝于所述第一存儲(chǔ)器中并包括一個(gè)或多個(gè)由所述第一處理器執(zhí)行的軟件功能模組。所述檢測(cè)swf文件調(diào)用者的裝置包括swc庫(kù)文件獲取模塊、發(fā)送模塊、第一執(zhí)行模塊及調(diào)用者檢測(cè)模塊。其中,swc庫(kù)文件獲取模塊用于獲取swc庫(kù)文件,并將swc庫(kù)文件加入swf文件中;發(fā)送模塊用于基于客戶端的文件獲取請(qǐng)求,將swf文件發(fā)送至客戶端;第一執(zhí)行模塊用于獲取客戶端發(fā)送的swf文件的運(yùn)行環(huán)境信息,其中,運(yùn)行環(huán)境信息通過(guò)swc庫(kù)文件在swf文件被客戶端的應(yīng)用程序運(yùn)行時(shí)獲取;調(diào)用者檢測(cè)模塊用于根據(jù)運(yùn)行環(huán)境信息檢測(cè)swf文件的調(diào)用者。
第七方面,本發(fā)明提供了一種客戶端,所述客戶端與服務(wù)端通信連接,其包括第二存儲(chǔ)器、第二處理器、以及檢測(cè)swf文件調(diào)用者的裝置,所述檢測(cè)swf文件調(diào)用者的裝置安裝于所述第二存儲(chǔ)器中并包括一個(gè)或多個(gè)由所述第二處理器執(zhí)行的軟件功能模組。所述檢測(cè)swf文件調(diào)用者的裝置包括swf文件獲取模塊、第二執(zhí)行模塊、運(yùn)行環(huán)境信息發(fā)送模塊。其中,swf文件獲取模塊用于基于文件獲取請(qǐng)求,從服務(wù)端獲取包含有swc庫(kù)文件的swf文件;第二執(zhí)行模塊用于當(dāng)swf文件被客戶端的應(yīng)用程序運(yùn)行時(shí),swc庫(kù)文件獲取swf文件的運(yùn)行環(huán)境信息;運(yùn)行環(huán)境信息發(fā)送模塊用于將運(yùn)行環(huán)境信息發(fā)送至服務(wù)端,以使服務(wù)端根據(jù)運(yùn)行環(huán)境信息檢測(cè)swf文件的調(diào)用者。
相對(duì)現(xiàn)有技術(shù),本發(fā)明具有以下有益效果:本發(fā)明提供的一種檢測(cè)swf文件調(diào)用者的方法、裝置、服務(wù)端及客戶端,首先,服務(wù)端將swc庫(kù)文件加入swf文件中,其次,客戶端從服務(wù)端獲取swf文件,當(dāng)swf文件被客戶端的應(yīng)用程序運(yùn)行時(shí),客戶端通過(guò)swc庫(kù)文件來(lái)獲取swf文件的運(yùn)行環(huán)境信息,并將運(yùn)行環(huán)境信息發(fā)送至服務(wù)端,服務(wù)端根據(jù)運(yùn)行環(huán)境信息就能檢測(cè)swf文件的調(diào)用者。因此,當(dāng)swf文件被客戶端的應(yīng)用程序非法調(diào)用時(shí),服務(wù)端可以第一時(shí)間獲知,從而采取相應(yīng)的措施,另外,通過(guò)將獲取swf運(yùn)行環(huán)境信息的swc文件加入swf文件,提高了swf文件被反編譯的難度,從而能夠有效避免現(xiàn)有技術(shù)中swf文件被反編譯的問(wèn)題。
為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉較佳實(shí)施例,并配合所附附圖,作詳細(xì)說(shuō)明如下。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,應(yīng)當(dāng)理解,以下附圖僅示出了本發(fā)明的某些實(shí)施例,因此不應(yīng)被看作是對(duì)范圍的限定,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他相關(guān)的附圖。
圖1示出了本發(fā)明實(shí)施例提供的服務(wù)端與客戶端進(jìn)行交互的示意圖。
圖2示出了本發(fā)明實(shí)施例提供的客戶端的方框示意圖。
圖3示出了本發(fā)明實(shí)施例提供的服務(wù)端的方框示意圖。
圖4示出了本發(fā)明第一實(shí)施例提供的檢測(cè)swf文件調(diào)用者的方法的流程圖。
圖5為圖4示出的步驟s105的子步驟流程圖。
圖6示出了本發(fā)明第二實(shí)施例提供的檢測(cè)swf文件調(diào)用者的方法的流程圖。
圖7為圖6示出的步驟s202的子步驟流程圖。
圖8示出了本發(fā)明第三實(shí)施例提供的檢測(cè)swf文件調(diào)用者的方法的流程圖。
圖9示出了本發(fā)明第四實(shí)施例提供的第一檢測(cè)裝置的方框示意圖。
圖10為圖9示出的第一檢測(cè)裝置中調(diào)用者檢測(cè)模塊的方框示意圖。
圖11示出了本發(fā)明第四實(shí)施例提供的第二檢測(cè)裝置的方框示意圖。
圖12為圖11示出的第二檢測(cè)裝置中運(yùn)行環(huán)境信息發(fā)送模塊的方框示意圖。
圖13示出了本發(fā)明第五實(shí)施例提供的檢測(cè)swf文件調(diào)用者的系統(tǒng)的方框示意圖。
圖標(biāo):100-服務(wù)端;110-第一檢測(cè)裝置;111-接口函數(shù)加入模塊;112-swc庫(kù)文件獲取模塊;113-發(fā)送模塊;114-第一執(zhí)行模塊;115-調(diào)用者檢測(cè)模塊;1151-判斷單元;1152-第一子執(zhí)行單元;1153-第二子執(zhí)行單元;120-第一存儲(chǔ)器;130-第一處理器;140-第一通信單元;200-客戶端;210-第二檢測(cè)裝置;211-swf文件獲取模塊;212-第二執(zhí)行模塊;2121-域名信息獲取單元;2122-url信息獲取單元;213-運(yùn)行環(huán)境信息發(fā)送模塊;220-第二存儲(chǔ)器;230-存儲(chǔ)控制器;240-第二處理器;250-外設(shè)接口;260-第二通信單元;270-射頻單元;300-網(wǎng)絡(luò);400-本地應(yīng)用程序;500-檢測(cè)swf文件調(diào)用者的系統(tǒng)。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。通常在此處附圖中描述和示出的本發(fā)明實(shí)施例的組件可以以各種不同的配置來(lái)布置和設(shè)計(jì)。因此,以下對(duì)在附圖中提供的本發(fā)明的實(shí)施例的詳細(xì)描述并非旨在限制要求保護(hù)的本發(fā)明的范圍,而是僅僅表示本發(fā)明的選定實(shí)施例?;诒景l(fā)明的實(shí)施例,本領(lǐng)域技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
應(yīng)注意到:相似的標(biāo)號(hào)和字母在下面的附圖中表示類似項(xiàng),因此,一旦某一項(xiàng)在一個(gè)附圖中被定義,則在隨后的附圖中不需要對(duì)其進(jìn)行進(jìn)一步定義和解釋。同時(shí),在本發(fā)明的描述中,術(shù)語(yǔ)“第一”、“第二”等僅用于區(qū)分描述,而不能理解為指示或暗示相對(duì)重要性。
請(qǐng)參照?qǐng)D1,圖1示出了本發(fā)明實(shí)施例提供的服務(wù)端100與至少一個(gè)客戶端200進(jìn)行交互的示意圖。服務(wù)端100可通過(guò)網(wǎng)絡(luò)300與客戶端200進(jìn)行通信,以實(shí)現(xiàn)服務(wù)端100與客戶端200之間的數(shù)據(jù)通信或交互。服務(wù)端100可以提供至少一個(gè)適用于各種操作系統(tǒng)的本地應(yīng)用程序400的安裝包供客戶端200下載??蛻舳?00通過(guò)網(wǎng)絡(luò)300訪問(wèn)服務(wù)端100后,可通過(guò)網(wǎng)絡(luò)300從服務(wù)端100下載適用于該客戶端200的操作系統(tǒng)的本地應(yīng)用程序400的安裝包,以將本地應(yīng)用程序400安裝到客戶端200中。
在本發(fā)明實(shí)施例中,服務(wù)端100為web(網(wǎng)站)服務(wù)器。客戶端200可以是,但不限于,智能手機(jī)、個(gè)人電腦(personalcomputer,pc)、平板電腦、個(gè)人數(shù)字助理(personaldigitalassistant,pda)、移動(dòng)上網(wǎng)設(shè)備(mobileinternetdevice,mid)等。客戶端200的操作系統(tǒng)可以是,但不限于,安卓(android)系統(tǒng)、ios(iphoneoperatingsystem)系統(tǒng)、windowsphone系統(tǒng)、windows系統(tǒng)等。本地應(yīng)用程序400可以是服務(wù)端100提供的任何可供客戶端200自定義下載并安裝的應(yīng)用程序,優(yōu)選地,本實(shí)施例中,本地應(yīng)用程序400可為各種運(yùn)行swf文件的客戶端200的本地程序。
請(qǐng)參照?qǐng)D2,圖2是圖1所示的服務(wù)端100的方框示意圖。服務(wù)端100包括第一檢測(cè)裝置110、第一存儲(chǔ)器120、第一處理器130和第一通信單元140。
第一存儲(chǔ)器120、第一處理器130以及第一通信單元140各元件相互之間直接或間接地電性連接,以實(shí)現(xiàn)數(shù)據(jù)的傳輸或交互。例如,這些元件相互之間可通過(guò)一條或多條通訊總線或信號(hào)線實(shí)現(xiàn)電性連接。第二檢測(cè)裝置210包括至少一個(gè)可以軟件或固件(firmware)的形式存儲(chǔ)于第一存儲(chǔ)器120中或固化在所述服務(wù)端100的操作系統(tǒng)(operatingsystem,os)中的軟件功能模塊。第一處理器130用于執(zhí)行第一存儲(chǔ)器120中存儲(chǔ)的可執(zhí)行模塊,例如第一檢測(cè)裝置110所包括的軟件功能模塊及計(jì)算機(jī)程序等。
其中,所述第一存儲(chǔ)器120可以是,但不限于,隨機(jī)存取存儲(chǔ)器(randomaccessmemory,ram),只讀存儲(chǔ)器(readonlymemory,rom),可編程只讀存儲(chǔ)器(programmableread-onlymemory,prom),可擦除只讀存儲(chǔ)器(erasableprogrammableread-onlymemory,eprom),電可擦除只讀存儲(chǔ)器(electricerasableprogrammableread-onlymemory,eeprom)等。其中,第一存儲(chǔ)器120用于存儲(chǔ)程序,第一處理器130在接收到執(zhí)行指令后,執(zhí)行所述程序。第一通信單元140用于通過(guò)網(wǎng)絡(luò)300建立服務(wù)端100與客戶端200之間的通信連接,并用于通過(guò)網(wǎng)絡(luò)300收發(fā)數(shù)據(jù)。
請(qǐng)參照?qǐng)D3,圖3是圖1所述的客戶端200的方框示意圖。該客戶端200包括第二檢測(cè)裝置210、第二存儲(chǔ)器220、存儲(chǔ)控制器230、第二處理器240、外設(shè)接口250、第二通信單元260以及射頻單元270。
第二存儲(chǔ)器220、存儲(chǔ)控制器230、第二處理器240、外設(shè)接口250、射頻單元270以及第二通信單元260各元件相互之間直接或間接地電性連接,以實(shí)現(xiàn)數(shù)據(jù)的傳輸或交互。例如,這些元件相互之間可通過(guò)一條或多條通訊總線或信號(hào)線實(shí)現(xiàn)電性連接。第二檢測(cè)裝置210包括至少一個(gè)可以軟件或固件(firmware)的形式存儲(chǔ)于所述第二存儲(chǔ)器220中或固化在客戶端200的操作系統(tǒng)(operatingsystem,os)中的軟件功能模塊。第二存儲(chǔ)器220存儲(chǔ)有客戶端200從服務(wù)端100中下載并安裝的本地應(yīng)用程序400。第二處理器240用于執(zhí)行第二存儲(chǔ)器220中存儲(chǔ)的可執(zhí)行模塊,例如第二檢測(cè)裝置210所包括的軟件功能模塊及計(jì)算機(jī)程序等。
其中,第二存儲(chǔ)器220可以是,但不限于,隨機(jī)存取存儲(chǔ)器(randomaccessmemory,ram),只讀存儲(chǔ)器(readonlymemory,rom),可編程只讀存儲(chǔ)器(programmableread-onlymemory,prom),可擦除只讀存儲(chǔ)器(erasableprogrammableread-onlymemory,eprom),電可擦除只讀存儲(chǔ)器(electricerasableprogrammableread-onlymemory,eeprom)等。其中,第二存儲(chǔ)器220用于存儲(chǔ)程序,第二處理器240在接收到執(zhí)行指令后,執(zhí)行所述程序。第二處理器240以及其他可能的組件對(duì)第二存儲(chǔ)器220的訪問(wèn)可在存儲(chǔ)控制器230的控制下進(jìn)行。
第二處理器240可能是一種集成電路芯片,具有信號(hào)的處理能力。上述的處理器可以是通用處理器,包括中央處理器(centralprocessingunit,cpu)、網(wǎng)絡(luò)處理器(networkprocessor,np)等;還可以是數(shù)字信號(hào)處理器(dsp))、專用集成電路(asic)、現(xiàn)場(chǎng)可編程門陣列(fpga)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件。可以實(shí)現(xiàn)或者執(zhí)行本發(fā)明實(shí)施例中的公開(kāi)的各方法、步驟及邏輯框圖。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)的處理器等。外設(shè)接口250將各種輸入/輸出裝置(例如射頻單元270)耦合至所述第二處理器240以及第二存儲(chǔ)器220。在一些實(shí)施例中,外設(shè)接口250、第二處理器240以及存儲(chǔ)控制器230可以在單個(gè)芯片中實(shí)現(xiàn)。在其他一些實(shí)例中,他們可以分別由獨(dú)立的芯片實(shí)現(xiàn)。
射頻單元270用于接收以及發(fā)送無(wú)線電波信號(hào)(如電磁波),實(shí)現(xiàn)無(wú)線電波與電信號(hào)的相互轉(zhuǎn)換,從而實(shí)現(xiàn)客戶端200與網(wǎng)絡(luò)300或者其他通信設(shè)備之間的無(wú)線通信。
第二通信單元260用于通過(guò)網(wǎng)絡(luò)300與服務(wù)端100建立連接,從而實(shí)現(xiàn)服務(wù)端100與客戶端200之間的通信連接。例如,該第二通信單元260可以利用射頻單元270發(fā)送的射頻信號(hào)連接到網(wǎng)絡(luò)300,進(jìn)而通過(guò)網(wǎng)絡(luò)300與服務(wù)端100建立通信連接。
第一實(shí)施例
請(qǐng)參照?qǐng)D4,圖4示出了本發(fā)明第一實(shí)施例提供的檢測(cè)swf文件調(diào)用者的方法的流程圖。本實(shí)施例為服務(wù)端100所執(zhí)行的檢測(cè)swf文件調(diào)用者的方法,包括以下步驟:
步驟s101,將獲取swf文件運(yùn)行環(huán)境信息的接口函數(shù)加入swc庫(kù)文件中,其中,接口函數(shù)為基于腳本語(yǔ)言的函數(shù)。
在本發(fā)明實(shí)施例中,swf文件為flash的執(zhí)行文件,swc庫(kù)文件是使用flash提供的機(jī)制編寫的基于編譯語(yǔ)言的文件,編譯語(yǔ)言可以是,但不限于c語(yǔ)言和c++語(yǔ)言等,flash提供這一機(jī)制的目的是為了考慮代碼的復(fù)用性,同時(shí)為了更易于開(kāi)發(fā)大型程序,swc文件編寫完成之后,flash可以在其actionscript腳本語(yǔ)言中來(lái)調(diào)用swc庫(kù)文件提供的功能函數(shù),從而使得flash可以使用c或者c++開(kāi)發(fā)的功能代碼。
在本發(fā)明實(shí)施例中,可以將獲取swf文件運(yùn)行環(huán)境信息的接口函數(shù)加入swc庫(kù)文件中編寫到swc庫(kù)文件中,同時(shí)通過(guò)設(shè)置接口供flash調(diào)用,從而對(duì)于flash具體調(diào)用的swc庫(kù)文件中的哪些函數(shù)、以及flash具體獲取了哪些信息進(jìn)行了隱藏保護(hù),接口函數(shù)可以為基于腳本語(yǔ)言(例如,actionscript腳本語(yǔ)言)的函數(shù)。
作為一種實(shí)施方式,將獲取swf文件運(yùn)行環(huán)境信息的接口函數(shù)加入swc庫(kù)文件中的方法可以是使用flash提供的機(jī)制使用編譯語(yǔ)言(例如,c語(yǔ)言)來(lái)編寫一個(gè)swc庫(kù)文件,并在該swc庫(kù)文件中編寫一個(gè)獲取swf文件運(yùn)行環(huán)境信息的接口函數(shù)提供給flash來(lái)調(diào)用。一種實(shí)現(xiàn)方法可以是,但不限于:首先,使用flash提供的機(jī)制使用編譯語(yǔ)言(例如,c語(yǔ)言)編寫文件代碼;其次,在該文件代碼中編寫供flash調(diào)用的獲取swf文件運(yùn)行環(huán)境信息的接口函數(shù),這個(gè)過(guò)程可以通過(guò)intgetswfenvironment(int*pinfo);語(yǔ)句實(shí)現(xiàn),其中,getswfenvironment為獲取swf文件運(yùn)行環(huán)境信息的接口函數(shù),int*pinfo表示接口函數(shù)getswfenvironment會(huì)將獲取的swf文件運(yùn)行環(huán)境信息寫入到接口參數(shù)pinfo這個(gè)指針中,返回值int表示寫入到pinfo指針中的內(nèi)容的大小;最后,使用flash提供的編譯工具將文件代碼編譯成swc庫(kù)文件。在這一實(shí)現(xiàn)方法中,使用編譯語(yǔ)言可以使swc庫(kù)文件不容易被反編譯。
作為一種實(shí)施方式,使得接口函數(shù)具備獲取swf文件運(yùn)行環(huán)境信息的功能的方法可以是,但不限于將獲取swf文件運(yùn)行環(huán)境信息的腳本語(yǔ)言加入到接口函數(shù)中。swf文件運(yùn)行環(huán)境信息可以包括swf文件的調(diào)用者的域名信息、以及swf文件的url信息。一種實(shí)現(xiàn)方法可以是:首先編寫獲取swf文件運(yùn)行環(huán)境信息的腳本語(yǔ)言,其次通過(guò)flash提供的內(nèi)聯(lián)函數(shù)將該腳本語(yǔ)言包起來(lái),從而告訴flash的編譯器,該段代碼是使用的腳本語(yǔ)言來(lái)編寫的。
作為一種實(shí)施方式,獲取swf文件的調(diào)用者的域名信息可以通過(guò)以下語(yǔ)句實(shí)現(xiàn):
inline_as3(
"importflash.net.localconnection;\n"
"varlocaldomain:localconnection=newlocalconnection();\n"
"varmydomainname:string=localdomainlc.domain;\n"
"varstringptr:int=cmodule.mallocstring(mydomainname);\n"
"cmodule.write32(%0,stringptr);\n"
::"r"(&pstrdomain));
其中,inline_as3為flash的內(nèi)聯(lián)函數(shù);"varlocaldomain:localconnection=newlocalconnection();\n"表示使用flash提供的組件來(lái)創(chuàng)建一個(gè)域?qū)ο髄ocaldomain,localconnection是創(chuàng)建域?qū)ο髄ocaldomain的組件,通過(guò)調(diào)用該組件可以獲取到域?qū)ο髄ocaldomain;"varmydomainname:string=localdomainlc.domain;\n"表示通過(guò)域?qū)ο髄ocaldomain來(lái)獲取運(yùn)行swf文件的應(yīng)用程序的域名信息mydomainnamedata,pstrdomain是用于存儲(chǔ)該域名信息的指針。
作為一種實(shí)施方式,獲取swf文件的url信息可以通過(guò)以下語(yǔ)句實(shí)現(xiàn):
inline_as3(
"importflash.display.stage;\n"
"varweburl:string=cmodule.rootsprite.stage.loaderinfo.url.tostring();\n"
"varstringptr:int=cmodule.mallocstring(weburl);\n"
"cmodule.write32(%0,stringptr);\n"
::"r"(&pstrurl));
其中,inline_as3為flash的內(nèi)聯(lián)函數(shù);"varweburl:string=cmodule.rootsprite.stage.loaderinfo.url.tostring();\n"表示通過(guò)使用swf文件的舞臺(tái)對(duì)象來(lái)獲取swf文件的url信息,rootsprite為根對(duì)象,由于在swf文件中用來(lái)被渲染的舞臺(tái)對(duì)象都具有rootsprite根對(duì)象,因此該rootsprite根對(duì)象的url信息就是swf文件的url信息,pstrurl是用于存儲(chǔ)該url信息的指針。
作為一種實(shí)施方式,獲取到調(diào)用者的域名信息及swf文件的url信息之后,首先將調(diào)用者的域名信息及swf文件的url信息存入到接口參數(shù)pinfo中,可以通過(guò)以下語(yǔ)句實(shí)現(xiàn):
*pinfo=malloc(strlen(pstrdomain)+strlen(pstrurl));
memcpy(pinfo,pstrdomain,strlen(pstrdomain));
memcpy(pinfo+strlen(pstrdomain),pstrurl,strlen(pstrurl));從而將調(diào)用者的域名信息及swf文件的url信息返回給此接口的調(diào)用者(例如flash)。
步驟s102,獲取swc庫(kù)文件,并將swc庫(kù)文件加入swf文件中。
在本發(fā)明實(shí)施例中,swc庫(kù)文件編譯完成之后,可以加入到swf文件中,這樣當(dāng)swf被客戶端200的應(yīng)用程序運(yùn)行時(shí),swc庫(kù)文件就可以獲取swf文件的運(yùn)行環(huán)境信息。
步驟s103,基于客戶端的文件獲取請(qǐng)求,將swf文件發(fā)送至客戶端。
在本發(fā)明實(shí)施例中,客戶端200的文件獲取請(qǐng)求可以是,但不限于來(lái)自客戶端200的調(diào)用者的獲取請(qǐng)求,調(diào)用者包括外部應(yīng)用程序和本地應(yīng)用程序400的。外部應(yīng)用程序可以是使用網(wǎng)頁(yè)瀏覽器在互聯(lián)網(wǎng)或企業(yè)內(nèi)部網(wǎng)上操作的應(yīng)用軟件,例如,使用360瀏覽器、谷歌瀏覽器、ie瀏覽器等網(wǎng)頁(yè)瀏覽器在網(wǎng)上操作的百度、優(yōu)酷、斗魚(yú)直播等應(yīng)用軟件。本地應(yīng)用程序400可以是各種安裝于客戶端200的本地程序,例如百度網(wǎng)盤、暴風(fēng)影音等安裝于客戶端200的各種app(application,應(yīng)用)。
步驟s104,獲取客戶端發(fā)送的swf文件的運(yùn)行環(huán)境信息,其中,運(yùn)行環(huán)境信息通過(guò)swc庫(kù)文件在swf文件被客戶端的應(yīng)用程序運(yùn)行時(shí)獲取。
在本發(fā)明實(shí)施例中,客戶端200的應(yīng)用程序從服務(wù)端100獲取到swf文件之后,當(dāng)swf文件被該應(yīng)用程序運(yùn)行時(shí),swc庫(kù)文件會(huì)獲取swf文件的運(yùn)行環(huán)境信息,之后客戶端200會(huì)將該運(yùn)行環(huán)境信息發(fā)送至服務(wù)端100。
步驟s105,根據(jù)運(yùn)行環(huán)境信息檢測(cè)swf文件的調(diào)用者。
在本發(fā)明實(shí)施例中,由于客戶端200上報(bào)的swf文件的運(yùn)行環(huán)境信息是加密的,因此,服務(wù)端100首先會(huì)對(duì)上報(bào)信息進(jìn)行解密,從而獲取到調(diào)用者的域名信息及swf文件的url信息。
作為一種實(shí)施方式,服務(wù)端100對(duì)上報(bào)信息進(jìn)行解密可以通過(guò)data=aes.decrypt(info,key);語(yǔ)句實(shí)現(xiàn),其中,aes.decrypt則是aes解密算法的解密接口;其中參數(shù)info是客戶端200上報(bào)的swf文件的運(yùn)行環(huán)境信息經(jīng)加密的信息;參數(shù)key是客戶端200加密時(shí)使用的key信息。
在本發(fā)明實(shí)施例中,可以根據(jù)運(yùn)行環(huán)境信息檢測(cè)swf文件的調(diào)用者,如果調(diào)用者的域名信息及swf文件的url信息均是網(wǎng)絡(luò)地址,則判定調(diào)用者是外部應(yīng)用程序,如果調(diào)用者的域名信息及swf文件的url信息中任意一個(gè)不是網(wǎng)絡(luò)地址,例如,參數(shù)mydomainnamedata是“l(fā)ocalhost”,或者swf文件的url信息是類似“c:\users\administrator\desktop\**.swf”的磁盤存儲(chǔ)路徑信息,則判定調(diào)用者是本地應(yīng)用程序400。
請(qǐng)參照?qǐng)D5,步驟s105可以包括以下子步驟:
子步驟s1051,判斷調(diào)用者的域名信息及swf文件的url信息是否均為網(wǎng)絡(luò)地址。
在本發(fā)明實(shí)施例中,如果調(diào)用者的域名信息及swf文件的url信息均為網(wǎng)絡(luò)地址,則執(zhí)行子步驟s1052,如果調(diào)用者的域名信息及swf文件的url信息中任意一個(gè)不是網(wǎng)絡(luò)地址,則執(zhí)行子步驟s1053。
子步驟s1052,判定調(diào)用者為客戶端的外部應(yīng)用程序。
子步驟s1053,判定調(diào)用者為安裝于客戶端的本地應(yīng)用程序。
在本發(fā)明實(shí)施例中,首先,通過(guò)將獲取swf文件運(yùn)行環(huán)境信息的接口函數(shù)加入swc庫(kù)文件中編寫到swc庫(kù)文件中,同時(shí)通過(guò)設(shè)置接口供flash調(diào)用,從而對(duì)于flash具體調(diào)用的swc庫(kù)文件中的哪些函數(shù)、以及flash具體獲取了哪些信息進(jìn)行了隱藏保護(hù);其次,通過(guò)flash提供的內(nèi)聯(lián)函數(shù)inline_as3將獲取swf文件運(yùn)行環(huán)境信息的腳本語(yǔ)言包起來(lái),加入到接口函數(shù)中,從而使得接口函數(shù)具備了獲取swf文件運(yùn)行環(huán)境信息的功能,同時(shí),由于swc庫(kù)文件是基于編譯語(yǔ)言編寫的文件,因此不容易被反編譯。
第二實(shí)施例
請(qǐng)參照?qǐng)D6,圖6示出了本發(fā)明第二實(shí)施例提供的檢測(cè)swf文件調(diào)用者的方法的流程圖。本實(shí)施例為客戶端200所執(zhí)行的檢測(cè)swf文件調(diào)用者的方法,包括以下步驟:
步驟s201,基于文件獲取請(qǐng)求,從服務(wù)端獲取包含有swc庫(kù)文件的swf文件。
在本發(fā)明實(shí)施例中,swf文件是外部應(yīng)用程序的文件,因此,外部應(yīng)用程序的獲取請(qǐng)求是指通過(guò)網(wǎng)絡(luò)300從服務(wù)端100調(diào)用包含有swc庫(kù)文件的swf文件,而本地應(yīng)用程序400的獲取請(qǐng)求是指從服務(wù)端100非法下載包含有swc庫(kù)文件的swf文件。
步驟s202,當(dāng)swf文件被客戶端的應(yīng)用程序運(yùn)行時(shí),swc庫(kù)文件獲取swf文件的運(yùn)行環(huán)境信息。
在本發(fā)明實(shí)施例中,當(dāng)客戶端200的應(yīng)用程序運(yùn)行swf文件時(shí),swc庫(kù)文件就能獲取swf文件的運(yùn)行環(huán)境信息,從而檢測(cè)swf的調(diào)用者。運(yùn)行環(huán)境信息可以是,但不限于包括swf的調(diào)用者的域名信息、以及swf文件的url(uniformresourelocator,統(tǒng)一資源定位器)信息等。
請(qǐng)參照?qǐng)D7,步驟s202可以包括以下子步驟:
子步驟s2021,依據(jù)swf文件的調(diào)用者是否有域名,確定調(diào)用者的域名信息。
在本發(fā)明實(shí)施例中,當(dāng)swf文件被外部應(yīng)用程序運(yùn)行時(shí),也就是外部應(yīng)用程序通過(guò)網(wǎng)絡(luò)300從服務(wù)端100調(diào)用的swf文件,swc庫(kù)文件獲取的運(yùn)行swf文件的應(yīng)用程序的域名必然是對(duì)應(yīng)網(wǎng)站的域名,例如,當(dāng)swf文件通過(guò)瀏覽器被百度運(yùn)行時(shí),百度的網(wǎng)頁(yè)調(diào)用flash運(yùn)行swf文件,則flash獲取其的應(yīng)用程序的域名是www.baidu.com;但是,當(dāng)swf文件是從服務(wù)端100非法下載的,且被本地應(yīng)用程序400運(yùn)行時(shí),swc庫(kù)文件則無(wú)法獲取到網(wǎng)站域名,因此,可以依據(jù)運(yùn)行swf文件的應(yīng)用程序是否有域名,來(lái)確定運(yùn)行swf文件的應(yīng)用程序的域名信息,當(dāng)swc庫(kù)文件無(wú)法獲取到網(wǎng)站域名時(shí),可以設(shè)置運(yùn)行swf文件的應(yīng)用程序的域名信息為一個(gè)固定的本地信息,例如localhost(本地主機(jī))。
子步驟s2022,根據(jù)swf文件加載的舞臺(tái)對(duì)象獲取swf文件的url信息,其中,swf文件的運(yùn)行環(huán)境信息包括調(diào)用者的域名信息及swf文件的url信息。
在本發(fā)明實(shí)施例中,url信息可以是,但不限于根據(jù)swf文件加載的舞臺(tái)對(duì)象所確定的swf文件的url信息。由于在swf文件中用來(lái)被渲染的舞臺(tái)對(duì)象都具有rootsprite根對(duì)象,故該rootsprite根對(duì)象的url信息就是swf文件的url信息。當(dāng)swf文件被外部應(yīng)用程序運(yùn)行時(shí),rootsprite根對(duì)象的url信息必然是該網(wǎng)站的域名及該網(wǎng)站運(yùn)行的swf文件的服務(wù)器路徑信息,也就是該網(wǎng)站頁(yè)面的url信息,例如,http://zhidao.baidu.com/question/124891257.html。但是,當(dāng)swf文件被本地應(yīng)用程序400運(yùn)行時(shí),swc庫(kù)文件則無(wú)法獲取到rootsprite根對(duì)象的url信息,因此,可以依據(jù)rootsprite根對(duì)象,來(lái)確定swf文件的url信息,當(dāng)swc庫(kù)文件無(wú)法獲取到當(dāng)前頁(yè)面的url信息時(shí),可以設(shè)置rootsprite根對(duì)象的本地磁盤路徑信息作為swf文件的url信息,例如http://zhidao.baidu.com/question/124891257.html。
步驟s203,將運(yùn)行環(huán)境信息發(fā)送至服務(wù)端,以使服務(wù)端根據(jù)運(yùn)行環(huán)境信息檢測(cè)swf文件的調(diào)用者。
作為一種實(shí)施方式,可以在flash中加載swc庫(kù)文件,并調(diào)用swc庫(kù)文件的接口函數(shù)來(lái)獲取該接口函數(shù)獲取的swf文件的運(yùn)行環(huán)境信息??梢酝ㄟ^(guò)以下方法實(shí)現(xiàn):首先,通過(guò)flash的腳本指令來(lái)導(dǎo)入該swc庫(kù)文件,可以通過(guò)importxx.cmodule;語(yǔ)句實(shí)現(xiàn);其次,分配一個(gè)指針變量ptrinfo調(diào)用該swc庫(kù)文件的接口函數(shù)getswfenvironment,可以通過(guò)varptrinfolen:int=xx.getswfenvironment(ptrinfo);語(yǔ)句實(shí)現(xiàn);再次,讀取接口函數(shù)返回的接口參數(shù)pinfo指針,可以通過(guò)varinfodata:int=cmodule.read32(ptrinfo);語(yǔ)句實(shí)現(xiàn);最后,讀取接口函數(shù)獲取的swf文件的運(yùn)行環(huán)境信息,可以通過(guò)vardata:string=cmodule.readstring(infodata,ptrinfolen);語(yǔ)句實(shí)現(xiàn),其中,data變量用于存儲(chǔ)swf文件的運(yùn)行環(huán)境信息,包括調(diào)用者的域名信息及swf文件的url信息。
作為另一種實(shí)施方式,可以在flash的關(guān)鍵函數(shù)中調(diào)用swc庫(kù)文件的接口函數(shù)來(lái)獲取swf文件的運(yùn)行環(huán)境信息,并將該信息進(jìn)行加密后上報(bào)服務(wù)器。關(guān)鍵函數(shù)可以是flash最開(kāi)始執(zhí)行或者初始化的函數(shù),該接口函數(shù)必須是會(huì)被調(diào)用到的。
在本發(fā)明實(shí)施例中,當(dāng)flash獲取到swf文件的運(yùn)行環(huán)境信息后,則會(huì)將所獲取到的運(yùn)行環(huán)境信息進(jìn)行加密后上報(bào)到服務(wù)端100,服務(wù)端100會(huì)根據(jù)運(yùn)行環(huán)境信息檢測(cè)swf文件的調(diào)用者。作為一種實(shí)施方式,可以通過(guò)info=aes.encrypt(data,key);語(yǔ)句實(shí)現(xiàn),其中,aes.encrypt是aes加密算法的加密接口;參數(shù)data是swf文件的運(yùn)行環(huán)境信息;key是加密使用的key信息;info數(shù)據(jù)是加密后上報(bào)到服務(wù)端100的數(shù)據(jù)。
在本發(fā)明實(shí)施例中,首先,swf文件的運(yùn)行環(huán)境信息包括調(diào)用者的域名信息、以及swf文件的url信息,并且二者是通過(guò)不同的技術(shù)手段獲取的,這樣可以防止數(shù)據(jù)被篡改,提高了獲取的swf文件的運(yùn)行環(huán)境信息的安全性;另外,獲取swf文件的運(yùn)行環(huán)境信息的swc庫(kù)文件是編譯語(yǔ)言和腳本語(yǔ)言混合的文件,不容易被反編譯,進(jìn)一步保證了獲取swf文件的運(yùn)行環(huán)境信息的安全性。
第三實(shí)施例
請(qǐng)參照?qǐng)D8,圖8示出了本發(fā)明第三實(shí)施例提供的檢測(cè)swf文件調(diào)用者的方法的流程圖。本實(shí)施例以服務(wù)端100與客戶端200之間的交互為主描述本方法,本實(shí)施例的方法可以包括以下步驟:
步驟s301,服務(wù)端獲取swc庫(kù)文件,并將swc庫(kù)文件加入swf文件中。
步驟s302,服務(wù)端基于客戶端的文件獲取請(qǐng)求,將swf文件發(fā)送至客戶端。
步驟s303,客戶端獲取swf文件,當(dāng)swf文件被客戶端的應(yīng)用程序運(yùn)行時(shí),客戶端通過(guò)swc庫(kù)文件來(lái)獲取swf文件的運(yùn)行環(huán)境信息。
步驟s304,客戶端將運(yùn)行環(huán)境信息發(fā)送至服務(wù)端。
步驟s305,服務(wù)端獲取運(yùn)行環(huán)境信息,并根據(jù)運(yùn)行環(huán)境信息檢測(cè)swf文件的調(diào)用者。
在本發(fā)明實(shí)施例中,服務(wù)端100將swc庫(kù)文件加入swf文件中,其次,客戶端200從服務(wù)端100獲取swf文件,當(dāng)swf文件被客戶端200的應(yīng)用程序運(yùn)行時(shí),客戶端200通過(guò)swc庫(kù)文件來(lái)獲取swf文件的運(yùn)行環(huán)境信息,并將運(yùn)行環(huán)境信息發(fā)送至服務(wù)端100,服務(wù)端100根據(jù)運(yùn)行環(huán)境信息就能檢測(cè)swf文件的調(diào)用者。因此,當(dāng)swf文件被客戶端200的應(yīng)用程序非法調(diào)用時(shí),服務(wù)端100可以第一時(shí)間獲知,從而采取相應(yīng)的措施,另外,通過(guò)將獲取swf運(yùn)行環(huán)境信息的swc文件加入swf文件,提高了swf文件被反編譯的難度。
第四實(shí)施例
請(qǐng)參照?qǐng)D9,圖9示出了本發(fā)明第四實(shí)施例提供的第一檢測(cè)裝置110的方框示意圖。第一檢測(cè)裝置110應(yīng)用于服務(wù)端100,其包括接口函數(shù)加入模塊111、swc庫(kù)文件獲取模塊112、發(fā)送模塊113、第一執(zhí)行模塊114及調(diào)用者檢測(cè)模塊115。
接口函數(shù)加入模塊111,用于將獲取swf文件運(yùn)行環(huán)境信息的接口函數(shù)加入swc庫(kù)文件中,其中,接口函數(shù)為基于腳本語(yǔ)言的函數(shù)。
在本發(fā)明實(shí)施例中,接口函數(shù)加入模塊111可以用于執(zhí)行步驟s101。
swc庫(kù)文件獲取模塊112,用于獲取swc庫(kù)文件,并將swc庫(kù)文件加入swf文件中。
在本發(fā)明實(shí)施例中,swc庫(kù)文件獲取模塊112可以用于執(zhí)行步驟s102。
發(fā)送模塊113,用于基于客戶端的文件獲取請(qǐng)求,將swf文件發(fā)送至客戶端。
在本發(fā)明實(shí)施例中,發(fā)送模塊113可以用于執(zhí)行步驟s103。
第一執(zhí)行模塊114,用于獲取客戶端發(fā)送的swf文件的運(yùn)行環(huán)境信息,其中,運(yùn)行環(huán)境信息通過(guò)swc庫(kù)文件在swf文件被客戶端的應(yīng)用程序運(yùn)行時(shí)獲取。
在本發(fā)明實(shí)施例中,第一執(zhí)行模塊114可以用于執(zhí)行步驟s104。
調(diào)用者檢測(cè)模塊115,用于根據(jù)運(yùn)行環(huán)境信息檢測(cè)swf文件的調(diào)用者。
在本發(fā)明實(shí)施例中,調(diào)用者檢測(cè)模塊115可以用于執(zhí)行步驟s105。
請(qǐng)參照?qǐng)D10,圖10為圖9示出的第一檢測(cè)裝置110中調(diào)用者檢測(cè)模塊115的方框示意圖。調(diào)用者檢測(cè)模塊115包括判斷單元1151、第一子執(zhí)行單元1152及第二子執(zhí)行單元1153。
判斷單元1151,用于判斷調(diào)用者的域名信息及swf文件的url信息是否均為網(wǎng)絡(luò)地址。
在本發(fā)明實(shí)施例中,判斷單元1151可以用于執(zhí)行子步驟s1051。
在本發(fā)明實(shí)施例中,如果判斷單元1151的執(zhí)行結(jié)果為“是”,則轉(zhuǎn)第一子執(zhí)行單元1152執(zhí)行子步驟s1052,如果判斷單元1151的執(zhí)行結(jié)果為“否”,則轉(zhuǎn)第二子執(zhí)行單元1153執(zhí)行子步驟s1053。
第一子執(zhí)行單元1152,用于判定調(diào)用者為客戶端的外部應(yīng)用程序。
在本發(fā)明實(shí)施例中,第一子執(zhí)行單元1152可以用于執(zhí)行子步驟s1052。
第二子執(zhí)行單元1153,用于判定調(diào)用者為安裝于客戶端的本地應(yīng)用程序。
在本發(fā)明實(shí)施例中,第二子執(zhí)行單元1153可以用于執(zhí)行子步驟s1053。
請(qǐng)參照?qǐng)D11,圖11示出了本發(fā)明第四實(shí)施例提供的第二檢測(cè)裝置210的方框示意圖。第二檢測(cè)裝置210包括swf文件獲取模塊211、第二執(zhí)行模塊212及運(yùn)行環(huán)境信息發(fā)送模塊213。
swf文件獲取模塊211,用于基于文件獲取請(qǐng)求,從服務(wù)端獲取包含有swc庫(kù)文件的swf文件。
在本發(fā)明實(shí)施例中,swf文件獲取模塊211可以用于執(zhí)行步驟s201。
第二執(zhí)行模塊212,用于當(dāng)swf文件被客戶端的應(yīng)用程序運(yùn)行時(shí),swc庫(kù)文件獲取swf文件的運(yùn)行環(huán)境信息。
在本發(fā)明實(shí)施例中,第二執(zhí)行模塊212可以用于執(zhí)行步驟s202。
請(qǐng)參照?qǐng)D12,圖12為圖11示出的第二檢測(cè)裝置210中第二執(zhí)行模塊212的方框示意圖。第二執(zhí)行模塊212包括域名信息獲取單元2121及url信息獲取單元2122。
域名信息獲取單元2121,用于依據(jù)swf文件的調(diào)用者是否有域名,確定調(diào)用者的域名信息。
在本發(fā)明實(shí)施例中,域名信息獲取單元2121可以用于執(zhí)行步驟s2021。
url信息獲取單元2122,用于根據(jù)swf文件加載的舞臺(tái)對(duì)象獲取swf文件的url信息,其中,swf文件的運(yùn)行環(huán)境信息包括調(diào)用者的域名信息及swf文件的url信息。
在本發(fā)明實(shí)施例中,url信息獲取單元2122可以用于執(zhí)行步驟s2022。
運(yùn)行環(huán)境信息發(fā)送模塊213,用于將運(yùn)行環(huán)境信息發(fā)送至服務(wù)端,以使服務(wù)端根據(jù)運(yùn)行環(huán)境信息檢測(cè)swf文件的調(diào)用者。
在本發(fā)明實(shí)施例中,運(yùn)行環(huán)境信息發(fā)送模塊213可以用于執(zhí)行步驟s203。
第五實(shí)施例
請(qǐng)參照?qǐng)D13,圖13示出了本發(fā)明第五實(shí)施例提供的檢測(cè)swf文件調(diào)用者的系統(tǒng)500的方框示意圖。檢測(cè)swf文件調(diào)用者的系統(tǒng)500包括服務(wù)端100、以及與服務(wù)端100通信連接的客戶端200,其中:
服務(wù)端100用于獲取swc庫(kù)文件,并將swc庫(kù)文件加入swf文件中。
服務(wù)端100還用于基于客戶端200的文件獲取請(qǐng)求,將swf文件發(fā)送至客戶端200。
客戶端200用于獲取swf文件,當(dāng)swf文件被客戶端200的應(yīng)用程序運(yùn)行時(shí),通過(guò)swc庫(kù)文件來(lái)獲取swf文件的運(yùn)行環(huán)境信息。
客戶端200還用于將運(yùn)行環(huán)境信息發(fā)送至服務(wù)端100。
客戶端200還用于獲取運(yùn)行環(huán)境信息,并根據(jù)運(yùn)行環(huán)境信息檢測(cè)swf文件的調(diào)用者。
綜上所述,本發(fā)明提供的一種檢測(cè)swf文件調(diào)用者的方法、裝置、服務(wù)端及客戶端,應(yīng)用于服務(wù)端的方法包括:獲取swc庫(kù)文件,并將swc庫(kù)文件加入swf文件中;基于客戶端的文件獲取請(qǐng)求,將swf文件發(fā)送至客戶端;獲取客戶端發(fā)送的swf文件的運(yùn)行環(huán)境信息,其中,運(yùn)行環(huán)境信息通過(guò)swc庫(kù)文件在swf文件被客戶端的應(yīng)用程序運(yùn)行時(shí)獲?。桓鶕?jù)運(yùn)行環(huán)境信息檢測(cè)swf文件的調(diào)用者。應(yīng)用于客戶端的方法包括:基于文件獲取請(qǐng)求,從服務(wù)端獲取包含有swc庫(kù)文件的swf文件;當(dāng)swf文件被客戶端的應(yīng)用程序運(yùn)行時(shí),swc庫(kù)文件獲取swf文件的運(yùn)行環(huán)境信息;將運(yùn)行環(huán)境信息發(fā)送至服務(wù)端,以使服務(wù)端根據(jù)運(yùn)行環(huán)境信息檢測(cè)swf文件的調(diào)用者。當(dāng)swf文件被客戶端的應(yīng)用程序非法調(diào)用時(shí),服務(wù)端可以第一時(shí)間獲知,從而采取相應(yīng)的措施,另外,通過(guò)將獲取swf運(yùn)行環(huán)境信息的swc文件加入swf文件,提高了swf文件被反編譯的難度,從而能夠有效避免現(xiàn)有技術(shù)中swf文件被反編譯的問(wèn)題。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的裝置和方法,也可以通過(guò)其它的方式實(shí)現(xiàn)。以上所描述的裝置實(shí)施例僅僅是示意性的,例如,附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個(gè)實(shí)施例的裝置、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)方式中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動(dòng)作的專用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來(lái)實(shí)現(xiàn)。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能模塊可以集成在一起形成一個(gè)獨(dú)立的部分,也可以是各個(gè)模塊單獨(dú)存在,也可以兩個(gè)或兩個(gè)以上模塊集成形成一個(gè)獨(dú)立的部分。
所述功能如果以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(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ǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:u盤、移動(dòng)硬盤、只讀存儲(chǔ)器(rom,read-onlymemory)、隨機(jī)存取存儲(chǔ)器(ram,randomaccessmemory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。需要說(shuō)明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。應(yīng)注意到:相似的標(biāo)號(hào)和字母在下面的附圖中表示類似項(xiàng),因此,一旦某一項(xiàng)在一個(gè)附圖中被定義,則在隨后的附圖中不需要對(duì)其進(jìn)行進(jìn)一步定義和解釋。