關(guān)鍵代碼保護方法以及代碼生成裝置和代碼運行裝置的制造方法
【專利摘要】本發(fā)明公開了關(guān)鍵代碼保護方法以及代碼生成裝置和代碼運行裝置,所述方法包括:根據(jù)去除關(guān)鍵代碼后的客戶端應(yīng)用程序代碼生成客戶端應(yīng)用的可執(zhí)行文件;根據(jù)關(guān)鍵代碼生成可動態(tài)加載執(zhí)行的二進制數(shù)據(jù),以便當(dāng)客戶端應(yīng)用啟動之后,若需要運行關(guān)鍵代碼,動態(tài)加載該二進制數(shù)據(jù)并執(zhí)行。應(yīng)用本發(fā)明所述方案,能夠提高關(guān)鍵代碼的安全性。
【專利說明】
關(guān)鍵代碼保護方法以及代碼生成裝置和代碼運行裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機應(yīng)用技術(shù),特別涉及關(guān)鍵代碼保護方法以及代碼生成裝置和代碼運行裝置。
【【背景技術(shù)】】
[0002]現(xiàn)有技術(shù)中,對于客戶端應(yīng)用,可使用高級語言來編寫程序代碼,并通過編譯鏈接等,得到二進制的可執(zhí)行文件。
[0003]他人在獲取到上述可執(zhí)行文件后,進行反匯編,通過對匯編代碼進行靜態(tài)分析和動態(tài)調(diào)試等,可對可執(zhí)行文件中的關(guān)鍵代碼進行修改,從而降低了關(guān)鍵代碼的安全性。
【
【發(fā)明內(nèi)容】
】
[0004]本發(fā)明提供了關(guān)鍵代碼保護方法以及代碼生成裝置和代碼運行裝置,能夠提高關(guān)鍵代碼的安全性。
[0005]具體技術(shù)方案如下:
[0006]—種關(guān)鍵代碼保護方法,包括:
[0007]根據(jù)去除關(guān)鍵代碼后的客戶端應(yīng)用程序代碼生成所述客戶端應(yīng)用的可執(zhí)行文件;
[0008]根據(jù)所述關(guān)鍵代碼生成可動態(tài)加載執(zhí)行的二進制數(shù)據(jù),以便當(dāng)所述客戶端應(yīng)用啟動之后,若需要運行所述關(guān)鍵代碼,動態(tài)加載所述二進制數(shù)據(jù)并執(zhí)行。
[0009]根據(jù)本發(fā)明一優(yōu)選實施例,該方法進一步包括:將所述二進制數(shù)據(jù)保存在服務(wù)器中。
[0010]根據(jù)本發(fā)明一優(yōu)選實施例,該方法進一步包括:對保存在所述服務(wù)器中的所述二進制數(shù)據(jù)進行更新。
[0011]根據(jù)本發(fā)明一優(yōu)選實施例,該方法進一步包括:將所述二進制數(shù)據(jù)進行編碼或加密后,保存在所述服務(wù)器中。
[0012]一種關(guān)鍵代碼保護方法,包括:
[0013]客戶端應(yīng)用啟動之后,若需要運行自身的關(guān)鍵代碼,則動態(tài)加載所述關(guān)鍵代碼對應(yīng)的、可動態(tài)加載執(zhí)行的二進制數(shù)據(jù),并執(zhí)行所述二進制數(shù)據(jù)。
[0014]根據(jù)本發(fā)明一優(yōu)選實施例,該方法進一步包括:所述客戶端應(yīng)用啟動之后,若確定本地磁盤中未保存有所述二進制數(shù)據(jù),則從服務(wù)器中拉取所述二進制數(shù)據(jù)并保存到本地磁盤中;
[0015]所述客戶端應(yīng)用動態(tài)加載所述二進制數(shù)據(jù)包括:所述客戶端應(yīng)用動態(tài)加載保存在本地磁盤中的所述二進制數(shù)據(jù)。
[0016]根據(jù)本發(fā)明一優(yōu)選實施例,該方法進一步包括:所述客戶端應(yīng)用確定本地磁盤中保存有所述二進制數(shù)據(jù),但為更新之前的所述二進制數(shù)據(jù),則從所述服務(wù)器中拉取更新之后的所述二進制數(shù)據(jù),并將本地磁盤中保存的更新之前的所述二進制數(shù)據(jù)替換為更新之后的所述二進制數(shù)據(jù)。
[0017]根據(jù)本發(fā)明一優(yōu)選實施例,該方法進一步包括:所述客戶端應(yīng)用在加載執(zhí)行所述二進制數(shù)據(jù)之前,若確定所述二進制數(shù)據(jù)進行了編碼或加密,則對所述二進制數(shù)據(jù)進行解碼或解密。
[0018]一種代碼生成裝置,包括:
[0019]代碼生成模塊,用于根據(jù)去除關(guān)鍵代碼后的客戶端應(yīng)用程序代碼生成所述客戶端應(yīng)用的可執(zhí)行文件,根據(jù)所述關(guān)鍵代碼生成可動態(tài)加載執(zhí)行的二進制數(shù)據(jù),以便當(dāng)所述客戶端應(yīng)用啟動之后,若需要運行所述關(guān)鍵代碼,動態(tài)加載所述二進制數(shù)據(jù)并執(zhí)行。
[0020]根據(jù)本發(fā)明一優(yōu)選實施例,所述裝置中進一步包括:保存模塊;
[0021 ]保存模塊,用于將所述二進制數(shù)據(jù)保存到服務(wù)器中。
[0022]根據(jù)本發(fā)明一優(yōu)選實施例,所述保存模塊進一步用于,將所述二進制數(shù)據(jù)進行編碼或加密后,保存到所述服務(wù)器中。
[0023]根據(jù)本發(fā)明一優(yōu)選實施例,所述代碼生成模塊進一步用于,對所述二進制數(shù)據(jù)進行更新;
[0024]所述保存模塊將更新后的所述二進制數(shù)據(jù)保存到所述服務(wù)器中。
[0025]一種代碼運行裝置,包括:
[0026]運行模塊,用于在啟動之后,若需要運行自身的關(guān)鍵代碼,則動態(tài)加載所述關(guān)鍵代碼對應(yīng)的、可動態(tài)加載執(zhí)行的二進制數(shù)據(jù),并執(zhí)行所述二進制數(shù)據(jù)。
[0027]根據(jù)本發(fā)明一優(yōu)選實施例,所述裝置中進一步包括:拉取模塊;
[0028]所述拉取模塊,用于在所述運行模塊啟動之后,若確定本地磁盤中未保存有所述二進制數(shù)據(jù),則從服務(wù)器中拉取所述二進制數(shù)據(jù)并保存到本地磁盤中;
[0029]所述運行模塊對保存在本地磁盤中的所述二進制數(shù)據(jù)動態(tài)加載并執(zhí)行。
[0030]根據(jù)本發(fā)明一優(yōu)選實施例,所述拉取模塊進一步用于,若確定本地磁盤中保存有所述二進制數(shù)據(jù),但為更新之前的所述二進制數(shù)據(jù),則從所述服務(wù)器中拉取更新之后的所述二進制數(shù)據(jù),并將本地磁盤中保存的更新之前的所述二進制數(shù)據(jù)替換為更新之后的所述二進制數(shù)據(jù)。
[0031]根據(jù)本發(fā)明一優(yōu)選實施例,所述運行模塊進一步用于,在加載執(zhí)行所述二進制數(shù)據(jù)之前,若確定所述二進制數(shù)據(jù)進行了編碼或加密,則對所述二進制數(shù)據(jù)進行解碼或解密。
[0032]通過以上介紹可以看出,本發(fā)明所述方案中,對關(guān)鍵代碼單獨進行處理,轉(zhuǎn)化為可動態(tài)加載執(zhí)行的二進制數(shù)據(jù),后續(xù),當(dāng)客戶端應(yīng)用需要運行關(guān)鍵代碼時,可動態(tài)加載執(zhí)行,也就是說,關(guān)鍵代碼在客戶端應(yīng)用中是不可見的,只有在運行時才能看到一段數(shù)據(jù)被加載執(zhí)行,從而克服了現(xiàn)有技術(shù)中存在的問題,進而提高了關(guān)鍵代碼的安全性。
【【附圖說明】】
[0033]圖1為本發(fā)明所述關(guān)鍵代碼保護方法實施例的流程圖。
[0034]圖2為本發(fā)明所述代碼生成裝置實施例的組成結(jié)構(gòu)示意圖。
[0035]圖3為本發(fā)明所述代碼運行裝置實施例的組成結(jié)構(gòu)示意圖。
[0036]圖4為本發(fā)明所述代碼生成裝置、服務(wù)器以及客戶端應(yīng)用之間的交互方式示意圖。
【【具體實施方式】】
[0037]為了使本發(fā)明的技術(shù)方案更加清楚、明白,以下參照附圖并舉實施例,對本發(fā)明所述方案作進一步地詳細說明。
[0038]實施例一
[0039]圖1為本發(fā)明所述關(guān)鍵代碼保護方法實施例的流程圖,如圖1所示,包括以下具體實現(xiàn)方式。
[0040]在11中,根據(jù)去除關(guān)鍵代碼后的客戶端應(yīng)用程序代碼生成客戶端應(yīng)用的可執(zhí)行文件。
[0041 ]如何編寫客戶端應(yīng)用程序代碼為現(xiàn)有技術(shù)。
[0042]可通過現(xiàn)有的編譯鏈接方式,根據(jù)去除關(guān)鍵代碼后的程序代碼生成可執(zhí)行文件。
[0043]哪些代碼為關(guān)鍵代碼可根據(jù)實際需要而定。
[0044]在12中,根據(jù)關(guān)鍵代碼生成可動態(tài)加載執(zhí)行的二進制數(shù)據(jù),以便當(dāng)客戶端應(yīng)用啟動之后,若需要運行關(guān)鍵代碼,動態(tài)加載該二進制數(shù)據(jù)并執(zhí)行。
[0045]對于關(guān)鍵代碼,可通過編譯鏈接,將其轉(zhuǎn)化成可動態(tài)加載執(zhí)行的二進制數(shù)據(jù)。轉(zhuǎn)化得到的二進制數(shù)據(jù)可保存在服務(wù)器中。
[0046]客戶端應(yīng)用啟動之后,可首先確定本地磁盤中是否保存有該二進制數(shù)據(jù),如果未保存,則可從服務(wù)器中拉取該二進制數(shù)據(jù),并將拉取到的該二進制數(shù)據(jù)保存到本地磁盤中。之后,當(dāng)需要運行關(guān)鍵代碼時,客戶端應(yīng)用可對保存在本地磁盤中的該二進制數(shù)據(jù)動態(tài)加載并執(zhí)行。
[0047]具體地,可將關(guān)鍵代碼寫成一個函數(shù),并通過編譯鏈接,得到可動態(tài)加載執(zhí)行的二進制數(shù)據(jù)??蛻舳藨?yīng)用從服務(wù)器上拉取到該二進制數(shù)據(jù)之后,可將其保存到本地磁盤上的一個配置文件中,當(dāng)需要動態(tài)加載執(zhí)行該二進制數(shù)據(jù)時,可首先準(zhǔn)備執(zhí)行環(huán)境,如動態(tài)分配內(nèi)存并設(shè)置其可執(zhí)行屬性,設(shè)置該二進制數(shù)據(jù)對應(yīng)的函數(shù)在執(zhí)行過程中需要調(diào)用函數(shù)的地址、需要輸入的數(shù)據(jù)地址以及需要輸出的數(shù)據(jù)地址(這些信息可預(yù)先定義好)等,之后,可將該二進制數(shù)據(jù)等加載到所分配的內(nèi)存中,并執(zhí)行該二進制數(shù)據(jù)。
[0048]其中,可將該函數(shù)在執(zhí)行過程中需要調(diào)用函數(shù)的地址、需要輸入的數(shù)據(jù)地址以及需要輸出的數(shù)據(jù)地址等封裝成一個結(jié)構(gòu)體,將該結(jié)構(gòu)體的地址作為該函數(shù)的參數(shù)傳遞到該函數(shù)中去,具體實現(xiàn)為現(xiàn)有技術(shù)。
[0049]可以看出,采用本實施例所述方法,將關(guān)鍵代碼轉(zhuǎn)化為可動態(tài)加載執(zhí)行的二進制數(shù)據(jù),后續(xù),當(dāng)客戶端應(yīng)用需要運行關(guān)鍵代碼時,可對該二進制數(shù)據(jù)動態(tài)加載執(zhí)行,也就是說,關(guān)鍵代碼在客戶端應(yīng)用中是不可見的,只有在運行時才能看到一段數(shù)據(jù)被加載執(zhí)行,從而克服了現(xiàn)有技術(shù)中存在的問題,進而提高了關(guān)鍵代碼的安全性。
[0050]在此基礎(chǔ)上,為了進一步提高關(guān)鍵代碼的安全性,還可以對保存在服務(wù)器上的二進制數(shù)據(jù)進行安全保護處理,如按照預(yù)定方式對該二進制數(shù)據(jù)進行編碼或加密。后續(xù)客戶端應(yīng)用加載執(zhí)行該二進制數(shù)據(jù)之前,若確定該二進制數(shù)據(jù)進行了編碼或加密,則需要先對該二進制數(shù)據(jù)進行去保護處理,如按照與編碼方式對應(yīng)的解碼方式對該二進制數(shù)據(jù)進行解碼,或者,按照與加密方式對應(yīng)的解密方式對該二進制數(shù)據(jù)進行解密。具體采用何種編碼方式或何種加密方式不作限制,可根據(jù)實際需要而定。
[0051]另外,如果上述二進制數(shù)據(jù)在運行期間被修改,那么還可對服務(wù)器上所保存的該二進制數(shù)據(jù)進行更新,即對關(guān)鍵代碼進行更新,以使得所作修改失效,從而進一步提高了關(guān)鍵代碼的安全性。
[0052]相應(yīng)地,客戶端應(yīng)用啟動之后,若確定本地保存有該二進制數(shù)據(jù),但為更新之前的該二進制數(shù)據(jù),則可從服務(wù)器中拉取更新之后的該二進制數(shù)據(jù),并將本地磁盤中保存的更新之前的該二進制數(shù)據(jù)替換為更新之后的該二進制數(shù)據(jù),以保證動態(tài)加載執(zhí)行的二進制數(shù)據(jù)為更新之后的二進制數(shù)據(jù)??蛻舳藨?yīng)用可通過詢問服務(wù)器來獲知是否對二進制數(shù)據(jù)進行了更新。
[0053]在實際應(yīng)用中,為了使客戶端應(yīng)用按照上述方式運行,需要在客戶端應(yīng)用對應(yīng)的程序代碼中增設(shè):拉取代碼、加載代碼。
[0054]加載代碼位于關(guān)鍵代碼原來所在位置,用于執(zhí)行:對保存在本地磁盤中的二進制數(shù)據(jù)進行解碼或解密以及對該二進制數(shù)據(jù)進行加載執(zhí)行等。
[0055]拉取代碼位于程序代碼的起始位置,因此將首先被運行,拉取代碼用于執(zhí)行:在客戶端應(yīng)用啟動之后,確定本地磁盤中是否保存有關(guān)鍵代碼對應(yīng)的可動態(tài)加載執(zhí)行的二進制數(shù)據(jù),若未保存,則從服務(wù)器上拉取該二進制數(shù)據(jù),并將拉取到的該二進制數(shù)據(jù)保存到本地磁盤中,若已保存,則進一步向服務(wù)器詢問自上次拉取之后是否對該二進制數(shù)據(jù)進行了更新,若進行了更新,則從服務(wù)器上拉取更新后的該二進制數(shù)據(jù),并將拉取到的更新后的該二進制數(shù)據(jù)保存到本地磁盤中,若未更新,則可不作處理。
[0056]加載代碼和拉取代碼的具體實現(xiàn)方式不限,只需根據(jù)各自功能編寫相應(yīng)的代碼即可。
[0057]以上是關(guān)于本發(fā)明方法實施例的介紹,與所述方法對應(yīng)的,本發(fā)明中還提出了一種代碼生成裝置以及一種代碼運行裝置,分別如實施例二和實施例三中所述。
[0058]實施例二
[0059]圖2為本發(fā)明代碼生成裝置實施例的組成結(jié)構(gòu)示意圖,如圖2所示,包括:代碼生成模塊21,還可進一步包括:保存模塊22。
[0060]代碼生成模塊21,用于根據(jù)去除關(guān)鍵代碼后的客戶端應(yīng)用程序代碼生成客戶端應(yīng)用的可執(zhí)行文件,根據(jù)關(guān)鍵代碼生成可動態(tài)加載執(zhí)行的二進制數(shù)據(jù),以便當(dāng)客戶端應(yīng)用啟動之后,若需要運行關(guān)鍵代碼,動態(tài)加載該二進制數(shù)據(jù)并執(zhí)行。
[0061]可通過編譯鏈接等,根據(jù)去除關(guān)鍵代碼后的程序代碼生成可執(zhí)行文件。哪些代碼為關(guān)鍵代碼可根據(jù)實際需要而定。
[0062]對于關(guān)鍵代碼,可通過編譯鏈接等,將其轉(zhuǎn)化成可動態(tài)加載執(zhí)行的二進制數(shù)據(jù)。轉(zhuǎn)化得到的二進制數(shù)據(jù)可保存到服務(wù)器中,保存模塊22即用于將接收自代碼生成模塊21的二進制數(shù)據(jù)保存到服務(wù)器中。
[0063]客戶端應(yīng)用啟動之后,可首先確定本地磁盤中是否保存有該二進制數(shù)據(jù),如果未保存,則可從服務(wù)器中拉取該二進制數(shù)據(jù),并將拉取到的該二進制數(shù)據(jù)保存到本地磁盤中。之后,當(dāng)需要運行關(guān)鍵代碼時,客戶端應(yīng)用可對保存在本地磁盤中的該二進制數(shù)據(jù)動態(tài)加載并執(zhí)行。
[0064]為了進一步提高關(guān)鍵代碼的安全性,保存模塊22還可將得到的二進制數(shù)據(jù)進行編碼或加密后,保存到服務(wù)器中。后續(xù)客戶端應(yīng)用在加載執(zhí)行該二進制數(shù)據(jù)之前,若確定該二進制數(shù)據(jù)進行了編碼或加密,則需要先對該二進制數(shù)據(jù)進行去保護處理,如按照與編碼方式對應(yīng)的解碼方式對該二進制數(shù)據(jù)進行解碼,或者,按照與加密方式對應(yīng)的解密方式對該二進制數(shù)據(jù)進行解密。具體采用何種編碼方式或何種加密方式不作限制,可根據(jù)實際需要而定。
[0065]另外,如果上述二進制數(shù)據(jù)在運行期間被修改,那么代碼生成模塊21還可對該二進制數(shù)據(jù)進行更新,即對關(guān)鍵代碼進行更新,以使得所作修改失效,從而進一步提高了關(guān)鍵代碼的安全性。保存模塊22會將更新后的二進制數(shù)據(jù)保存到服務(wù)器中,以替代更新之前的二進制數(shù)據(jù)??蛻舳藨?yīng)用啟動之后,若確定本地保存有該二進制數(shù)據(jù),但為更新之前的該二進制數(shù)據(jù),則可從服務(wù)器中拉取更新之后的該二進制數(shù)據(jù),并將本地磁盤中保存的更新之前的該二進制數(shù)據(jù)替換為更新之后的該二進制數(shù)據(jù),以保證動態(tài)加載執(zhí)行的二進制數(shù)據(jù)是更新之后的二進制數(shù)據(jù),客戶端應(yīng)用可通過詢問服務(wù)器來獲知是否對二進制數(shù)據(jù)進行了更新。
[0066]實施例三
[0067]圖3為本發(fā)明代碼運行裝置實施例的組成結(jié)構(gòu)示意圖,如圖3所示,包括:運行模塊31,還可進一步包括:拉取模塊32。
[0068]運行模塊31,用于在啟動之后,若需要運行自身的關(guān)鍵代碼,則動態(tài)加載關(guān)鍵代碼對應(yīng)的、可動態(tài)加載執(zhí)行的二進制數(shù)據(jù),并執(zhí)行該二進制數(shù)據(jù)。
[0069]對于關(guān)鍵代碼,可通過編譯鏈接等,將其轉(zhuǎn)化成可動態(tài)加載執(zhí)行的二進制數(shù)據(jù)。轉(zhuǎn)化得到的二進制數(shù)據(jù)可保存在服務(wù)器中。
[0070]通過編譯鏈接等,可根據(jù)去除關(guān)鍵代碼后的程序代碼生成可執(zhí)行文件。哪些代碼為關(guān)鍵代碼可根據(jù)實際需要而定。
[0071]拉取模塊32監(jiān)測到運行模塊31啟動之后,若確定本地磁盤中未保存有所述二進制數(shù)據(jù),則可從服務(wù)器中拉取該二進制數(shù)據(jù)并保存到本地磁盤中;后續(xù),運行模塊31會對保存在本地磁盤中的該二進制數(shù)據(jù)動態(tài)加載并執(zhí)行。
[0072]為了進一步提高關(guān)鍵代碼的安全性,保存在服務(wù)器中的二進制數(shù)據(jù)還可以是經(jīng)過編碼或加密后的,這樣,運行模塊31在加載執(zhí)行該二進制數(shù)據(jù)之前,若確定該二進制數(shù)據(jù)進行了編碼或加密,則需要先對該二進制數(shù)據(jù)進行解碼或解密。
[0073]另外,如果上述二進制數(shù)據(jù)在運行期間被修改,那么還可對該二進制數(shù)據(jù)進行更新,即對關(guān)鍵代碼進行更新,以使得所作修改失效,從而進一步提高了關(guān)鍵代碼的安全性。若拉取模塊32確定本地磁盤中保存有二進制數(shù)據(jù),但為更新之前的二進制數(shù)據(jù),則從服務(wù)器中拉取更新之后的二進制數(shù)據(jù),并將本地磁盤中保存的更新之前的二進制數(shù)據(jù)替換為更新之后的二進制數(shù)據(jù)。
[0074]實施例四
[0075]圖4為本發(fā)明所述代碼生成裝置、服務(wù)器以及客戶端應(yīng)用(代碼運行裝置)之間的交互方式示意圖。
[0076]如圖4所示,代碼生成裝置41根據(jù)去除關(guān)鍵代碼后的客戶端應(yīng)用程序代碼生成客戶端應(yīng)用43的可執(zhí)行文件,根據(jù)關(guān)鍵代碼生成可動態(tài)加載執(zhí)行的二進制數(shù)據(jù),保存到服務(wù)器42中,或者,將該二進制數(shù)據(jù)進行解碼或加密后保存到服務(wù)器42中。
[0077]客戶端應(yīng)用43啟動之后,確定本地磁盤中是否保存有該二進制數(shù)據(jù),若未保存,則從服務(wù)器42上拉取該二進制數(shù)據(jù),并將拉取到的該二進制數(shù)據(jù)保存到本地磁盤中,若已保存,則進一步向服務(wù)器42詢問自上次拉取之后是否對該二進制數(shù)據(jù)進行了更新,若進行了更新,則從服務(wù)器42上拉取更新后的該二進制數(shù)據(jù),并將拉取到的更新后的該二進制數(shù)據(jù)保存到本地磁盤中,若未更新,則可不作處理,后續(xù),當(dāng)客戶端應(yīng)用43需要運行關(guān)鍵代碼時,對該二進制數(shù)據(jù)進行解碼或解密,之后準(zhǔn)備執(zhí)行環(huán)境,加載該二進制數(shù)據(jù)并執(zhí)行。
[0078]基于上述各實施例中的介紹可知,采用本發(fā)明所述方案后,關(guān)鍵代碼在客戶端應(yīng)用中是不可見的,只有在運行時才能看到一段數(shù)據(jù)被加載執(zhí)行,從而克服了現(xiàn)有技術(shù)中存在的問題,進而提高了關(guān)鍵代碼的安全性,在此基礎(chǔ)上,還可以通過對關(guān)鍵代碼對應(yīng)的二進制數(shù)據(jù)進行編碼或加密,以及對二進制數(shù)據(jù)進行更新等,進一步提高關(guān)鍵代碼的安全性。
[0079]在本發(fā)明所提供的幾個實施例中,應(yīng)該理解到,所揭露的裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式。
[0080]所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上。可以根據(jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
[0081]另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用硬件加軟件功能單元的形式實現(xiàn)。
[0082]上述以軟件功能單元的形式實現(xiàn)的集成的單元,可以存儲在一個計算機可讀取存儲介質(zhì)中。上述軟件功能單元存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(Processor)執(zhí)行本發(fā)明各個實施例所述方法的部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(R0M,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0083]以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明保護的范圍之內(nèi)。
【主權(quán)項】
1.一種關(guān)鍵代碼保護方法,其特征在于,包括: 根據(jù)去除關(guān)鍵代碼后的客戶端應(yīng)用程序代碼生成客戶端應(yīng)用的可執(zhí)行文件; 根據(jù)所述關(guān)鍵代碼生成可動態(tài)加載執(zhí)行的二進制數(shù)據(jù),以便當(dāng)所述客戶端應(yīng)用啟動之后,若需要運行所述關(guān)鍵代碼,動態(tài)加載所述二進制數(shù)據(jù)并執(zhí)行。2.根據(jù)權(quán)利要求1所述的方法,其特征在于, 該方法進一步包括:將所述二進制數(shù)據(jù)保存在服務(wù)器中。3.根據(jù)權(quán)利要求2所述的方法,其特征在于, 該方法進一步包括:對保存在所述服務(wù)器中的所述二進制數(shù)據(jù)進行更新。4.根據(jù)權(quán)利要求2所述的方法,其特征在于, 該方法進一步包括:將所述二進制數(shù)據(jù)進行編碼或加密后,保存在所述服務(wù)器中。5.一種關(guān)鍵代碼保護方法,其特征在于,包括: 客戶端應(yīng)用啟動之后,若需要運行自身的關(guān)鍵代碼,則動態(tài)加載所述關(guān)鍵代碼對應(yīng)的、可動態(tài)加載執(zhí)行的二進制數(shù)據(jù),并執(zhí)行所述二進制數(shù)據(jù)。6.根據(jù)權(quán)利要求5所述的方法,其特征在于, 該方法進一步包括:所述客戶端應(yīng)用啟動之后,若確定本地磁盤中未保存有所述二進制數(shù)據(jù),則從服務(wù)器中拉取所述二進制數(shù)據(jù)并保存到本地磁盤中; 所述客戶端應(yīng)用動態(tài)加載所述二進制數(shù)據(jù)包括:所述客戶端應(yīng)用動態(tài)加載保存在本地磁盤中的所述二進制數(shù)據(jù)。7.根據(jù)權(quán)利要求6所述的方法,其特征在于, 該方法進一步包括:所述客戶端應(yīng)用確定本地磁盤中保存有所述二進制數(shù)據(jù),但為更新之前的所述二進制數(shù)據(jù),則從所述服務(wù)器中拉取更新之后的所述二進制數(shù)據(jù),并將本地磁盤中保存的更新之前的所述二進制數(shù)據(jù)替換為更新之后的所述二進制數(shù)據(jù)。8.根據(jù)權(quán)利要求6所述的方法,其特征在于, 該方法進一步包括:所述客戶端應(yīng)用加載執(zhí)行所述二進制數(shù)據(jù)之前,若確定所述二進制數(shù)據(jù)進行了編碼或加密,則對所述二進制數(shù)據(jù)進行解碼或解密。9.一種代碼生成裝置,其特征在于,包括: 代碼生成模塊,用于根據(jù)去除關(guān)鍵代碼后的客戶端應(yīng)用程序代碼生成客戶端應(yīng)用的可執(zhí)行文件,根據(jù)所述關(guān)鍵代碼生成可動態(tài)加載執(zhí)行的二進制數(shù)據(jù),以便當(dāng)所述客戶端應(yīng)用啟動之后,若需要運行所述關(guān)鍵代碼,動態(tài)加載所述二進制數(shù)據(jù)并執(zhí)行。10.根據(jù)權(quán)利要求9所述的裝置,其特征在于, 所述裝置中進一步包括:保存模塊; 保存模塊,用于將所述二進制數(shù)據(jù)保存到服務(wù)器中。11.根據(jù)權(quán)利要求10所述的裝置,其特征在于, 所述保存模塊進一步用于,將所述二進制數(shù)據(jù)進行編碼或加密后,保存到所述服務(wù)器中。12.根據(jù)權(quán)利要求10所述的裝置,其特征在于, 所述代碼生成模塊進一步用于,對所述二進制數(shù)據(jù)進行更新; 所述保存模塊將更新后的所述二進制數(shù)據(jù)保存到所述服務(wù)器中。13.一種代碼運行裝置,其特征在于,包括: 運行模塊,用于在啟動之后,若需要運行自身的關(guān)鍵代碼,則動態(tài)加載所述關(guān)鍵代碼對應(yīng)的、可動態(tài)加載執(zhí)行的二進制數(shù)據(jù),并執(zhí)行所述二進制數(shù)據(jù)。14.根據(jù)權(quán)利要求13所述的裝置,其特征在于, 所述裝置中進一步包括:拉取模塊; 所述拉取模塊,用于在所述運行模塊啟動之后,若確定本地磁盤中未保存有所述二進制數(shù)據(jù),則從服務(wù)器中拉取所述二進制數(shù)據(jù)并保存到本地磁盤中; 所述運行模塊對保存在本地磁盤中的所述二進制數(shù)據(jù)動態(tài)加載并執(zhí)行。15.根據(jù)權(quán)利要求14所述的裝置,其特征在于, 所述拉取模塊進一步用于,若確定本地磁盤中保存有所述二進制數(shù)據(jù),但為更新之前的所述二進制數(shù)據(jù),則從所述服務(wù)器中拉取更新之后的所述二進制數(shù)據(jù),并將本地磁盤中保存的更新之前的所述二進制數(shù)據(jù)替換為更新之后的所述二進制數(shù)據(jù)。16.根據(jù)權(quán)利要求14所述的裝置,其特征在于, 所述運行模塊進一步用于,加載執(zhí)行所述二進制數(shù)據(jù)之前,若確定所述二進制數(shù)據(jù)進行了編碼或加密,則對所述二進制數(shù)據(jù)進行解碼或解密。
【文檔編號】G06F21/60GK105893860SQ201610293871
【公開日】2016年8月24日
【申請日】2016年5月5日
【發(fā)明人】金季強
【申請人】百度在線網(wǎng)絡(luò)技術(shù)(北京)有限公司