亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種Flash函數(shù)加密的方法及裝置與流程

文檔序號(hào):11406775閱讀:190來(lái)源:國(guó)知局
一種Flash函數(shù)加密的方法及裝置與流程

本發(fā)明涉及信息處理技術(shù)領(lǐng)域,特別涉及一種flash函數(shù)加密的方法及裝置。



背景技術(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è)游戲、大多數(shù)的郵箱等網(wǎng)頁(yè)應(yīng)用程序都使用flash來(lái)開(kāi)發(fā)一些功能,flash的具體使用文件是swf(shockwaveflash)文件。flash的開(kāi)發(fā)使用的是actionscript腳本語(yǔ)言,其腳本語(yǔ)言通過(guò)編譯器編譯后變成可以執(zhí)行的字節(jié)碼,由于actionscript語(yǔ)言的特性,其最終生成的swf文件中會(huì)保存有actionscript代碼中使用的所有函數(shù)名,并且是原始的函數(shù)名,所以通過(guò)反編譯工具可以從最終的swf文件中獲取到所有函數(shù)的原始名字,從而通過(guò)函數(shù)名非常容易弄懂其實(shí)現(xiàn)的邏輯,從而不利于軟件權(quán)利的保護(hù)(例如對(duì)于函數(shù)名“decodedata”,從名字可以知道該函數(shù)是用于解密數(shù)據(jù)的)。因此大多數(shù)的flash也會(huì)采用部分核心功能通過(guò)c語(yǔ)言來(lái)開(kāi)發(fā),然后最終通過(guò)編譯器編譯成最終的swf文件。而對(duì)于c語(yǔ)言開(kāi)發(fā)其代碼的安全性要比使用actionscript開(kāi)發(fā)的安全性要高,但是同樣也存在函數(shù)名被反編譯軟件可以獲取到原始的名字的問(wèn)題。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明實(shí)施例提供了一種flash函數(shù)加密的方法及裝置,提高了flash文件的安全性,方便了以后查找函數(shù)的校驗(yàn)。

第一方面,本申請(qǐng)?zhí)峁┮环Nflash函數(shù)加密的方法,所述方法包括:

獲取flash文件中編寫(xiě)的目標(biāo)程序代碼;

在所述目標(biāo)程序代碼中查找目標(biāo)函數(shù)名,對(duì)所述目標(biāo)程序代碼中的目標(biāo)函數(shù)名計(jì)算目標(biāo)哈希值;

將所述目標(biāo)函數(shù)名利用所述目標(biāo)哈希值進(jìn)行替換。

進(jìn)一步的,所述獲取flash文件中編寫(xiě)的目標(biāo)程序代碼的步驟,包括:

獲取flash文件中利用c語(yǔ)言編寫(xiě)的第一程序代碼;

所述在所述目標(biāo)程序代碼中查找目標(biāo)函數(shù)名,對(duì)所述目標(biāo)程序代碼中的目標(biāo)函數(shù)名計(jì)算目標(biāo)哈希值的步驟包括:

在所述第一程序代碼中查找第一函數(shù)名,對(duì)所述第一程序代碼中的第一函數(shù)名計(jì)算第一哈希值;

所述將所述目標(biāo)函數(shù)名利用所述目標(biāo)哈希值進(jìn)行替換的步驟,包括:

將所述第一函數(shù)名利用所述第一哈希值進(jìn)行替換。

進(jìn)一步的,所述對(duì)所述第一程序代碼中的第一函數(shù)名計(jì)算第一哈希值的步驟,包括:

定義存儲(chǔ)c語(yǔ)言函數(shù)名和哈希值管理的容器;

分別在所述容器中存儲(chǔ)所述第一函數(shù)名,并生成對(duì)應(yīng)的第一哈希值,建立所述第一函數(shù)名與所述第一哈希值對(duì)應(yīng)關(guān)系。

進(jìn)一步的,所述獲取flash文件中編寫(xiě)的目標(biāo)程序代碼的步驟,還包括:

