中文字幕无码日韩视频无码三区

Java程序的保護與運行方法、裝置和終端與流程

文檔序號:11199796閱讀:921來源:國知局
Java程序的保護與運行方法、裝置和終端與流程

本發明(ming)實施例(li)涉(she)及軟件保(bao)護技術,尤(you)其涉(she)及一種(zhong)java程序的保(bao)護與運行方法、裝(zhuang)置(zhi)和終端。



背景技術:

軟(ruan)(ruan)件(jian)作為一(yi)種特殊的產品(pin),由于其數(shu)字化(hua)的特征,從問世(shi)起就一(yi)直遭受(shou)盜(dao)版(ban)的困擾。盜(dao)版(ban)的存在不(bu)僅(jin)給(gei)軟(ruan)(ruan)件(jian)開(kai)發(fa)(fa)者造成(cheng)了巨大的損失,也極大的阻礙了整個(ge)軟(ruan)(ruan)件(jian)行業的發(fa)(fa)展。java程序很容易被反(fan)編(bian)譯,對于class類文(wen)件(jian)采(cai)用jdk(javadevelopmentkit,軟(ruan)(ruan)件(jian)開(kai)發(fa)(fa)工(gong)具(ju)包(bao))的javap命令行工(gong)具(ju)可(ke)以得到java虛擬(ni)機指令,另外采(cai)用反(fan)編(bian)譯軟(ruan)(ruan)件(jian)jd_gui可(ke)以直接得到java源(yuan)碼,因此軟(ruan)(ruan)件(jian)很容易被反(fan)編(bian)譯,進而被盜(dao)版(ban),安全性很低(di)。



技術實現要素:

本發明(ming)提(ti)供一種java程(cheng)序的保護與運行方法、裝置、終(zhong)端和計算機存儲介質(zhi),以實現增加反編譯的難(nan)度(du),提(ti)高軟(ruan)件(jian)產(chan)品的安全性。

第一方(fang)面,本發(fa)明實施例提(ti)供了一種java程序的保護方(fang)法,包括:

獲取java程序(xu)中待保護方法的java虛(xu)擬機指令、參數和(he)返(fan)回(hui)值;

對所述java虛擬機指令進行加密;

將加密后的java虛擬機指令保存在指定的目(mu)錄;

構造受保護(hu)方法(fa),所(suo)(suo)(suo)(suo)述(shu)受保護(hu)方法(fa)中包括:用于查(cha)找(zhao)所(suo)(suo)(suo)(suo)述(shu)加密(mi)后(hou)(hou)的(de)(de)java虛(xu)擬機指(zhi)令(ling)的(de)(de)代碼、用于對(dui)所(suo)(suo)(suo)(suo)述(shu)加密(mi)后(hou)(hou)的(de)(de)java虛(xu)擬機指(zhi)令(ling)進行(xing)解(jie)密(mi)的(de)(de)代碼以及(ji)用于根據(ju)所(suo)(suo)(suo)(suo)述(shu)參(can)數和返回(hui)值運行(xing)解(jie)密(mi)后(hou)(hou)的(de)(de)java虛(xu)擬機指(zhi)令(ling)的(de)(de)代碼;

使用所(suo)述受保護(hu)方法替(ti)換所(suo)述java程序中的所(suo)述待保護(hu)方法。

第二(er)方(fang)(fang)面(mian),本發明實(shi)施例還(huan)提供了一種java程序的(de)運行方(fang)(fang)法(fa),包括:

當java程序運行到受保(bao)護(hu)方(fang)(fang)法時,查找加密后的(de)java虛擬機指(zhi)令;其中,所(suo)述(shu)受保(bao)護(hu)方(fang)(fang)法是(shi)上述(shu)的(de)受保(bao)護(hu)方(fang)(fang)法;

對所述加密后的(de)java虛(xu)擬機(ji)指令進行(xing)解密;

根(gen)據所述參數和返回值運行解密后的(de)java虛擬機(ji)指令。

第三方面,本發明(ming)實施例還提供了(le)一種(zhong)java程序的保護裝置(zhi),包括:

獲(huo)取(qu)模塊,用于獲(huo)取(qu)java程序中待(dai)保護方法的(de)java虛擬機指令(ling)、參(can)數和返回(hui)值(zhi);

加密模塊,用于對所(suo)述java虛擬機(ji)指令進行加密;

保存(cun)模塊,用于將加密后的java虛(xu)擬機指(zhi)令保存(cun)在指(zhi)定的目錄;

構(gou)造模(mo)塊,用(yong)于(yu)構(gou)造受(shou)保(bao)護方(fang)法(fa),所述(shu)受(shou)保(bao)護方(fang)法(fa)中包括(kuo):用(yong)于(yu)查找所述(shu)加密(mi)后(hou)的(de)java虛(xu)擬機(ji)指(zhi)令(ling)的(de)代碼、用(yong)于(yu)對所述(shu)加密(mi)后(hou)的(de)java虛(xu)擬機(ji)指(zhi)令(ling)進行(xing)(xing)解密(mi)的(de)代碼以及用(yong)于(yu)根據所述(shu)參(can)數和返回值運行(xing)(xing)解密(mi)后(hou)的(de)java虛(xu)擬機(ji)指(zhi)令(ling);

替換模塊,用于使用所(suo)述受(shou)保護(hu)方法(fa)替換所(suo)述java程序(xu)中的所(suo)述待保護(hu)方法(fa)。

第四方(fang)面(mian),本發明實(shi)施(shi)例還提供了一種java程序的運行裝置,包括:

查找(zhao)模塊,用于當java程序運(yun)行到受(shou)保(bao)護(hu)方(fang)法時,查找(zhao)加密后的(de)java虛擬機指令;其中,所述受(shou)保(bao)護(hu)方(fang)法是上述的(de)受(shou)保(bao)護(hu)方(fang)法;

解密模塊,用于對所述加密后的java虛擬機(ji)指令進(jin)行解密;

運行模(mo)塊,用于根據參數和返回值運行解密后的java虛擬機指令(ling)。

第五(wu)方面,本發(fa)明實(shi)施例還提供了一種(zhong)終端,所述(shu)終端包括(kuo):

一個或多個處理器;

存儲器(qi),用于存儲一個(ge)(ge)或(huo)多個(ge)(ge)程序,

當(dang)所(suo)述一(yi)個(ge)(ge)或多個(ge)(ge)程序被(bei)所(suo)述一(yi)個(ge)(ge)或多個(ge)(ge)處理器執行,使(shi)得所(suo)述一(yi)個(ge)(ge)或多個(ge)(ge)處理器實現上述的(de)java程序的(de)保護方法(fa)。

第六(liu)方(fang)面(mian),本發明實(shi)施例(li)還提供了(le)一種終(zhong)端,所(suo)述終(zhong)端包括:

一個或多個處理器;

存儲器,用(yong)于存儲一(yi)個(ge)或多個(ge)程序,

當所述(shu)一個(ge)或多個(ge)程序(xu)被所述(shu)一個(ge)或多個(ge)處理器執行,使得所述(shu)一個(ge)或多個(ge)處理器實現上述(shu)的(de)(de)java程序(xu)的(de)(de)運(yun)行方法。

第七方(fang)面,本(ben)發明實(shi)施例還提(ti)供了一種計算機存(cun)儲(chu)介質,其上(shang)存(cun)儲(chu)有計算機程(cheng)序(xu),該程(cheng)序(xu)被處理器執行時(shi)實(shi)現上(shang)述的java程(cheng)序(xu)的保護方(fang)法。

第八方面,本發明實施例還提(ti)供了(le)一種計算機存(cun)(cun)儲介(jie)質,其上(shang)(shang)存(cun)(cun)儲有計算機程(cheng)序,該程(cheng)序被(bei)處理器執行(xing)時實現上(shang)(shang)述的(de)java程(cheng)序的(de)運行(xing)方法。