獲取flash文件中利用actionscript語(yǔ)言編寫(xiě)的第二程序代碼;

所述在所述目標(biāo)程序代碼中查找目標(biāo)函數(shù)名,對(duì)所述目標(biāo)程序代碼中的目標(biāo)函數(shù)名計(jì)算目標(biāo)哈希值的步驟還包括:

在所述第二程序代碼中查找第二函數(shù)名,對(duì)所述第二程序代碼中的第二函數(shù)名計(jì)算第二哈希值;

所述將所述目標(biāo)函數(shù)名利用所述目標(biāo)哈希值進(jìn)行替換的步驟,包括:

將所述第二函數(shù)名利用所述第二哈希值進(jìn)行替換。

進(jìn)一步的,所述對(duì)所述第二程序代碼中的第二函數(shù)名計(jì)算第二哈希值的步驟,包括:

定義存儲(chǔ)actionscript語(yǔ)言函數(shù)名和哈希值管理的容器;

分別在所述容器中存儲(chǔ)所述第二函數(shù)名,并生成對(duì)應(yīng)的第二哈希值,建立所述第二函數(shù)名與所述第二哈希值對(duì)應(yīng)關(guān)系。

第二方面,本申請(qǐng)?zhí)峁┮环Nflash函數(shù)加密的裝置,所述裝置包括:

獲取單元,用于獲取flash文件中編寫(xiě)的目標(biāo)程序代碼;

哈希計(jì)算單元,用于在所述目標(biāo)程序代碼中查找目標(biāo)函數(shù)名,對(duì)所述目標(biāo)程序代碼中的目標(biāo)函數(shù)名計(jì)算目標(biāo)哈希值;

替換單元,用于將所述目標(biāo)函數(shù)名利用所述目標(biāo)哈希值進(jìn)行替換。

進(jìn)一步的,所述獲取單元具體用于:

獲取flash文件中利用c語(yǔ)言編寫(xiě)的第一程序代碼;

所述哈希計(jì)算單元具體用于:

在所述第一程序代碼中查找第一函數(shù)名,對(duì)所述第一程序代碼中的第一函數(shù)名計(jì)算第一哈希值;

所述替換單元具體用于:

將所述第一函數(shù)名利用所述第一哈希值進(jìn)行替換。

進(jìn)一步的,所述哈希計(jì)算單元具體用于:

定義存儲(chǔ)c語(yǔ)言函數(shù)名和哈希值管理的容器;

分別在所述容器中存儲(chǔ)所述第一函數(shù)名,并生成對(duì)應(yīng)的第一哈希值,建立所述第一函數(shù)名與所述第一哈希值對(duì)應(yīng)關(guān)系。

進(jìn)一步的,所述獲取單元具體還用于:

獲取flash文件中利用actionscript語(yǔ)言編寫(xiě)的第二程序代碼;

所述哈希計(jì)算單元具體還用于:

在所述第二程序代碼中查找第二函數(shù)名,對(duì)所述第二程序代碼中的第二函數(shù)名計(jì)算第二哈希值;

所述替換單元具體還用于:

將所述第二函數(shù)名利用所述第二哈希值進(jìn)行替換。

進(jìn)一步的,所述哈希計(jì)算單元具體用于:

定義存儲(chǔ)actionscript語(yǔ)言函數(shù)名和哈希值管理的容器;

分別在所述容器中存儲(chǔ)所述第二函數(shù)名,并生成對(duì)應(yīng)的第二哈希值,建立所述第二函數(shù)名與所述第二哈希值對(duì)應(yīng)關(guān)系。

本發(fā)明實(shí)施例通過(guò)獲取flash文件中編寫(xiě)的目標(biāo)程序代碼,在目標(biāo)程序代碼中查找函數(shù)名,對(duì)編寫(xiě)的目標(biāo)程序代碼中的目標(biāo)函數(shù)名計(jì)算目標(biāo)哈希值,將目標(biāo)函數(shù)名利用目標(biāo)哈希值進(jìn)行替換。本發(fā)明實(shí)施例中利用哈希值替換flash文件中的函數(shù)名,避免了反編譯工具從flash文件中獲取到函數(shù)的原始名字,提高了flash文件的安全性,同時(shí)由于計(jì)算的哈希值是唯一的,不會(huì)導(dǎo)致重名的情況,所有函數(shù)名也可以保持同樣的長(zhǎng)度,方便了以后查找函數(shù)的校驗(yàn)。

附圖說(shuō)明

圖1是本發(fā)明實(shí)施例中flash函數(shù)加密的方法的一個(gè)實(shí)施例示意圖;

圖2是圖1所示實(shí)施例中步驟s1的一個(gè)實(shí)施例示意圖;

圖3是圖1所示實(shí)施例中步驟s2的一個(gè)實(shí)施例示意圖;

圖4是圖3所示實(shí)施例中步驟s21的一個(gè)實(shí)施例示意圖;

圖5是圖1所示實(shí)施例中步驟s3的一個(gè)實(shí)施例示意圖;

圖6是圖3所示實(shí)施例中步驟s22的一個(gè)實(shí)施例示意圖;

圖7是本發(fā)明實(shí)施例中flash函數(shù)加密的裝置的一個(gè)實(shí)施例示意圖。

具體實(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ù)的范圍。

本發(fā)明的說(shuō)明書(shū)和權(quán)利要求書(shū)及上述附圖中的術(shù)語(yǔ)“第一”、“第二”等(如果存在)是用于區(qū)別類(lèi)似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的實(shí)施例能夠以除了在這里圖示或描述的內(nèi)容以外的順序?qū)嵤4送?,術(shù)語(yǔ)“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過(guò)程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒(méi)有清楚地列出的或?qū)τ谶@些過(guò)程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。

針對(duì)現(xiàn)有技術(shù)的以上缺陷,如果在原始開(kāi)發(fā)flash程序的使用使用無(wú)意義的函數(shù)名是可以解決這個(gè)問(wèn)題的,但是如果使用無(wú)意義的函數(shù)名,對(duì)于程序開(kāi)發(fā)者來(lái)說(shuō)是巨大的挑戰(zhàn),同時(shí)也使得代碼不容易讀懂。而本發(fā)明實(shí)施例中則提供了一種方法即在開(kāi)發(fā)原始代碼的時(shí)候使用有意義的函數(shù)名,而在開(kāi)發(fā)完成后,通過(guò)編寫(xiě)另一個(gè)工具來(lái)對(duì)所有原始代碼的函數(shù)名進(jìn)行一個(gè)加密,本發(fā)明實(shí)施例中使用對(duì)所有的函數(shù)名計(jì)算出結(jié)果的哈希值(例如md5值)來(lái)代替原始的函數(shù)名,同時(shí)使用哈希值的好處是,哈希值是一串無(wú)意義的字符串,同時(shí)函數(shù)名的唯一性,其最終計(jì)算的哈希值值也是唯一的,不會(huì)導(dǎo)致重名的情況,同時(shí)所有函數(shù)名也可以保持同樣的長(zhǎng)度,也比較方便以后查找函數(shù)的校驗(yàn)。所有函數(shù)名加密后,在使用flash的編譯器對(duì)代碼進(jìn)行編譯,得到最終的flash文件(例如swf文件)。

下面首先詳細(xì)介紹本發(fā)明實(shí)施例中flash函數(shù)加密的方法的實(shí)施例。

請(qǐng)參閱圖1,本發(fā)明實(shí)施例中flash函數(shù)加密的方法的一個(gè)實(shí)施例包括:

s1、獲取flash文件中編寫(xiě)的目標(biāo)程序代碼;

s2、在目標(biāo)程序代碼中查找目標(biāo)函數(shù)名,對(duì)目標(biāo)程序代碼中的目標(biāo)函數(shù)名計(jì)算目標(biāo)哈希值;