本發明實施例將java程(cheng)序(xu)中待保(bao)護方法(fa)的(de)(de)(de)(de)java虛(xu)(xu)(xu)擬(ni)(ni)機(ji)指(zhi)(zhi)令加(jia)密(mi),構造出沒(mei)有記載未加(jia)密(mi)的(de)(de)(de)(de)虛(xu)(xu)(xu)擬(ni)(ni)機(ji)指(zhi)(zhi)令的(de)(de)(de)(de)受保(bao)護方法(fa),該受保(bao)護方法(fa)運(yun)行(xing)(xing)時,會查找加(jia)密(mi)后(hou)(hou)的(de)(de)(de)(de)java虛(xu)(xu)(xu)擬(ni)(ni)機(ji)指(zhi)(zhi)令進行(xing)(xing)解(jie)(jie)密(mi),運(yun)行(xing)(xing)解(jie)(jie)密(mi)后(hou)(hou)的(de)(de)(de)(de)虛(xu)(xu)(xu)擬(ni)(ni)機(ji)指(zhi)(zhi)令。這種方法(fa)級(ji)別的(de)(de)(de)(de)加(jia)密(mi)保(bao)護使(shi)得只有當(dang)執行(xing)(xing)到(dao)受保(bao)護方法(fa)時,才會在內存中對加(jia)密(mi)后(hou)(hou)的(de)(de)(de)(de)java虛(xu)(xu)(xu)擬(ni)(ni)機(ji)指(zhi)(zhi)令進行(xing)(xing)解(jie)(jie)密(mi),而無(wu)法(fa)直接用(yong)反編譯工具獲取(qu)到(dao)java程(cheng)序(xu)的(de)(de)(de)(de)源碼,解(jie)(jie)決現有技術中軟(ruan)件易于被反編譯和(he)盜版,安(an)全性(xing)很低的(de)(de)(de)(de)問(wen)題,實現增(zeng)加(jia)反編譯的(de)(de)(de)(de)難度,提高(gao)軟(ruan)件產品的(de)(de)(de)(de)安(an)全性(xing)效果。

附圖說明

圖1是本發(fa)明實施(shi)例一提供的java程序的保(bao)護(hu)方法(fa)的流程圖;

圖(tu)2是本發明實(shi)施例二提供的java程序(xu)的保護方法的流程圖(tu);

圖3是本發明實施例三提供(gong)的java程(cheng)序的運行方法的流程(cheng)圖;

圖4是本發(fa)明實(shi)施(shi)例四提供(gong)的java程序的保護裝置的結構示(shi)意(yi)圖;

圖5是本發明實(shi)施例(li)五提供的java程(cheng)序(xu)的運行裝置的結構示(shi)意(yi)圖;

圖(tu)6是本發明實施例(li)六提供的(de)終端的(de)結(jie)構(gou)示意圖(tu);

圖(tu)7是(shi)本發明實(shi)施例(li)七(qi)提供的終端的結構示意(yi)圖(tu)。

具體實施方式

下(xia)面結合附(fu)圖和(he)實施例(li)對(dui)本發(fa)明(ming)作(zuo)進一步(bu)的詳細說明(ming)。可以理解的是(shi),此處(chu)所描述(shu)的具體實施例(li)僅(jin)僅(jin)用于解釋本發(fa)明(ming),而非(fei)對(dui)本發(fa)明(ming)的限定。另外(wai)還需(xu)要說明(ming)的是(shi),為了便(bian)于描述(shu),附(fu)圖中僅(jin)示(shi)出了與本發(fa)明(ming)相關的部分(fen)而非(fei)全部結構。

實施例一

圖(tu)1為本發明實施(shi)例一(yi)提供的java程序(xu)的保護方(fang)法的流程圖(tu),本實施(shi)例可適用于對java程序(xu)進行加(jia)密編譯,以(yi)避免被反編譯的情況,該方(fang)法可以(yi)由計(ji)算機終端來執行,具體包括如下步驟:

步驟110、獲取java程序中待保護方(fang)法的(de)java虛擬機指令、參數和返回(hui)值;

步驟120、對所述java虛擬機(ji)指令進(jin)行(xing)加(jia)密;

步驟130、將加密后的(de)java虛(xu)擬機指令(ling)保存在指定的(de)目錄;

步驟140、構造受保護方法,所(suo)(suo)述(shu)受保護方法中包括:用于(yu)查找(zhao)加(jia)密(mi)后(hou)的(de)java虛擬機(ji)指令(ling)的(de)代碼、用于(yu)對所(suo)(suo)述(shu)加(jia)密(mi)后(hou)的(de)java虛擬機(ji)指令(ling)進行(xing)解(jie)密(mi)的(de)代碼以及用于(yu)根據所(suo)(suo)述(shu)參(can)數和返回值運行(xing)解(jie)密(mi)后(hou)的(de)java虛擬機(ji)指令(ling)的(de)代碼;

步驟150、使用(yong)所述(shu)(shu)受保護方法替(ti)換(huan)所述(shu)(shu)java程(cheng)序中(zhong)的所述(shu)(shu)待保護方法。

一般地,java程(cheng)序中的(de)(de)(de)(de)方(fang)法(fa)記載在(zai)類文件(class文件)中,其包含用于(yu)讀取java虛(xu)(xu)(xu)(xu)擬(ni)機(ji)(ji)指(zhi)令(ling)的(de)(de)(de)(de)代碼以及(ji)用于(yu)根據參數(shu)和返回(hui)值運(yun)行(xing)(xing)java虛(xu)(xu)(xu)(xu)擬(ni)機(ji)(ji)指(zhi)令(ling)的(de)(de)(de)(de)代碼。本實(shi)施例提供的(de)(de)(de)(de)java程(cheng)序的(de)(de)(de)(de)保護(hu)(hu)(hu)(hu)方(fang)法(fa),獲取待(dai)編譯的(de)(de)(de)(de)方(fang)法(fa)的(de)(de)(de)(de)java虛(xu)(xu)(xu)(xu)擬(ni)機(ji)(ji)指(zhi)令(ling)、參數(shu)和返回(hui)值后(hou),將java虛(xu)(xu)(xu)(xu)擬(ni)機(ji)(ji)指(zhi)令(ling)加密并保存在(zai)指(zhi)定的(de)(de)(de)(de)目錄中,構造沒有(you)直接記載原(yuan)來(lai)的(de)(de)(de)(de)java虛(xu)(xu)(xu)(xu)擬(ni)機(ji)(ji)指(zhi)令(ling)的(de)(de)(de)(de)受保護(hu)(hu)(hu)(hu)方(fang)法(fa),只(zhi)有(you)在(zai)受保護(hu)(hu)(hu)(hu)方(fang)法(fa)運(yun)行(xing)(xing)時,才會在(zai)內存中解(jie)密java虛(xu)(xu)(xu)(xu)擬(ni)機(ji)(ji)指(zhi)令(ling),根據原(yuan)來(lai)的(de)(de)(de)(de)參數(shu)和返回(hui)值運(yun)行(xing)(xing)解(jie)密后(hou)的(de)(de)(de)(de)java虛(xu)(xu)(xu)(xu)擬(ni)機(ji)(ji)指(zhi)令(ling),實(shi)現運(yun)行(xing)(xing)待(dai)保護(hu)(hu)(hu)(hu)方(fang)法(fa)。從而不能(neng)直接反編譯獲得(de)待(dai)保護(hu)(hu)(hu)(hu)方(fang)法(fa)的(de)(de)(de)(de)實(shi)際的(de)(de)(de)(de)運(yun)行(xing)(xing)過程(cheng),實(shi)現對java程(cheng)序的(de)(de)(de)(de)保護(hu)(hu)(hu)(hu)。

具體(ti)地,所(suo)述指定(ding)的(de)目錄(lu)優選為所(suo)述java程(cheng)序(xu)的(de)壓縮(suo)包的(de)隨機子(zi)目錄(lu),以避免該(gai)方法(fa)運行(xing)過程(cheng)中出現(xian)調用錯誤的(de)情況。

進(jin)一步(bu)地,在(zai)受保護方法中的(de)用于根據所述參數和返(fan)回(hui)值運行(xing)解(jie)密后的(de)java虛擬機指令的(de)代碼,在(zai)被處(chu)理器執(zhi)行(xing)時,實現以下(xia)步(bu)驟:

根據解密后的java虛擬機指(zhi)令創建(jian)自定義的classloader和(he)臨時類;

使(shi)用所述(shu)自定義的classloader加載所述(shu)臨(lin)時類,并(bing)通(tong)過(guo)反射(she)機制獲取到所述(shu)臨(lin)時類中的方法;

根據讀取的所(suo)述參數(shu)和返回值,運行所(suo)述臨時類(lei)中的方法(fa)。

由于將(jiang)加密后的java虛(xu)擬機(ji)指令保存在壓(ya)縮包的子(zi)目(mu)錄中,java自(zi)帶的classloader無法加載,本實施例通過自(zi)定(ding)義classloader,創建臨時類(lei),獲取(qu)到臨時類(lei)中的方法。結合獲取(qu)到的參數和返回值,可以運行設計者實際要編譯(yi)的方法。

本(ben)實(shi)施例的(de)(de)技術(shu)方(fang)案,將java程序(xu)中待保(bao)(bao)護(hu)方(fang)法(fa)的(de)(de)java虛(xu)擬(ni)機(ji)指(zhi)令(ling)加(jia)密(mi),構造出沒有記載未加(jia)密(mi)的(de)(de)虛(xu)擬(ni)機(ji)指(zhi)令(ling)的(de)(de)受(shou)(shou)保(bao)(bao)護(hu)方(fang)法(fa),該受(shou)(shou)保(bao)(bao)護(hu)方(fang)法(fa)運(yun)行時(shi),會查找加(jia)密(mi)后的(de)(de)java虛(xu)擬(ni)機(ji)指(zhi)令(ling)進行解(jie)密(mi),運(yun)行解(jie)密(mi)后的(de)(de)虛(xu)擬(ni)機(ji)指(zhi)令(ling)。這種方(fang)法(fa)級別的(de)(de)加(jia)密(mi)保(bao)(bao)護(hu)使得只有當執行到受(shou)(shou)保(bao)(bao)護(hu)方(fang)法(fa)時(shi),才會在內存(cun)中將加(jia)密(mi)后的(de)(de)java虛(xu)擬(ni)機(ji)指(zhi)令(ling)進行解(jie)密(mi),而無法(fa)直接用反編(bian)譯工具獲取到java程序(xu)的(de)(de)源碼,解(jie)決現有技術(shu)中軟件易于(yu)被(bei)反編(bian)譯和盜版,安全(quan)性很低的(de)(de)問題,實(shi)現增加(jia)反編(bian)譯的(de)(de)難(nan)度,提高軟件的(de)(de)安全(quan)性效果(guo)。

實施例二

圖2為本發明實(shi)(shi)施(shi)(shi)例(li)二提供(gong)的(de)java程序(xu)的(de)保(bao)(bao)護(hu)方法(fa)的(de)流程圖,本實(shi)(shi)施(shi)(shi)例(li)可(ke)適用(yong)于(yu)對java程序(xu)進(jin)行加密編譯,以避免被反編譯的(de)情況,該方法(fa)可(ke)以由計算機終端來執行。本實(shi)(shi)施(shi)(shi)例(li)與實(shi)(shi)施(shi)(shi)例(li)一的(de)區別點(dian)在于(yu)本實(shi)(shi)施(shi)(shi)例(li)獲(huo)取(qu)待(dai)(dai)保(bao)(bao)護(hu)方法(fa)的(de)虛(xu)擬(ni)機指令、參數和返回值,是(shi)通(tong)過(guo)從待(dai)(dai)加密的(de)java程序(xu)的(de)類(lei)文件中(zhong)分析得出類(lei)中(zhong)的(de)方法(fa)的(de)虛(xu)擬(ni)機指令、參數和返回值;對所述虛(xu)擬(ni)機指令加密后,是(shi)通(tong)過(guo)采用(yong)jclasslib在該待(dai)(dai)加密的(de)java程序(xu)的(de)類(lei)文件中(zhong)將待(dai)(dai)保(bao)(bao)護(hu)方法(fa)修改為受保(bao)(bao)護(hu)方法(fa)來實(shi)(shi)現使用(yong)受保(bao)(bao)護(hu)方法(fa)替代待(dai)(dai)保(bao)(bao)護(hu)方法(fa)。具體地(di),如圖2所示,本實(shi)(shi)施(shi)(shi)例(li)提供(gong)的(de)包括如下步驟:

步驟210、從java程(cheng)序的(de)類文件(jian)中(zhong)讀取待(dai)保護方法的(de)java虛擬機指令、參數和返(fan)回值;

步驟220、對(dui)所述(shu)java虛(xu)擬機(ji)指(zhi)令進(jin)行加密;

步驟230、將加密后(hou)的(de)(de)java虛擬機指令保存在指定的(de)(de)目錄;

步驟240、構(gou)造受保(bao)護方(fang)法,所(suo)述受保(bao)護方(fang)法中(zhong)包括:用(yong)于查找加密(mi)后的(de)java虛(xu)(xu)擬機指(zhi)令(ling)的(de)代(dai)(dai)碼、用(yong)于對所(suo)述加密(mi)后的(de)java虛(xu)(xu)擬機指(zhi)令(ling)進行(xing)(xing)解(jie)密(mi)的(de)代(dai)(dai)碼以及(ji)用(yong)于根據所(suo)述參數和返回值(zhi)運行(xing)(xing)解(jie)密(mi)后的(de)java虛(xu)(xu)擬機指(zhi)令(ling)的(de)代(dai)(dai)碼;

步驟250、采用jclasslib在(zai)所述java程序的類文(wen)件中將所述待保護(hu)方法修改為所述受保護(hu)方法。

本(ben)實施(shi)例提供(gong)的(de)java程序(xu)的(de)保(bao)(bao)護(hu)方(fang)法(fa)可供(gong)專門負責(ze)對(dui)軟件產品進(jin)行(xing)加密保(bao)(bao)護(hu)的(de)開發者(zhe)(zhe)使(shi)用,實現對(dui)已有的(de)java程序(xu)進(jin)行(xing)方(fang)法(fa)級別的(de)保(bao)(bao)護(hu)。待保(bao)(bao)護(hu)方(fang)法(fa),可以是(shi)由開發者(zhe)(zhe)選擇指定,也可以是(shi)隨(sui)機選擇,或者(zhe)(zhe)是(shi)java程序(xu)中每一方(fang)法(fa)都作為待保(bao)(bao)護(hu)方(fang)法(fa)。

在(zai)上(shang)述技(ji)術方(fang)(fang)案的(de)(de)基礎(chu)上(shang),步驟220、對java虛(xu)擬機指令進行(xing)加(jia)(jia)密(mi)(mi),可使用(yong)純(chun)軟件的(de)(de)算(suan)(suan)法(fa)(fa)(fa)(fa)來進行(xing)加(jia)(jia)密(mi)(mi),例如,使用(yong)aes加(jia)(jia)密(mi)(mi)算(suan)(suan)法(fa)(fa)(fa)(fa)或rsa加(jia)(jia)密(mi)(mi)算(suan)(suan)法(fa)(fa)(fa)(fa)對所述方(fang)(fang)法(fa)(fa)(fa)(fa)的(de)(de)java虛(xu)擬機指令進行(xing)加(jia)(jia)密(mi)(mi)。對應地,方(fang)(fang)法(fa)(fa)(fa)(fa)的(de)(de)運行(xing)步驟是采(cai)用(yong)aes加(jia)(jia)密(mi)(mi)算(suan)(suan)法(fa)(fa)(fa)(fa)或rsa加(jia)(jia)密(mi)(mi)算(suan)(suan)法(fa)(fa)(fa)(fa)所對應的(de)(de)解密(mi)(mi)算(suan)(suan)法(fa)(fa)(fa)(fa)解密(mi)(mi)虛(xu)擬機指令。

為了進一步(bu)提高java程序被反編譯(yi)的難度,本實施例優選(xuan)使用存儲在硬件加密(mi)鎖中(zhong)的加密(mi)算法來(lai)對java虛擬機指令進行加密(mi)。具體地,步(bu)驟220、對java虛擬機指令進行加密(mi)包括(kuo):

通過(guo)jni調用硬件(jian)加密鎖中的加密算法;

使用該加密(mi)算法(fa)(fa)對(dui)所述待保護方法(fa)(fa)的java虛擬機指令進行加密(mi)。