本發(fā)明實(shí)施例中,對(duì)編寫(xiě)的目標(biāo)程序代碼中的所有函數(shù)名分別計(jì)算哈希值時(shí),采用的是同一種哈希算法,例如md5,sha-1等,其中,優(yōu)選md5算法。目標(biāo)程序代碼中的函數(shù)名可以是目標(biāo)程序代碼中所有函數(shù)名,也可以是所有函數(shù)名中自定義的核心函數(shù)名。

s3、將目標(biāo)函數(shù)名利用目標(biāo)哈希值進(jìn)行替換。

本發(fā)明實(shí)施例通過(guò)獲取flash文件中編寫(xiě)的目標(biāo)程序代碼,在目標(biāo)程序代碼中查找函數(shù)名,對(duì)編寫(xiě)的目標(biāo)程序代碼中的目標(biāo)函數(shù)名計(jì)算目標(biāo)哈希值,將目標(biāo)函數(shù)名利用目標(biāo)哈希值進(jìn)行替換。本發(fā)明實(shí)施例中利用哈希值替換flash文件中的函數(shù)名,避免了反編譯工具從flash文件中獲取到函數(shù)的原始名字,提高了flash文件的安全性,同時(shí)由于計(jì)算的哈希值是唯一的,不會(huì)導(dǎo)致重名的情況,所有函數(shù)名也可以保持同樣的長(zhǎng)度,方便了以后查找函數(shù)的校驗(yàn)。

如圖2所示,上述步驟s1具體包括:

s11、獲取flash文件中利用c語(yǔ)言編寫(xiě)的第一程序代碼。

由于目前的flash的程序大多采用c語(yǔ)言開(kāi)發(fā)部分核心功能,actionscript開(kāi)發(fā)部分功能,從而兩者結(jié)合起來(lái)成最終的swf文件。而對(duì)于c語(yǔ)言來(lái)說(shuō),則可以讀取所有c語(yǔ)言編寫(xiě)的代碼文件,其中,第一程序代碼為flash文件中利用c語(yǔ)言編寫(xiě)的程序代碼中的部分或全部。

如圖3所示,上述步驟s2具體包括:

s21、在第一程序代碼中查找第一函數(shù)名,對(duì)第一程序代碼中的第一函數(shù)名計(jì)算第一哈希值。

對(duì)于c語(yǔ)言來(lái)說(shuō),則可以讀取所有c語(yǔ)言編寫(xiě)的代碼文件,例如第一程序代碼,從中找到第一函數(shù)名,并對(duì)第一函數(shù)名計(jì)算其第一哈希值。同時(shí)使用stl模塊庫(kù)提供的map容器(映射和多重映射基于某一類(lèi)型key的鍵集的存在,提供對(duì)t類(lèi)型的數(shù)據(jù)進(jìn)行快速和高效的檢索)來(lái)關(guān)聯(lián)第一函數(shù)名和其第一哈希值的對(duì)應(yīng)關(guān)系。而在c語(yǔ)言中,其函數(shù)名是有語(yǔ)法規(guī)則的,每一個(gè)函數(shù)名的定義都是如下:

返回值類(lèi)型函數(shù)名(參數(shù)列表){函數(shù)開(kāi)始括號(hào)}函數(shù)結(jié)束括號(hào)。

按照上述規(guī)則比較容易的可以從所有的c語(yǔ)言的原始第一程序代碼中查找出第一函數(shù)名,并計(jì)算其第一函數(shù)名的第一哈希值。最終所有的第一函數(shù)名和其對(duì)應(yīng)的第一哈希值都可以存儲(chǔ)在map管理容器中。

本實(shí)施例中,同樣的,第一函數(shù)名可以是第一程序代碼中的所有函數(shù)名,也可以是第一程序代碼中,利用c語(yǔ)言編寫(xiě)的程序代碼中自定義的核心函數(shù)名。

如圖4所示,上述步驟s21可以進(jìn)一步包括:

s211、定義存儲(chǔ)c語(yǔ)言函數(shù)名和哈希值管理的容器;

以哈希算法為md5算法,哈希值為md5值為例,定義存儲(chǔ)c語(yǔ)言函數(shù)名和md5值管理的容器map,具體如下:

map<sting,string>mapfuncname;

其中第一個(gè)參數(shù)string用于存儲(chǔ)原始的函數(shù)名,第二個(gè)參數(shù)string用于存儲(chǔ)原始函數(shù)名的md5值。

s212、分別在容器中存儲(chǔ)利用第一函數(shù)名,并生成對(duì)應(yīng)的第一哈希值,建立第一函數(shù)名與第一哈希值對(duì)應(yīng)關(guān)系。

仍以md5值為例,假設(shè)有一個(gè)函數(shù)的函數(shù)名稱(chēng)是“decodedata”,那么存儲(chǔ)如下:

mapfuncname[“decodedata”]=md5.createmd5(“decodedata”);

最終在map容器mapfuncname中存儲(chǔ)了所有的第一函數(shù)名和其對(duì)應(yīng)的md5值(第一哈希值)。

至此,通過(guò)這個(gè)步驟就實(shí)現(xiàn)了對(duì)所有第一函數(shù)名建立與md5值(第一哈希值)的對(duì)應(yīng)關(guān)系。

如圖5所示,上述步驟s3可以進(jìn)一步包括:

s31、將第一函數(shù)名利用第一哈希值進(jìn)行替換。

在步驟s212中建立了第一函數(shù)名稱(chēng)和其第一哈希值的對(duì)應(yīng)關(guān)系,從而在map容器mapfuncname存儲(chǔ)了所有第一函數(shù)名,有了所有第一函數(shù)名后,則需要對(duì)于容器mapfuncname中所有的第一函數(shù)名去在c語(yǔ)言的原始第一程序代碼中查找有使用同樣第一函數(shù)名的地方,然后將第一函數(shù)名稱(chēng)替換成其第一哈希值。

下面仍以哈希值為md5值為例進(jìn)行介紹,具體實(shí)現(xiàn)如下:

map<string,string>mapfuncname;

map<string,string>::iteratorit=mapfuncname.begin();

for(;it!=mapfuncname.end();++it)

{

stringsrcfuncname=(*it).first;

stringstrmd5=(*it).second;

}

其中srcfuncname則是原始的第一函數(shù)名,strmd5則是其原始第一函數(shù)名的md5值(第一哈希值),然后對(duì)于每一個(gè)第一函數(shù)名srcfuncname去c語(yǔ)言的原始第一程序代碼中查找,凡是出現(xiàn)srcfuncname的地方則用strmd5來(lái)替換。

至此,通過(guò)這個(gè)步驟就實(shí)現(xiàn)了利用第一函數(shù)名的地方替換成其第一哈希值。

如圖2所示,上述步驟s1具體還包括:

s12、獲取flash文件中利用actionscript語(yǔ)言編寫(xiě)的第二程序代碼。

其中,第二程序代碼為flash文件中利用actionscript語(yǔ)言編寫(xiě)的程序代碼中的部分或全部,對(duì)于actionscript中的函數(shù),本文對(duì)于所有函數(shù)的定義都是定義在一個(gè)class中的成員函數(shù),所以所有函數(shù)的定義都包含在class內(nèi),那么查找所有函數(shù)就在class的代碼內(nèi)進(jìn)行查找。例如:

publicclasswork

{

publicfunctionadd()

{

}

}

其中,在class中有一個(gè)成員函數(shù)publicfunctionadd(),在actionscript中,所有的函數(shù)都是以function作為函數(shù)的前綴,然后是空格,然后是函數(shù)名。

所有函數(shù)的定義:

functionfuncname(參數(shù)):返回類(lèi)型

由此實(shí)現(xiàn)在actionscript的代碼中對(duì)每個(gè)class中查找所有的第二函數(shù)名。

如圖3所示,上述步驟s2具體還包括:

s22、在第二程序代碼中查找第二函數(shù)名,對(duì)第二程序代碼中的第二函數(shù)名計(jì)算第二哈希值。