硬(ying)件(jian)(jian)(jian)加(jia)(jia)密(mi)(mi)(mi)鎖(suo)(suo)(suo)是一種可(ke)(ke)(ke)(ke)插(cha)拔連(lian)接在計算(suan)機終(zhong)端(duan),可(ke)(ke)(ke)(ke)與(yu)計算(suan)機終(zhong)端(duan)進行(xing)(xing)數據交(jiao)換的(de)(de)加(jia)(jia)密(mi)(mi)(mi)產品。硬(ying)件(jian)(jian)(jian)加(jia)(jia)密(mi)(mi)(mi)鎖(suo)(suo)(suo)能(neng)存儲(chu)(chu)加(jia)(jia)密(mi)(mi)(mi)算(suan)法(fa)(fa)(fa),當它連(lian)接在計算(suan)機終(zhong)端(duan)上(shang)(shang),計算(suan)機終(zhong)端(duan)上(shang)(shang)執行(xing)(xing)的(de)(de)程(cheng)(cheng)序可(ke)(ke)(ke)(ke)調(diao)用存儲(chu)(chu)在加(jia)(jia)密(mi)(mi)(mi)鎖(suo)(suo)(suo)內(nei)(nei)(nei)的(de)(de)加(jia)(jia)密(mi)(mi)(mi)算(suan)法(fa)(fa)(fa),這些加(jia)(jia)密(mi)(mi)(mi)算(suan)法(fa)(fa)(fa)可(ke)(ke)(ke)(ke)通(tong)過使(shi)用加(jia)(jia)密(mi)(mi)(mi)函數對要加(jia)(jia)密(mi)(mi)(mi)的(de)(de)內(nei)(nei)(nei)容(rong)進行(xing)(xing)封裝、混(hun)淆加(jia)(jia)密(mi)(mi)(mi)的(de)(de)內(nei)(nei)(nei)容(rong)的(de)(de)流(liu)程(cheng)(cheng)或(huo)者選取加(jia)(jia)密(mi)(mi)(mi)內(nei)(nei)(nei)容(rong)的(de)(de)片段存放于加(jia)(jia)密(mi)(mi)(mi)鎖(suo)(suo)(suo)等方式實(shi)現。如果(guo)使(shi)用加(jia)(jia)密(mi)(mi)(mi)鎖(suo)(suo)(suo)內(nei)(nei)(nei)的(de)(de)加(jia)(jia)密(mi)(mi)(mi)算(suan)法(fa)(fa)(fa)對本實(shi)施例要保護的(de)(de)java程(cheng)(cheng)序進行(xing)(xing)加(jia)(jia)密(mi)(mi)(mi),則在方法(fa)(fa)(fa)運行(xing)(xing)過程(cheng)(cheng)中,也(ye)需要調(diao)用加(jia)(jia)密(mi)(mi)(mi)鎖(suo)(suo)(suo)內(nei)(nei)(nei)的(de)(de)加(jia)(jia)密(mi)(mi)(mi)算(suan)法(fa)(fa)(fa)才(cai)能(neng)進行(xing)(xing)解密(mi)(mi)(mi)。使(shi)得(de)(de)在方法(fa)(fa)(fa)運行(xing)(xing)時(shi),還會通(tong)過加(jia)(jia)密(mi)(mi)(mi)鎖(suo)(suo)(suo)是否(fou)插(cha)拔來驗證(zheng)運行(xing)(xing)java程(cheng)(cheng)序的(de)(de)用戶的(de)(de)合(he)法(fa)(fa)(fa)性。且由(you)于加(jia)(jia)密(mi)(mi)(mi)算(suan)法(fa)(fa)(fa)獨立(li)存儲(chu)(chu)于硬(ying)件(jian)(jian)(jian)加(jia)(jia)密(mi)(mi)(mi)鎖(suo)(suo)(suo)內(nei)(nei)(nei),使(shi)得(de)(de)非法(fa)(fa)(fa)用戶獲得(de)(de)java程(cheng)(cheng)序后,由(you)于缺(que)失運行(xing)(xing)過程(cheng)(cheng)中的(de)(de)必要內(nei)(nei)(nei)容(rong),使(shi)得(de)(de)對java程(cheng)(cheng)序進行(xing)(xing)反(fan)編譯(yi)的(de)(de)難(nan)度更大。

下面以具體的(de)例子(zi)來進(jin)一步說(shuo)明本(ben)實施(shi)例技(ji)術方(fang)案的(de)工(gong)作原理。該例子(zi)在微軟windows764位(wei)系統上(shang)可實現。

假設java程序的源(yuan)碼(ma)如下:

采用eclipse可生成壓縮(suo)包(bao)為(wei)helloworld.jar的(de)(de)java程序,記載上述源碼對應的(de)(de)運(yun)行步(bu)驟。執行本實施例,可分(fen)析(xi)java程序中的(de)(de)類(lei)(lei)及類(lei)(lei)中的(de)(de)方(fang)法。對于(yu)該例子來說,壓縮(suo)包(bao)(jar包(bao))中有一(yi)個(ge)(ge)類(lei)(lei)為(wei)helloworld(對應類(lei)(lei)文件helloworld.class),類(lei)(lei)中有main方(fang)法,方(fang)法有一(yi)個(ge)(ge)字(zi)符串參數,返回(hui)值(zhi)為(wei)空。main方(fang)法的(de)(de)java虛擬機指令(ling)為(wei):

0:getstatic#16//fieldjava/lang/system.out:ljava/io/printstream;

3:ldc#22//stringhello,world!

5:invokevirtual#24//methodjava/io/printstream.println:(ljava/lang/string;)v

8:return

本實施(shi)例保護main方法,調用硬件(jian)加(jia)(jia)密鎖內(nei)的(de)加(jia)(jia)密算法對main方法的(de)java虛擬機(ji)指令(ling)(ling)進(jin)行加(jia)(jia)密,例如使用市場(chang)上的(de)深思精銳5加(jia)(jia)密鎖中的(de)slm_encrypt函數(該函數使用對稱加(jia)(jia)密算法對加(jia)(jia)密內(nei)容進(jin)行加(jia)(jia)密)。將(jiang)加(jia)(jia)密后的(de)java虛擬機(ji)指令(ling)(ling)保存(cun)在和類文件(jian)helloworld.class同目錄下的(de)encrypt_main.hex文件(jian)中。

采用jclasslib在所述java程序(xu)的(de)類文件(helloworld.class)中使(shi)用受(shou)保(bao)護方(fang)法替換待保(bao)護方(fang)法,對應的(de)源(yuan)碼為:

受(shou)保(bao)護(hu)的(de)main方法(fa)中(zhong),read_encrypt_data函數(shu)讀取加密的(de)java虛擬機指令,作為enc_code;decrypt_code函數(shu)是通(tong)過jni調用(yong)精銳5加密鎖的(de)slm_decrypt函數(shu)對(dui)enc_code進行解(jie)密,得到(dao)code。

自定義classloader后,mcl.df(code).getmethods()函數加載臨時類,通過反射獲取臨時類的方法,調用am[0].invoke(args),即(ji)調用參(can)數和返回(hui)(hui)值給java程(cheng)序返回(hui)(hui)原(yuan)來的結果(guo)。

綜上,本實(shi)施例的(de)(de)(de)(de)技術方(fang)(fang)案,將java程(cheng)序中(zhong)待(dai)保護(hu)(hu)方(fang)(fang)法(fa)的(de)(de)(de)(de)java虛(xu)擬(ni)(ni)機(ji)(ji)指(zhi)令采用(yong)硬件加(jia)(jia)(jia)密(mi)(mi)鎖(suo)的(de)(de)(de)(de)加(jia)(jia)(jia)密(mi)(mi)算(suan)法(fa)進行(xing)加(jia)(jia)(jia)密(mi)(mi)保護(hu)(hu),構造出沒有記載未加(jia)(jia)(jia)密(mi)(mi)的(de)(de)(de)(de)虛(xu)擬(ni)(ni)機(ji)(ji)指(zhi)令的(de)(de)(de)(de)受保護(hu)(hu)方(fang)(fang)法(fa),該(gai)受保護(hu)(hu)方(fang)(fang)法(fa)運行(xing)時,會(hui)查找加(jia)(jia)(jia)密(mi)(mi)后(hou)(hou)的(de)(de)(de)(de)java虛(xu)擬(ni)(ni)機(ji)(ji)指(zhi)令進行(xing)解密(mi)(mi),運行(xing)解密(mi)(mi)后(hou)(hou)的(de)(de)(de)(de)虛(xu)擬(ni)(ni)機(ji)(ji)指(zhi)令。這(zhe)種方(fang)(fang)法(fa)級別的(de)(de)(de)(de)加(jia)(jia)(jia)密(mi)(mi)保護(hu)(hu)使得只有當執(zhi)行(xing)到受保護(hu)(hu)方(fang)(fang)法(fa)時,才會(hui)在java程(cheng)序中(zhong)查找加(jia)(jia)(jia)密(mi)(mi)后(hou)(hou)的(de)(de)(de)(de)java虛(xu)擬(ni)(ni)機(ji)(ji)指(zhi)令,并在內存中(zhong)對加(jia)(jia)(jia)密(mi)(mi)后(hou)(hou)的(de)(de)(de)(de)java虛(xu)擬(ni)(ni)機(ji)(ji)指(zhi)令進行(xing)解密(mi)(mi),因此無(wu)法(fa)直接用(yong)反編譯工具獲取到java程(cheng)序的(de)(de)(de)(de)源碼,且需要調用(yong)硬件加(jia)(jia)(jia)密(mi)(mi)鎖(suo)的(de)(de)(de)(de)加(jia)(jia)(jia)密(mi)(mi)算(suan)法(fa),即(ji)要求運行(xing)該(gai)java程(cheng)序的(de)(de)(de)(de)用(yong)戶持有硬件加(jia)(jia)(jia)密(mi)(mi)鎖(suo),驗證(zheng)了用(yong)戶的(de)(de)(de)(de)合法(fa)性,進一步提高(gao)了反編譯的(de)(de)(de)(de)難度。

實施例三

圖(tu)3為本發明實(shi)施(shi)例(li)(li)三提供(gong)的java程序的運行(xing)方(fang)法的流程圖(tu),本實(shi)施(shi)例(li)(li)可適用(yong)于運行(xing)使用(yong)上述實(shi)施(shi)例(li)(li)提供(gong)的保護(hu)方(fang)法加密編譯的java程序,該方(fang)法可以由計算機(ji)終端來執行(xing),具(ju)體(ti)包括如(ru)下步驟:

步驟310、當(dang)java程序運行到受(shou)保(bao)(bao)護(hu)(hu)方法(fa)時,查(cha)找加密后(hou)的(de)java虛擬(ni)機指令;其中(zhong),所述(shu)受(shou)保(bao)(bao)護(hu)(hu)方法(fa)是在對java程序中(zhong)待保(bao)(bao)護(hu)(hu)方法(fa)的(de)java虛擬(ni)機指令加密并保(bao)(bao)存在指定的(de)目錄后(hou)構(gou)造(zao)的(de);所述(shu)受(shou)保(bao)(bao)護(hu)(hu)方法(fa)與所述(shu)待保(bao)(bao)護(hu)(hu)方法(fa)的(de)參數與返回(hui)值(zhi)相同;

步驟320、對所述加(jia)密后(hou)的java虛擬機指令進行(xing)解密;

步驟(zou)330、根據所述(shu)參數和返回值運行解密后(hou)的(de)java虛擬機(ji)指令。

其中,受保(bao)護(hu)方(fang)法(fa)為(wei)實(shi)現上(shang)述(shu)(shu)實(shi)施例所(suo)(suo)構造的(de)受保(bao)護(hu)方(fang)法(fa),包括用(yong)于查找所(suo)(suo)述(shu)(shu)加密后(hou)(hou)的(de)java虛(xu)擬(ni)機(ji)指(zhi)(zhi)令(ling)的(de)代碼(ma)、用(yong)于對所(suo)(suo)述(shu)(shu)加密后(hou)(hou)的(de)java虛(xu)擬(ni)機(ji)指(zhi)(zhi)令(ling)進行解密的(de)代碼(ma)以及用(yong)于根據所(suo)(suo)述(shu)(shu)參數和返回值運行解密后(hou)(hou)的(de)java虛(xu)擬(ni)機(ji)指(zhi)(zhi)令(ling)的(de)代碼(ma),對應實(shi)現步驟(zou)310至330。

在具體實施(shi)時,步驟330、根據所述參數和(he)返回值(zhi),運(yun)行解(jie)密后的(de)java虛擬(ni)機指令,具體包括(kuo):

根據(ju)解密后的java虛擬(ni)機指(zhi)令(ling)創建自(zi)定(ding)義的classloader和臨時類;

使用所述自定義的classloader加(jia)載所述臨時類,并通過反射(she)機制獲取到所述臨時類中(zhong)的方法(fa);

根(gen)據獲取(qu)的(de)所述(shu)參(can)數和(he)返回值,運(yun)行所述(shu)臨時類中的(de)方法。

由于受保(bao)護方(fang)法調用虛擬(ni)機指令的(de)(de)規(gui)則發(fa)生了更改,java自帶的(de)(de)classloader無(wu)法加載,本(ben)實施例通過(guo)自定義classloader,創建臨時類(lei),獲取到(dao)臨時類(lei)中的(de)(de)方(fang)法。結合獲取到(dao)的(de)(de)參(can)數和返回值,可(ke)以(yi)運行設計者實際要編譯(yi)的(de)(de)方(fang)法。

以實(shi)施例二(er)提供的helloword程序為(wei)例,受保護方(fang)法對應的源碼為(wei):

對應的源碼為:

main方(fang)法(fa)的運行步驟如下:

java程序正常運行(xing)(xing),調用到main方法時(shi),read_encrypt_data函(han)數(shu)讀取加密(mi)(mi)的java虛擬(ni)機指令(ling),作為enc_code;decrypt_code函(han)數(shu)是(shi)通(tong)過(guo)jni調用精銳5加密(mi)(mi)鎖的slm_decrypt函(han)數(shu)對(dui)enc_code進行(xing)(xing)解密(mi)(mi),得到code。

自定義classloader后,mcl.df(code).getmethods()函數(shu)加載臨時(shi)類,通過反射(she)獲取臨時(shi)類的(de)方法,調用am[0].invoke(args),即(ji)調用參數(shu)和返回(hui)值給java程序返回(hui)原(yuan)來(lai)的(de)結(jie)果(guo)。

本實(shi)施(shi)例(li)(li)的技術方(fang)案,運行上述實(shi)施(shi)例(li)(li)所構造的受保護方(fang)法,具(ju)備上述實(shi)施(shi)例(li)(li)相應的有益(yi)效果。

當(dang)然,本發明實施所提(ti)供(gong)的(de)java程(cheng)序的(de)運(yun)行方(fang)(fang)法(fa)(fa),其(qi)能運(yun)行的(de)java程(cheng)序方(fang)(fang)法(fa)(fa)不(bu)限(xian)于(yu)上述實施例(li)所構(gou)造的(de)受保(bao)護(hu)方(fang)(fang)法(fa)(fa),還可(ke)以是本發明任意實施例(li)所提(ti)供(gong)的(de)java程(cheng)序的(de)保(bao)護(hu)方(fang)(fang)法(fa)(fa)所構(gou)造的(de)受保(bao)護(hu)方(fang)(fang)法(fa)(fa)。

實施例四

圖4為本發(fa)明實(shi)施(shi)例(li)(li)四提供(gong)的(de)java程序(xu)的(de)保護(hu)裝置的(de)結(jie)構(gou)示(shi)意圖,本實(shi)施(shi)例(li)(li)可適(shi)用于對java程序(xu)進行加密編(bian)譯(yi)(yi),以(yi)避(bi)免被反(fan)編(bian)譯(yi)(yi)的(de)情況(kuang),該(gai)裝置包括:

獲(huo)取模塊(kuai)410,用(yong)于獲(huo)取java程序中待(dai)保護方法的java虛擬機指令、參數和(he)返回值;

加密(mi)模塊420,用于對所(suo)述java虛擬機指令進行加密(mi);

保存模塊430,用于將加密后的java虛擬機(ji)指令保存在指定的目錄;