本發(fā)明實(shí)施例中,第一哈希值和第二哈希值可以是采用同樣的哈希算法計(jì)算的,例如均為md5算法計(jì)算的,也可以是采用不同的哈希算法計(jì)算出來(lái)的,以進(jìn)一步提高安全性,此處不做限定。

本實(shí)施例中,同樣的,第二函數(shù)名可以是第二程序代碼中,利用actionscript語(yǔ)言編寫(xiě)的程序代碼中的所有函數(shù)名,也可以是第二程序代碼中,利用actionscript語(yǔ)言編寫(xiě)的程序代碼中自定義的核心函數(shù)名。

由于每個(gè)不同的class是可以定義相同的函數(shù)名稱(chēng)的,所以對(duì)于每個(gè)第二函數(shù)名對(duì)應(yīng)的第二哈希值則需要將class的名稱(chēng)和第二函數(shù)名一起來(lái)計(jì)算其第二哈希值。

如圖6所示,上述步驟s22具體進(jìn)一步還可以包括:

s221、定義存儲(chǔ)actionscript語(yǔ)言函數(shù)名和哈希值管理的容器;

以哈希算法為md5算法,哈希值為md5值為例,定義存儲(chǔ)函數(shù)名和md5值(哈希值)管理的容器map,具體如下:

map<sting,string>mapactionname;

其中第一個(gè)參數(shù)string用于存儲(chǔ)原始的函數(shù)名,第二個(gè)參數(shù)string用于存儲(chǔ)原始函數(shù)名的md5值。

s222、分別在容器中存儲(chǔ)第二函數(shù)名,并生成對(duì)應(yīng)的第二哈希值,建立第二函數(shù)名與第二哈希值對(duì)應(yīng)關(guān)系。

其中,所述容器為上述存儲(chǔ)actionscript語(yǔ)言函數(shù)名和哈希值管理的容器。

仍以md5值為例,假設(shè)上文提到的classwork有一個(gè)函數(shù)是“add”,那么存儲(chǔ)如下:

mapactionname[“work_add”]=md5.createmd5(“work_add”);

最終在map容器mapactionname中存儲(chǔ)了所有的第二函數(shù)名和其對(duì)應(yīng)的md5值(第二哈希值),這樣即使有不同的class有同一個(gè)函數(shù)也是不會(huì)導(dǎo)致其md5值(第二哈希值)相同。

通過(guò)對(duì)所有class的函數(shù)名稱(chēng)做上述操作,則可以將所有的第二函數(shù)名存儲(chǔ)在容器mapactionname中。其中,需要注意的是,對(duì)于每個(gè)class的構(gòu)造第二函數(shù)名稱(chēng)本發(fā)明實(shí)施例中不做替換,例如對(duì)于classwork會(huì)在這個(gè)class中存在一個(gè)第二函數(shù)名也叫work則對(duì)于這個(gè)第二函數(shù)名不做替換。

至此,通過(guò)這個(gè)步驟就實(shí)現(xiàn)存儲(chǔ)所有actionscript中所有第二函數(shù)名稱(chēng)和其md5值(第二哈希值)的對(duì)應(yīng)關(guān)系。

如圖5所示,上述步驟s3還可以進(jìn)一步包括:

s32、將第二函數(shù)名利用第二哈希值進(jìn)行替換。

第二哈希值仍以md5值為例,對(duì)在actionscript語(yǔ)言代碼中查找第二函數(shù)名使用的地方并替換成md5值。