構(gou)造(zao)模塊440,用(yong)于(yu)構(gou)造(zao)受保護(hu)方法,所(suo)(suo)述受保護(hu)方法中包括:用(yong)于(yu)查找(zhao)加密(mi)(mi)(mi)后的(de)java虛(xu)擬機指(zhi)令(ling)的(de)代(dai)碼(ma)、用(yong)于(yu)對所(suo)(suo)述加密(mi)(mi)(mi)后的(de)java虛(xu)擬機指(zhi)令(ling)進行(xing)解密(mi)(mi)(mi)的(de)代(dai)碼(ma)以及根據所(suo)(suo)述參(can)數和返回(hui)值運行(xing)解密(mi)(mi)(mi)后的(de)java虛(xu)擬機指(zhi)令(ling)的(de)代(dai)碼(ma);

替(ti)換(huan)模塊450,用(yong)(yong)于使用(yong)(yong)所(suo)述(shu)受保(bao)護方法替(ti)換(huan)所(suo)述(shu)java程序(xu)中(zhong)的所(suo)述(shu)待保(bao)護方法。

作為其中一種實施方式,所(suo)述加密模塊420包括:

調用(yong)(yong)單元,用(yong)(yong)于(yu)通過jni調用(yong)(yong)硬(ying)件加密(mi)(mi)鎖中的加密(mi)(mi)算法;

執行(xing)單元(yuan),用(yong)于使(shi)用(yong)該加(jia)密算法(fa)對所述待保(bao)護(hu)方(fang)法(fa)的(de)java虛(xu)擬機指令進(jin)行(xing)加(jia)密。

作為另(ling)一種(zhong)實施方式(shi),所(suo)述(shu)加(jia)(jia)密(mi)(mi)模塊(kuai)420具體用于使用aes加(jia)(jia)密(mi)(mi)算法或(huo)rsa加(jia)(jia)密(mi)(mi)算法對(dui)所(suo)述(shu)待(dai)保護(hu)方法的java虛擬機指令進(jin)行加(jia)(jia)密(mi)(mi)。

作為其中一種實施方(fang)式(shi),所述獲(huo)取模塊具體用于(yu)從java程序(xu)的類文件(jian)中讀取待(dai)保護方(fang)法的java虛擬(ni)機(ji)指令(ling)、參數(shu)和(he)返回(hui)值;

所述(shu)(shu)替換模塊(kuai)具體(ti)用(yong)于采用(yong)jclasslib在所述(shu)(shu)java程序的(de)類文件(jian)中(zhong)將所述(shu)(shu)待(dai)保護(hu)方法修改(gai)為所述(shu)(shu)受保護(hu)方法。

優選地,所(suo)述(shu)指定的目(mu)錄為所(suo)述(shu)java程序的壓縮包的隨機子(zi)目(mu)錄。

本(ben)發明(ming)實施例所(suo)(suo)提供的java程序的保護裝置(zhi)可執行本(ben)發明(ming)任意實施例所(suo)(suo)提供的java程序的保護方(fang)法,具備(bei)執行方(fang)法相應(ying)的功能(neng)模塊和有益效果。

實施例五

圖5為(wei)發明實施例五(wu)提供(gong)的(de)(de)java程(cheng)序的(de)(de)運行(xing)裝置的(de)(de)結構(gou)示意圖,本實施例可適(shi)用于運行(xing)使用上述實施例提供(gong)的(de)(de)保護方法加密編(bian)譯的(de)(de)java程(cheng)序,該裝置包括:

查找模塊510,用于當java程序運行(xing)到受(shou)保(bao)護(hu)(hu)方(fang)(fang)法(fa)時,查找加密(mi)后(hou)的(de)(de)java虛(xu)擬機(ji)指令(ling);其中,所(suo)述(shu)受(shou)保(bao)護(hu)(hu)方(fang)(fang)法(fa)是上述(shu)實施(shi)例所(suo)述(shu)的(de)(de)受(shou)保(bao)護(hu)(hu)方(fang)(fang)法(fa);即(ji)所(suo)述(shu)受(shou)保(bao)護(hu)(hu)方(fang)(fang)法(fa)是在對(dui)java程序中待(dai)保(bao)護(hu)(hu)方(fang)(fang)法(fa)的(de)(de)java虛(xu)擬機(ji)指令(ling)加密(mi)并保(bao)存(cun)在指定的(de)(de)目錄后(hou)構造的(de)(de);所(suo)述(shu)受(shou)保(bao)護(hu)(hu)方(fang)(fang)法(fa)與所(suo)述(shu)待(dai)保(bao)護(hu)(hu)方(fang)(fang)法(fa)的(de)(de)參數與返回(hui)值相(xiang)同;

解密模(mo)塊520,用于對所述加密后(hou)的java虛(xu)擬機指令進行(xing)解密;

運(yun)行模塊530,用于根據所述參數和(he)返(fan)回值運(yun)行解(jie)密(mi)后(hou)的(de)java虛擬機指令。

在具體實施時,運行模塊530包(bao)括(kuo):

創建單(dan)元,用于根據解密后的java虛擬(ni)機指令創建自定義的classloader和臨時類(lei);

加載(zai)單元,用(yong)于使用(yong)所述(shu)自定(ding)義的classloader加載(zai)所述(shu)臨(lin)時類,并通過反射機(ji)制獲取到所述(shu)臨(lin)時類中的方(fang)法;

執行單元(yuan),用(yong)于根據獲取(qu)的所述參數(shu)和(he)返回值,運行所述臨時類中的方法。

本發(fa)明實施(shi)例(li)所提供的(de)java程(cheng)序的(de)運行(xing)(xing)裝(zhuang)置可執行(xing)(xing)本發(fa)明任意實施(shi)例(li)所提供的(de)java程(cheng)序的(de)運行(xing)(xing)方(fang)法,具備執行(xing)(xing)方(fang)法相應(ying)的(de)功能模塊和有益效果。

實施例六

圖(tu)6為本發(fa)明實(shi)施例六提供的一種終端(duan)(duan)的結構(gou)示(shi)意圖(tu),如圖(tu)6所(suo)示(shi),該終端(duan)(duan)包括(kuo)處理(li)(li)器610、存(cun)儲(chu)器620、輸(shu)入(ru)裝置(zhi)630和輸(shu)出(chu)裝置(zhi)640;終端(duan)(duan)中(zhong)(zhong)(zhong)處理(li)(li)器610的數(shu)量(liang)可以(yi)是(shi)一個(ge)或多(duo)個(ge),圖(tu)6中(zhong)(zhong)(zhong)以(yi)一個(ge)處理(li)(li)器610為例;終端(duan)(duan)中(zhong)(zhong)(zhong)的處理(li)(li)器610、存(cun)儲(chu)器620、輸(shu)入(ru)裝置(zhi)630和輸(shu)出(chu)裝置(zhi)640可以(yi)通過總線(xian)(xian)或其(qi)他方式連接(jie),圖(tu)6中(zhong)(zhong)(zhong)以(yi)通過總線(xian)(xian)連接(jie)為例。

存(cun)(cun)(cun)儲器(qi)620作為一種計(ji)算機(ji)可(ke)(ke)讀存(cun)(cun)(cun)儲介(jie)質(zhi),可(ke)(ke)用于(yu)存(cun)(cun)(cun)儲軟件程(cheng)(cheng)(cheng)序(xu)、計(ji)算機(ji)可(ke)(ke)執行(xing)程(cheng)(cheng)(cheng)序(xu)以及(ji)模(mo)(mo)(mo)塊(kuai),本實施例(li)提供的(de)(de)(de)(de)(de)終端(duan)的(de)(de)(de)(de)(de)存(cun)(cun)(cun)儲器(qi)存(cun)(cun)(cun)儲本發明實施例(li)中(zhong)的(de)(de)(de)(de)(de)java程(cheng)(cheng)(cheng)序(xu)的(de)(de)(de)(de)(de)保(bao)護(hu)方(fang)(fang)法(fa)對應的(de)(de)(de)(de)(de)程(cheng)(cheng)(cheng)序(xu)指令(ling)/模(mo)(mo)(mo)塊(kuai)(即java程(cheng)(cheng)(cheng)序(xu)的(de)(de)(de)(de)(de)保(bao)護(hu)裝置中(zhong)的(de)(de)(de)(de)(de)獲取(qu)模(mo)(mo)(mo)塊(kuai)410、加密模(mo)(mo)(mo)塊(kuai)420、保(bao)存(cun)(cun)(cun)模(mo)(mo)(mo)塊(kuai)430、構造模(mo)(mo)(mo)塊(kuai)440和(he)替換模(mo)(mo)(mo)塊(kuai)450)。處理(li)器(qi)610通(tong)過運行(xing)存(cun)(cun)(cun)儲在(zai)存(cun)(cun)(cun)儲器(qi)620中(zhong)的(de)(de)(de)(de)(de)軟件程(cheng)(cheng)(cheng)序(xu)、指令(ling)以及(ji)模(mo)(mo)(mo)塊(kuai),從而執行(xing)終端(duan)的(de)(de)(de)(de)(de)各種功(gong)能應用以及(ji)數據處理(li),即實現上述(shu)的(de)(de)(de)(de)(de)java程(cheng)(cheng)(cheng)序(xu)的(de)(de)(de)(de)(de)保(bao)護(hu)方(fang)(fang)法(fa)。

存(cun)(cun)儲(chu)(chu)(chu)(chu)器620可(ke)主要包括(kuo)(kuo)存(cun)(cun)儲(chu)(chu)(chu)(chu)程序(xu)區(qu)和存(cun)(cun)儲(chu)(chu)(chu)(chu)數(shu)據區(qu),其中,存(cun)(cun)儲(chu)(chu)(chu)(chu)程序(xu)區(qu)可(ke)存(cun)(cun)儲(chu)(chu)(chu)(chu)操作(zuo)系統、至少一個(ge)功能所需的應用程序(xu);存(cun)(cun)儲(chu)(chu)(chu)(chu)數(shu)據區(qu)可(ke)存(cun)(cun)儲(chu)(chu)(chu)(chu)根據終(zhong)端的使用所創(chuang)建(jian)的數(shu)據等。此外,存(cun)(cun)儲(chu)(chu)(chu)(chu)器620可(ke)以包括(kuo)(kuo)高(gao)速隨(sui)機存(cun)(cun)取存(cun)(cun)儲(chu)(chu)(chu)(chu)器,還可(ke)以包括(kuo)(kuo)非易(yi)(yi)失(shi)性存(cun)(cun)儲(chu)(chu)(chu)(chu)器,例如(ru)至少一個(ge)磁盤存(cun)(cun)儲(chu)(chu)(chu)(chu)器件(jian)(jian)、閃存(cun)(cun)器件(jian)(jian)、或其他(ta)非易(yi)(yi)失(shi)性固態存(cun)(cun)儲(chu)(chu)(chu)(chu)器件(jian)(jian)。在一些實例中,存(cun)(cun)儲(chu)(chu)(chu)(chu)器620可(ke)進一步包括(kuo)(kuo)相對(dui)于處理(li)器610遠程設置的存(cun)(cun)儲(chu)(chu)(chu)(chu)器,這些遠程存(cun)(cun)儲(chu)(chu)(chu)(chu)器可(ke)以通過網(wang)絡連接至終(zhong)端。上(shang)述網(wang)絡的實例包括(kuo)(kuo)但(dan)不限于互聯網(wang)、企業內(nei)部網(wang)、局域網(wang)、移動通信網(wang)及其組合(he)。

輸入裝置630可用于接收輸入的數字或字符信(xin)(xin)息,以(yi)及產生與終端(duan)的用戶設(she)置以(yi)及功能控(kong)制有關的鍵信(xin)(xin)號輸入。輸出(chu)裝置640可包括顯示屏等顯示設(she)備。

實施例七

圖7為(wei)(wei)本發明實(shi)施例(li)七提供的(de)(de)一種終端(duan)的(de)(de)結構示意圖,如圖7所示,該終端(duan)包括處理器(qi)710、存儲器(qi)720、輸(shu)(shu)入裝置730和輸(shu)(shu)出裝置740;終端(duan)中(zhong)處理器(qi)710的(de)(de)數量可(ke)以(yi)(yi)是一個(ge)或(huo)多個(ge),圖7中(zhong)以(yi)(yi)一個(ge)處理器(qi)710為(wei)(wei)例(li);終端(duan)中(zhong)的(de)(de)處理器(qi)710、存儲器(qi)720、輸(shu)(shu)入裝置730和輸(shu)(shu)出裝置740可(ke)以(yi)(yi)通過總線或(huo)其他(ta)方(fang)式連接,圖7中(zhong)以(yi)(yi)通過總線連接為(wei)(wei)例(li)。

存(cun)(cun)(cun)(cun)儲(chu)(chu)器720作(zuo)為一種計算機(ji)可(ke)讀存(cun)(cun)(cun)(cun)儲(chu)(chu)介質(zhi),可(ke)用(yong)(yong)于存(cun)(cun)(cun)(cun)儲(chu)(chu)軟件程(cheng)序、計算機(ji)可(ke)執(zhi)行(xing)程(cheng)序以(yi)(yi)及模塊(kuai)(kuai),本(ben)實(shi)施例(li)(li)提供(gong)的(de)(de)(de)終端(duan)的(de)(de)(de)存(cun)(cun)(cun)(cun)儲(chu)(chu)器存(cun)(cun)(cun)(cun)儲(chu)(chu)本(ben)發明實(shi)施例(li)(li)中(zhong)的(de)(de)(de)java程(cheng)序的(de)(de)(de)運行(xing)方(fang)法對應(ying)的(de)(de)(de)程(cheng)序指令/模塊(kuai)(kuai)(即java程(cheng)序的(de)(de)(de)運行(xing)裝置中(zhong)的(de)(de)(de)查找(zhao)模塊(kuai)(kuai)510、解密(mi)模塊(kuai)(kuai)520和運行(xing)模塊(kuai)(kuai)530)。處(chu)理(li)器710通過運行(xing)存(cun)(cun)(cun)(cun)儲(chu)(chu)在存(cun)(cun)(cun)(cun)儲(chu)(chu)器720中(zhong)的(de)(de)(de)軟件程(cheng)序、指令以(yi)(yi)及模塊(kuai)(kuai),從而執(zhi)行(xing)終端(duan)的(de)(de)(de)各種功(gong)能應(ying)用(yong)(yong)以(yi)(yi)及數據處(chu)理(li),即實(shi)現上述的(de)(de)(de)java程(cheng)序的(de)(de)(de)運行(xing)方(fang)法。

存(cun)(cun)(cun)(cun)儲(chu)(chu)(chu)(chu)器(qi)(qi)720可主要包括(kuo)存(cun)(cun)(cun)(cun)儲(chu)(chu)(chu)(chu)程序區和存(cun)(cun)(cun)(cun)儲(chu)(chu)(chu)(chu)數(shu)據(ju)區,其中,存(cun)(cun)(cun)(cun)儲(chu)(chu)(chu)(chu)程序區可存(cun)(cun)(cun)(cun)儲(chu)(chu)(chu)(chu)操作系統、至(zhi)(zhi)少(shao)一個功能所(suo)需的應用程序;存(cun)(cun)(cun)(cun)儲(chu)(chu)(chu)(chu)數(shu)據(ju)區可存(cun)(cun)(cun)(cun)儲(chu)(chu)(chu)(chu)根據(ju)終端的使用所(suo)創建(jian)的數(shu)據(ju)等。此外,存(cun)(cun)(cun)(cun)儲(chu)(chu)(chu)(chu)器(qi)(qi)720可以包括(kuo)高速隨機存(cun)(cun)(cun)(cun)取存(cun)(cun)(cun)(cun)儲(chu)(chu)(chu)(chu)器(qi)(qi),還可以包括(kuo)非易(yi)失(shi)性(xing)存(cun)(cun)(cun)(cun)儲(chu)(chu)(chu)(chu)器(qi)(qi),例(li)如至(zhi)(zhi)少(shao)一個磁(ci)盤存(cun)(cun)(cun)(cun)儲(chu)(chu)(chu)(chu)器(qi)(qi)件、閃存(cun)(cun)(cun)(cun)器(qi)(qi)件、或其他非易(yi)失(shi)性(xing)固態存(cun)(cun)(cun)(cun)儲(chu)(chu)(chu)(chu)器(qi)(qi)件。在一些實例(li)中,存(cun)(cun)(cun)(cun)儲(chu)(chu)(chu)(chu)器(qi)(qi)720可進一步包括(kuo)相對于(yu)(yu)處理器(qi)(qi)710遠程設置的存(cun)(cun)(cun)(cun)儲(chu)(chu)(chu)(chu)器(qi)(qi),這些遠程存(cun)(cun)(cun)(cun)儲(chu)(chu)(chu)(chu)器(qi)(qi)可以通過(guo)網(wang)(wang)絡連接至(zhi)(zhi)終端。上述網(wang)(wang)絡的實例(li)包括(kuo)但不限于(yu)(yu)互聯網(wang)(wang)、企業內(nei)部網(wang)(wang)、局域網(wang)(wang)、移(yi)動(dong)通信網(wang)(wang)及其組合(he)。