而對(duì)于actionscript中可能存在多個(gè)class有同樣的第二函數(shù)名的情況,其第二函數(shù)名稱(chēng)替換會(huì)復(fù)雜些,對(duì)于每個(gè)函數(shù)的原始函數(shù)名本發(fā)明實(shí)施例中是都包含了其class名稱(chēng)和函數(shù)名稱(chēng),在actionscript腳本中對(duì)于每個(gè)函數(shù)的調(diào)用有2種情況:一種是在一個(gè)class中調(diào)用該class的函數(shù),對(duì)于這種情況調(diào)用的地方只需要函數(shù)名稱(chēng),第二種情況則是在一個(gè)class中調(diào)用另一個(gè)class的函數(shù),則對(duì)于這種情況是會(huì)使用該class的對(duì)象加.號(hào)再加上函數(shù)名稱(chēng)。所以在進(jìn)行第二函數(shù)名替換時(shí),如果對(duì)于第一種情況則替換成該class下的函數(shù)的md5值(第二哈希值),而對(duì)于第二種情況則需要查找函數(shù).號(hào)前面對(duì)象所屬于哪個(gè)class,在這個(gè)對(duì)象創(chuàng)建的地方就可以獲取其是那個(gè)class,則需要替換成對(duì)應(yīng)那個(gè)class的函數(shù)名稱(chēng)。具體替換則和步驟s31中的替換方法一樣。

至此,通過(guò)這個(gè)步驟就實(shí)現(xiàn)對(duì)actionscript中函數(shù)調(diào)用的地方進(jìn)行第二函數(shù)名稱(chēng)的替換。

下面介紹本發(fā)明實(shí)施例中flash函數(shù)加密的裝置的實(shí)施例。

請(qǐng)參閱圖7,為本發(fā)明實(shí)施例中flash函數(shù)加密的裝置的一個(gè)實(shí)施例示意圖,該flash函數(shù)加密的裝置包括:

獲取單元701,用于獲取flash文件中編寫(xiě)的目標(biāo)程序代碼;

哈希計(jì)算單元702,用于在所述目標(biāo)程序代碼中查找目標(biāo)函數(shù)名,對(duì)所述目標(biāo)程序代碼中的目標(biāo)函數(shù)名計(jì)算目標(biāo)哈希值;

替換單元703,用于將所述目標(biāo)函數(shù)名利用所述目標(biāo)哈希值進(jìn)行替換。

進(jìn)一步的,所述獲取單元701具體用于:

獲取flash文件中利用c語(yǔ)言編寫(xiě)的第一程序代碼;

所述哈希計(jì)算單元702具體用于:

在所述第一程序代碼中查找第一函數(shù)名,對(duì)所述第一程序代碼中的第一函數(shù)名計(jì)算第一哈希值;

所述替換單元703具體用于:

將所述第一函數(shù)名利用所述第一哈希值進(jìn)行替換。

進(jìn)一步的,所述哈希計(jì)算單元702具體用于:

定義存儲(chǔ)c語(yǔ)言函數(shù)名和哈希值管理的容器;

分別在所述容器中存儲(chǔ)所述第一函數(shù)名,并生成對(duì)應(yīng)的第一哈希值,建立所述第一函數(shù)名與所述第一哈希值對(duì)應(yīng)關(guān)系。

進(jìn)一步的,所述獲取單元701具體還用于:

獲取flash文件中利用actionscript語(yǔ)言編寫(xiě)的第二程序代碼;

所述哈希計(jì)算單元702具體還用于:

在所述第二程序代碼中查找第二函數(shù)名,對(duì)所述第二程序代碼中的第二函數(shù)名計(jì)算第二哈希值;

所述替換單元703具體還用于:

將所述第二函數(shù)名利用所述第二哈希值進(jìn)行替換。

進(jìn)一步的,所述哈希計(jì)算單元702具體用于:

定義存儲(chǔ)actionscript語(yǔ)言函數(shù)名和哈希值管理的容器;

分別在所述容器中存儲(chǔ)所述第二函數(shù)名,并生成對(duì)應(yīng)的第二哈希值,建立所述第二函數(shù)名與所述第二哈希值對(duì)應(yīng)關(guān)系。

所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng),裝置和單元的具體工作過(guò)程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過(guò)程,在此不再贅述。

在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過(guò)其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。

所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。

另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以?xún)蓚€(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。

所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷(xiāo)售或使用時(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盤(pán)、移動(dòng)硬盤(pán)、只讀存儲(chǔ)器(rom,read-onlymemory)、隨機(jī)存取存儲(chǔ)器(ram,randomaccessmemory)、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。

以上所述,以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1