輸入(ru)裝置(zhi)730可(ke)用于接收(shou)輸入(ru)的數字(zi)或(huo)字(zi)符信息,以及產(chan)生與終端的用戶設置(zhi)以及功能控制有關的鍵信號輸入(ru)。輸出裝置(zhi)740可(ke)包括顯示(shi)屏等顯示(shi)設備。

實施例八

本發明實施例(li)八還(huan)提供(gong)一(yi)種存(cun)儲(chu)有(you)計(ji)算(suan)機程(cheng)(cheng)序(xu)(xu)的計(ji)算(suan)機存(cun)儲(chu)介(jie)質,所述計(ji)算(suan)機程(cheng)(cheng)序(xu)(xu)被處(chu)理器(qi)執行時(shi)實現上述任一(yi)實施例(li)提供(gong)的java程(cheng)(cheng)序(xu)(xu)的保(bao)護方法(fa)。

當然,本發(fa)明(ming)實施(shi)例所提供的一種包含計算機(ji)程(cheng)序的存儲介(jie)質,其計算機(ji)程(cheng)序不(bu)限于如上所述(shu)的方法(fa)操作(zuo),還可(ke)以(yi)執行本發(fa)明(ming)任(ren)意實施(shi)例所提供的java程(cheng)序的保護(hu)方法(fa)中(zhong)的相關操作(zuo)。

實施例九

本發明實施例九還提供一種(zhong)存儲有計(ji)算(suan)機程序的計(ji)算(suan)機存儲介質(zhi),所述(shu)計(ji)算(suan)機程序被(bei)處理器執行時(shi)實現上述(shu)任一實施例提供的java程序的運行方法(fa)。

當然,本發(fa)明實施(shi)例所(suo)提供(gong)(gong)的(de)(de)(de)一(yi)種包含計(ji)算機程(cheng)序的(de)(de)(de)存儲介質,其計(ji)算機程(cheng)序不(bu)限于如上所(suo)述的(de)(de)(de)方法(fa)操(cao)作,還可以執行(xing)本發(fa)明任意實施(shi)例所(suo)提供(gong)(gong)的(de)(de)(de)java程(cheng)序的(de)(de)(de)運行(xing)方法(fa)中的(de)(de)(de)相關操(cao)作。

通過以(yi)(yi)(yi)(yi)上關于實(shi)施(shi)方(fang)式的(de)(de)描述(shu),所(suo)屬領域的(de)(de)技術(shu)人員可(ke)以(yi)(yi)(yi)(yi)清楚(chu)地了解到,本(ben)發明(ming)可(ke)借助軟(ruan)件及必需的(de)(de)通用(yong)硬(ying)件來(lai)實(shi)現(xian),當然也可(ke)以(yi)(yi)(yi)(yi)通過硬(ying)件實(shi)現(xian),但很多情況下(xia)前(qian)者(zhe)是更(geng)佳(jia)的(de)(de)實(shi)施(shi)方(fang)式。基于這(zhe)樣的(de)(de)理解,本(ben)發明(ming)的(de)(de)技術(shu)方(fang)案本(ben)質(zhi)上或(huo)者(zhe)說對現(xian)有技術(shu)做出貢獻的(de)(de)部分(fen)可(ke)以(yi)(yi)(yi)(yi)以(yi)(yi)(yi)(yi)軟(ruan)件產(chan)品的(de)(de)形式記載出來(lai),該計算(suan)(suan)(suan)機(ji)(ji)軟(ruan)件產(chan)品可(ke)以(yi)(yi)(yi)(yi)存(cun)(cun)儲(chu)(chu)在計算(suan)(suan)(suan)機(ji)(ji)可(ke)讀存(cun)(cun)儲(chu)(chu)介質(zhi)中,如計算(suan)(suan)(suan)機(ji)(ji)的(de)(de)軟(ruan)盤(pan)、只(zhi)讀存(cun)(cun)儲(chu)(chu)器(read-onlymemory,rom)、隨機(ji)(ji)存(cun)(cun)取存(cun)(cun)儲(chu)(chu)器(randomaccessmemory,ram)、閃存(cun)(cun)(flash)、硬(ying)盤(pan)或(huo)光(guang)盤(pan)等,包括若干指令用(yong)以(yi)(yi)(yi)(yi)使得一(yi)臺計算(suan)(suan)(suan)機(ji)(ji)設備(bei)(bei)(可(ke)以(yi)(yi)(yi)(yi)是個人計算(suan)(suan)(suan)機(ji)(ji),服務器,或(huo)者(zhe)網絡設備(bei)(bei)等)執行本(ben)發明(ming)各(ge)個實(shi)施(shi)例(li)所(suo)述(shu)的(de)(de)方(fang)法。

值(zhi)得注意的(de)(de)(de)(de)(de)是,上(shang)述java程(cheng)序的(de)(de)(de)(de)(de)保(bao)護(hu)裝置和運行(xing)裝置的(de)(de)(de)(de)(de)實施例中,所包括(kuo)的(de)(de)(de)(de)(de)各(ge)個單元和模塊只(zhi)是按照功(gong)能(neng)邏(luo)輯進行(xing)劃分(fen)的(de)(de)(de)(de)(de),但(dan)并(bing)不局限于上(shang)述的(de)(de)(de)(de)(de)劃分(fen),只(zhi)要能(neng)夠實現相(xiang)應的(de)(de)(de)(de)(de)功(gong)能(neng)即可(ke);另外(wai),各(ge)功(gong)能(neng)單元的(de)(de)(de)(de)(de)具體名稱也只(zhi)是為(wei)了便(bian)于相(xiang)互(hu)區(qu)分(fen),并(bing)不用于限制本(ben)發明的(de)(de)(de)(de)(de)保(bao)護(hu)范(fan)圍。

注意,上(shang)述(shu)僅(jin)為(wei)本(ben)發(fa)(fa)明(ming)的較(jiao)佳(jia)實(shi)(shi)施(shi)例(li)(li)及所運用(yong)技(ji)術(shu)原理。本(ben)領(ling)域(yu)技(ji)術(shu)人員會理解,本(ben)發(fa)(fa)明(ming)不限于這里所述(shu)的特(te)定(ding)實(shi)(shi)施(shi)例(li)(li),對(dui)本(ben)領(ling)域(yu)技(ji)術(shu)人員來(lai)說(shuo)能夠進(jin)行(xing)各種明(ming)顯的變化(hua)、重新調整和(he)替代而(er)不會脫離(li)本(ben)發(fa)(fa)明(ming)的保護(hu)范圍(wei)。因此,雖然通過以(yi)上(shang)實(shi)(shi)施(shi)例(li)(li)對(dui)本(ben)發(fa)(fa)明(ming)進(jin)行(xing)了較(jiao)為(wei)詳(xiang)細的說(shuo)明(ming),但是本(ben)發(fa)(fa)明(ming)不僅(jin)僅(jin)限于以(yi)上(shang)實(shi)(shi)施(shi)例(li)(li),在不脫離(li)本(ben)發(fa)(fa)明(ming)構思的情況下(xia),還(huan)可以(yi)包括(kuo)更多其他等效實(shi)(shi)施(shi)例(li)(li),而(er)本(ben)發(fa)(fa)明(ming)的范圍(wei)由所附的權利要(yao)求(qiu)范圍(wei)決定(ding)。

當前第1頁1 2 
網友(you)詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1