亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種手機應(yīng)用程序防破解方法及系統(tǒng)的制作方法

文檔序號:7623488閱讀:228來源:國知局
專利名稱:一種手機應(yīng)用程序防破解方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種手機應(yīng)用程序防破解方法及系統(tǒng),屬于手機軟件保護技術(shù)領(lǐng)域。
背景技術(shù)
隨著3G通信技術(shù)的發(fā)展,手機尤其是智能手機綜合了計算機、PDA、寬帶無線通信 終端等多項優(yōu)勢功能,且易于攜帶逐步成為重要的信息終端設(shè)備。大量的應(yīng)用軟件應(yīng)運而 生,軟件的開發(fā)者與軟件發(fā)布者都希望軟件使用者能通過合法購買軟件使用版權(quán)的方法來 實現(xiàn)盈利。然而,軟件的盜版以及其他方式的非授權(quán)使用導(dǎo)致軟件的開發(fā)者與發(fā)布者投入 了大量研發(fā)成本卻收益甚微,這對手機軟件商業(yè)的生態(tài)系統(tǒng)是非常不利的。破解者通過反 編譯應(yīng)用程序文件,動態(tài)修改應(yīng)用程序運行態(tài)內(nèi)存數(shù)據(jù)等逆向工程方式將原來置于軟件中 的授權(quán)管理機制與收費機制進行篡改,使得應(yīng)用軟件在不付費的情況下也可以獲得與付費 同樣的使用功效。并且隨著互聯(lián)網(wǎng)的發(fā)展,破解者還將成功破解的軟件放置在網(wǎng)絡(luò)上供更 多未授權(quán)用戶下載非法使用。而已有的軟件加密技術(shù)僅僅為保護如個人計算機,大型服務(wù) 器等類的大型軟件。這些計算機系統(tǒng)在各方面資源均較少受到限制,但智能手機由于計算 資源緊張,如處理器性能、內(nèi)存容量、存儲卡容量、電池功耗及通信帶寬、通信流量等限制, 用于個人計算機和大型服務(wù)器上的軟件反破解保護系統(tǒng)并不適合保護智能手機上的應(yīng)用 軟件。

發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明要解決的技術(shù)問題是提供一種手機應(yīng)用程序 防破解方法及系統(tǒng),該方法及系統(tǒng)能夠有效地防止手機上的應(yīng)用程序被破解。為解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案如下一種手機應(yīng)用程序加殼和加密方法,包括以下步驟(1)對待加殼和加密的應(yīng)用程序執(zhí)行體進行分段,根據(jù)預(yù)先設(shè)置的該應(yīng)用程序的 保護強度確定需要加殼和加密的片段;(2)生成加殼和加密時使用的密鑰m和一公鑰r-私鑰r對,利用所述密鑰m和私 鑰r分別對確定需要加殼和加密的片段進行加殼和加密處理;(3)將文件頭、殼程序和應(yīng)用程序執(zhí)行體片段合成一個文件F,所述文件頭包括加 殼和加密的執(zhí)行體片段位置信息、加殼方式標(biāo)識和加密算法標(biāo)識。如上所述的手機應(yīng)用程序加殼和加密方法,步驟(1)中所述保護強度分為若干等 級,等級越高,加殼和加密的片段越多。根據(jù)應(yīng)用程序的保護強度隨機選擇相應(yīng)數(shù)量的片段 進行加殼和加密。如上所述的手機應(yīng)用程序加殼和加密方法,步驟(2)中所述密鑰m由對被加殼的 執(zhí)行體片段前面的部分執(zhí)行體片段求字節(jié)和生成;如果加密強度高,則選擇前面較多的執(zhí) 行體片段進行運算,否則選擇較少的執(zhí)行體片段進行運算。如上所述的手機應(yīng)用程序加殼和加密方法,還包括合成密鑰k并使用所述密鑰k
6對所述公鑰r進行加密的步驟。所述密鑰k根據(jù)用戶唯一碼合成。如上所述的手機應(yīng)用程序加殼和加密方法,還包括將加密的應(yīng)用程序與加密該應(yīng) 用程序所使用的公鑰r之間的對應(yīng)關(guān)系保存在權(quán)限文件中的步驟。如上所述的手機應(yīng)用程序加殼和加密方法,還包括對所述文件F使用公鑰r進行 數(shù)字簽名的步驟,所述文件頭還包括數(shù)字簽名認(rèn)證信息。一種手機應(yīng)用程序加殼和加密系統(tǒng),包括用于設(shè)置對應(yīng)用程序執(zhí)行體的分段方 式,對應(yīng)用程序執(zhí)行體片段進行加殼的加殼方式,對應(yīng)用程序執(zhí)行體片段進行加密的加密 算法,殼程序庫和對應(yīng)用程序的保護強度的設(shè)置裝置;用于掃描應(yīng)用程序安裝包,分析應(yīng)用程序各部分之間的調(diào)用關(guān)系,標(biāo)識應(yīng)用程序 執(zhí)行體文件的預(yù)處理裝置;用于根據(jù)設(shè)定的分段方式將應(yīng)用程序執(zhí)行體分成若干片段,并根據(jù)設(shè)置的對該應(yīng) 用程序的保護強度確定需要加殼和加密的執(zhí)行體片段的分段裝置;用于合成加殼時使用的密鑰m,并利用所述密鑰m對需要加殼的應(yīng)用程序執(zhí)行體 片段按照設(shè)置的加殼方式進行加殼處理的加殼裝置;用于生成一公鑰r-私鑰r對,并利用所述私鑰r對需要加密的應(yīng)用程序執(zhí)行體片 段進行加密的片段加密裝置;用于將應(yīng)用程序執(zhí)行體文件的文件頭、殼程序、加殼和加密后的應(yīng)用程序執(zhí)行體 片段合成一個文件F的合成裝置。如上所述的手機應(yīng)用程序加殼和加密系統(tǒng),還包括用于對文件F使用私鑰r進行 數(shù)字簽名的數(shù)字簽名裝置。如上所述的手機應(yīng)用程序加殼和加密系統(tǒng),還包括用于根據(jù)應(yīng)用程序編號或ID 以及用戶唯一碼合成密鑰k,使用所述密鑰k對公鑰r進行加密的公鑰加密裝置。一種加殼和加密的手機應(yīng)用程序的脫殼和解密方法,包括以下步驟(1)如果對所述文件F進行了數(shù)字簽名,則先進行數(shù)字簽名認(rèn)證;如果通過驗證, 則進入下一步,否則結(jié)束;如果未對所述文件F進行數(shù)字簽名,則直接進入下一步;(2)獲取該應(yīng)用程序?qū)?yīng)的公鑰r,如果所述公鑰r使用了密鑰k加密,則先合成 對所述公鑰r進行解密的密鑰k,使用所述密鑰k對所述公鑰r進行解密;如果未對公鑰r 進行加密,則直接進入下一步;(3)利用所述公鑰r對加密的應(yīng)用程序執(zhí)行體片段進行解密;(4)合成脫殼還原時使用的密鑰m,利用所述密鑰m對加殼的應(yīng)用程序執(zhí)行體片段 進行脫殼處理?!N加殼和加密的手機應(yīng)用程序的脫殼和解密系統(tǒng),包括用于根據(jù)應(yīng)用程序執(zhí)行 體文件的文件頭中記錄的加密算法標(biāo)識獲取相應(yīng)的解密算法,利用公鑰r對文件頭中標(biāo)識 的加密的執(zhí)行體片段采用所述解密算法進行解密處理的片段解密裝置;用于合成脫殼還原時使用的密鑰m,根據(jù)加殼和加密的應(yīng)用程序執(zhí)行體文件的文 件頭中記錄的加殼方式標(biāo)識獲取相應(yīng)的脫殼方式,利用所述密鑰m對文件頭中標(biāo)識的加殼 的執(zhí)行體片段采用所述脫殼方式進行脫殼處理的脫殼裝置。如上所述的手機應(yīng)用程序的脫殼和解密系統(tǒng),還包括用于使用公鑰r對待解密和 脫殼的應(yīng)用程序進行數(shù)字簽名認(rèn)證的數(shù)字簽名認(rèn)證裝置。
如上所述的手機應(yīng)用程序的脫殼和解密系統(tǒng),還包括用于從權(quán)限文件中獲取該應(yīng) 用程序?qū)?yīng)的加密的公鑰r,根據(jù)待解密和脫殼的應(yīng)用程序編碼或ID以及用戶唯一碼合成 對所述加密的公鑰r進行解密的密鑰k,并使用所述密鑰k對所述加密的公鑰r進行解密的 公鑰解密裝置。一種加殼和加密的手機應(yīng)用程序運行系統(tǒng),包括啟動裝置、安全運行裝置和殼裝 置所述啟動裝置用于啟動應(yīng)用程序,應(yīng)用程序中的殼裝置首先啟動;所述安全運行裝置包括用于加載運行應(yīng)用程序的加載運行單元;用于從權(quán)限文件 中獲取應(yīng)用程序?qū)?yīng)的加密的公鑰r,合成對公鑰r進行解密的密鑰k,利用所述密鑰k對 公鑰r進行解密,再利用解密后的公鑰r對文件頭中加密執(zhí)行體片段位置標(biāo)識對加密的執(zhí) 行體片段進行解密還原的解密單元;所述殼裝置被加入到應(yīng)用程序中,包括用于將應(yīng)用程序可能依賴的安全庫,脫殼 單元、應(yīng)用程序執(zhí)行體片段和內(nèi)存沖洗單元加載到安全運行裝置的加載啟動單元;用于采 用權(quán)利要求7所述方式對應(yīng)用程序執(zhí)行體片段進行脫殼處理的脫殼單元;用于將已經(jīng)執(zhí)行 過的應(yīng)用程序執(zhí)行體片段從內(nèi)存中沖洗掉的內(nèi)存沖洗單元。如上所述的手機應(yīng)用程序運行系統(tǒng),其中,安全運行裝置還包括用于根據(jù)應(yīng)用程 序可執(zhí)行體文件的文件頭中殼裝置變換標(biāo)識配置殼裝置的變換模式的殼裝置配置單元;殼 裝還包括用于根據(jù)安全運行裝置中的殼裝置配置單元配置的變換模式變換自身結(jié)構(gòu)的變 換單元。如上所述的手機應(yīng)用程序運行系統(tǒng),其中,安全運行裝置在不需要時進行休眠,在 內(nèi)存中保存較少的必要數(shù)據(jù)。如上所述的手機應(yīng)用程序運行系統(tǒng),其中,安全運行裝置還包括用于使用公鑰2 對安全運行裝置的數(shù)字簽名進行認(rèn)證的數(shù)字簽名認(rèn)證單元A ;殼裝置還包括用于使用公鑰 r對應(yīng)用程序執(zhí)行體文件的文件頭中的數(shù)字簽名進行認(rèn)證的數(shù)字簽名認(rèn)證單元B;殼裝置 中的加載啟動單元還用于加載所述數(shù)字簽名認(rèn)證單元B。如上所述的手機應(yīng)用程序運行系統(tǒng),其中,殼裝置還包括攻擊監(jiān)視單元和攻擊處 理單元,所述加載啟動單元還用于加載攻擊監(jiān)視單元和攻擊處理單元;所述攻擊監(jiān)視單元用于監(jiān)視應(yīng)用程序運行異常,內(nèi)存中調(diào)試器、跟蹤器及其他破 解工具的特征數(shù)據(jù),操作系統(tǒng)調(diào)試異常,處理器調(diào)整異常;所述攻擊處理單元用于根據(jù)攻擊監(jiān)視裝置的響應(yīng)進入攻擊處理模式,根據(jù)攻擊監(jiān) 視裝置的攻擊判斷結(jié)果對攻擊行為進行相應(yīng)處理。一種加殼和加密的手機應(yīng)用程序運行方法,包括以下步驟(1)啟動裝置啟動應(yīng)用程序,應(yīng)用程序中加入的殼裝置首先啟動;(2)殼裝置激活安全運行裝置,將應(yīng)用程序加載到安全運行裝置;(3)安全運行裝置獲取權(quán)限文件,如果當(dāng)前待執(zhí)行的應(yīng)用程序執(zhí)行體片段進行了 加密,則先調(diào)用解密單元對應(yīng)用程序執(zhí)行體片段進行解密;(4)如果當(dāng)前待執(zhí)行的應(yīng)用程序執(zhí)行體片段進行了加殼,則先由殼裝置調(diào)用脫殼 單元對應(yīng)用程序執(zhí)行體片段進行脫殼處理;(5)在安全運行裝置中運行應(yīng)用程序執(zhí)行體;
(6)在應(yīng)用程序執(zhí)行體執(zhí)行過程中,殼裝置加載啟動內(nèi)存沖洗單元,將已經(jīng)執(zhí)行過 的應(yīng)用程序執(zhí)行體片段從內(nèi)存中沖洗掉;殼裝置加載啟動攻擊監(jiān)視單元,攻擊監(jiān)視單元將 監(jiān)視應(yīng)用程序的運行異常,內(nèi)存中調(diào)試器、跟蹤器及其他破解工具的特征數(shù)據(jù),操作系統(tǒng)調(diào) 試異常和處理器調(diào)整異常;當(dāng)攻擊監(jiān)視單元監(jiān)視到異常時,殼裝置啟動攻擊處理單元,攻擊 處理單元根據(jù)攻擊監(jiān)視單元的判斷結(jié)果對攻擊行為進行相應(yīng)處理。如上所述的手機應(yīng)用程序運行方法,步驟(2)中還包括殼裝置使用公鑰2對安全 運行裝置進行數(shù)字簽名認(rèn)證的操作;如果通過認(rèn)證,則繼續(xù)運行;否則進行異常處理。如上所述的手機應(yīng)用程序運行方法,步驟(3)中在對應(yīng)用程序執(zhí)行體片段進行解 密之前,還包括讀入應(yīng)用程序執(zhí)行體文件的文件頭,使用公鑰r對應(yīng)用程序進行數(shù)字簽名 認(rèn)證的操作;如果認(rèn)證通過,則按照應(yīng)用程序執(zhí)行體片段順序執(zhí)行應(yīng)用程序;否則將應(yīng)用 程序退出安全運行裝置。如上所述的手機應(yīng)用程序運行方法,還包括安全運行裝置根據(jù)應(yīng)用程序執(zhí)行體文 件的文件頭中的殼裝置變換標(biāo)識配置殼裝置變換模式的步驟;在安全運行裝置中運行應(yīng)用程序執(zhí)行體之前,還包括殼裝置根據(jù)所述變換模式變 換自身結(jié)構(gòu)的步驟。所述變換模式包括指令順序變換、寄存器變換、空指令變換、代碼擾亂變換和花指 令變換。本發(fā)明所述方法及系統(tǒng),通過將手機應(yīng)用程序執(zhí)行體分段,對片段進行加殼和加 密的方式,使得既能有效地保護手機應(yīng)用程序又能盡量減少對手機性能的功耗。而且根據(jù) 手機應(yīng)用程序的重要程度選擇相應(yīng)數(shù)量的片段進行加密,使得對手機應(yīng)用程序的保護強度 可控。通過在本發(fā)明所述安全運行系統(tǒng)中運行手機應(yīng)用程序,有效地防止了破解者利用調(diào) 試器、跟蹤器等破解工具破解手機應(yīng)用程序的行為。


圖1是具體實施方式
中手機應(yīng)用程序加殼和加密系統(tǒng)的結(jié)構(gòu)框圖;圖2是具體實施方式
中手機應(yīng)用程序解密和脫殼系統(tǒng)的結(jié)構(gòu)框圖;圖3是具體實施方式
中加殼和加密手機應(yīng)用程序運行系統(tǒng)的結(jié)構(gòu)框圖;圖4是具體實施方式
中手機應(yīng)用程序加殼和加密方法的流程圖;圖5是具體實施方式
中手機應(yīng)用程序解密和脫殼方法的流程圖;圖6是具體實施方式
中加殼和加密后的應(yīng)用程序可執(zhí)行體文件的結(jié)構(gòu)示意圖;圖7是具體實施方式
中應(yīng)用程序執(zhí)行體片段脫殼過程示意圖;圖8是具體實施方式
中殼裝置運行過程示意圖;圖9是具體實施方式
中安全運行裝置與應(yīng)用程序之間雙向驗證方式示意圖。
具體實施例方式下面結(jié)合具體實施方式
和附圖對本發(fā)明進行詳細(xì)描述。實施方式1本實施方式記載了一種手機應(yīng)用程序加殼和加密系統(tǒng)及方法。如圖1所示,該系 統(tǒng)包括設(shè)置裝置11、預(yù)處理裝置12、分段裝置13、加殼裝置14、片段加密裝置15、文件合成裝置16、數(shù)字簽名裝置17和公鑰加密裝置18。設(shè)置裝置11用于設(shè)置對應(yīng)用程序執(zhí)行體的分段方式,對應(yīng)用程序執(zhí)行體片段進 行加殼的加殼方式,對應(yīng)用程序執(zhí)行體片段進行加密的加密算法,殼程序庫和對應(yīng)用程序 的保護強度。殼程序庫主要包括各種殼模板、加密算法、程序控制代碼庫、反跟蹤機制等,其 主要功能是對應(yīng)用程序(如Java程序等)進行變換和加密,同時將部分代碼和數(shù)據(jù)嵌入到 被保護的應(yīng)用程序中,這部分嵌入到被保護應(yīng)用程序中的代碼和數(shù)據(jù)稱為“殼”。對應(yīng)用程 序加殼可以防止攻擊者通過靜態(tài)反編譯或者動態(tài)跟蹤的方法修改程序的代碼,改變程序的 流程。預(yù)處理裝置12用于掃描應(yīng)用程序安裝包,分析應(yīng)用程序各部分之間的調(diào)用關(guān)系, 標(biāo)識應(yīng)用程序執(zhí)行體文件。所述應(yīng)用程序執(zhí)行體文件包括可執(zhí)行文件和動態(tài)庫文件。分段裝置13用于根據(jù)設(shè)定的分段方式將應(yīng)用程序執(zhí)行體分成若干片段,并根據(jù) 設(shè)置的對該應(yīng)用程序的保護強度確定需要加殼和加密的執(zhí)行體片段。加殼裝置14用于合成加殼時使用的密鑰m,并利用所述密鑰m對需要加殼的應(yīng)用 程序執(zhí)行體片段按照設(shè)置的加殼方式進行加殼處理。加殼裝置14根據(jù)被保護的應(yīng)用程序 類型等從殼程序庫中選擇合適的殼模板和加密算法對受保護的應(yīng)用程序和殼模板進行變 換,并將變換后的殼模板嵌入到被保護的應(yīng)用程序中。這樣,當(dāng)受保護的應(yīng)用程序在執(zhí)行 時,嵌入其中的殼程序首先獲得控制權(quán),殼程序在自身初始化后,對受保護的程序進行反變 換,并控制受保護的程序執(zhí)行,防止攻擊者對受保護的應(yīng)用程序進行動態(tài)跟蹤破解。片段加密裝置15用于生成一公鑰r-私鑰r對,并利用所述私鑰r對需要加密的 應(yīng)用程序執(zhí)行體片段進行加密。合成裝置16用于將應(yīng)用程序執(zhí)行體文件的文件頭、殼程序、加殼和加密后的應(yīng)用 程序執(zhí)行體片段合成一個文件F。數(shù)字簽名裝置17用于對文件F使用私鑰r進行數(shù)字簽名,將所述數(shù)字簽名記錄到 應(yīng)用程序執(zhí)行體文件的文件頭中。所述文件頭包括文件頭長度標(biāo)識、加殼方式標(biāo)識、加殼 的應(yīng)用程序執(zhí)行體片段的位置標(biāo)識、加密算法標(biāo)識、加密的應(yīng)用程序執(zhí)行體片段的位置標(biāo) 識、數(shù)字簽名以及擴展用的預(yù)留空間等信息。如圖4所示,采用上述系統(tǒng)對智能手機應(yīng)用程序進行加殼和加密的方法包括如下 步驟(1)分段裝置13對待加殼和加密的應(yīng)用程序執(zhí)行體進行分段,根據(jù)設(shè)置的該應(yīng)用 程序的保護強度確定需要加殼和加密的片段數(shù)量。在對應(yīng)用程序進行加殼和加密之前,首先需要通過設(shè)置裝置11設(shè)置對應(yīng)用程序 執(zhí)行體的分段方式,對應(yīng)用程序執(zhí)行體片段進行加殼的加殼方式,對應(yīng)用程序執(zhí)行體片段 進行加密的加密算法,殼程序庫和對應(yīng)用程序的保護強度。然后再由預(yù)處理裝置12掃描應(yīng) 用程序安裝包,分析應(yīng)用程序各部分之間的調(diào)用關(guān)系,從應(yīng)用程序安裝包中找到應(yīng)用程序 執(zhí)行體文件,包括可執(zhí)行文件和動態(tài)庫文件,標(biāo)識這些文件。分析應(yīng)用程序各部分之間的調(diào) 用關(guān)系的目的是①找到可執(zhí)行體文件,以便對可執(zhí)行體文件進行加殼保護;②根據(jù)執(zhí)行 體文件的類型確定加殼的方式。對應(yīng)用程序的保護強度可以分成若干等級,可以根據(jù)智能手機的性能和應(yīng)用程序 的重要性進行綜合設(shè)定。如果智能手機的性能較好且應(yīng)用程序較重要,可以增加該應(yīng)用程序的保護強度,反之則降低保護強度。不同的保護強度可通過對應(yīng)用程序執(zhí)行體加殼和加 密的片段數(shù)量不同來實現(xiàn),保護強度與需要加殼加密的執(zhí)行體片段的數(shù)量成正比,即保護 強度的等級越高,需要加殼和加密的片段越多。例如,將保護強度分成10個等級,將應(yīng)用程 序執(zhí)行體分成100段;如果設(shè)定應(yīng)用程序的保護強度為0,則對每一片段均不加殼和加密; 如果將保護強度設(shè)定為10,則對每一片段均加殼和加密;如果將保護強度設(shè)定為5,則對50 個片段進行加殼和加密。顯然,保護強度越強,對智能手機的性能要求越高,應(yīng)用程序的安 全性也越高。(2)加殼裝置14根據(jù)需要加殼的應(yīng)用程序執(zhí)行體和保護強度為每個執(zhí)行體片段 生成加殼密鑰m,隨機選擇確定數(shù)量的應(yīng)用程序執(zhí)行體片段,利用所述密鑰m對隨機選擇的 應(yīng)用程序執(zhí)行體片段按照設(shè)置的加殼方式進行加殼處理。所述密鑰m由對被加殼的執(zhí)行體片段前面的部分執(zhí)行體片段求字節(jié)和生成;如果 加密強度高,則選擇前面較多的執(zhí)行體片段進行運算,否則選擇較少的執(zhí)行體片段進行運 算。通過這種方式,可以有效防止攻擊者通過靜態(tài)修改執(zhí)行體代碼實現(xiàn)破解的目的。因為 加密執(zhí)行體的前面一旦某些代碼被修改,由于無法正確獲取密鑰m,加密的執(zhí)行體將無法正 確解密。(3)片段加密裝置15隨機生成一公鑰r-私鑰r對,隨機選擇確定數(shù)量的應(yīng)用程序 執(zhí)行體片段,利用所述私鑰r對隨機選擇的應(yīng)用程序執(zhí)行體片段進行加密處理。在加密的應(yīng)用程序執(zhí)行體片段中,可能包括已加殼的應(yīng)用程序執(zhí)行體片段,也可 能包括沒有加殼的應(yīng)用程序執(zhí)行體片段,并非只對加殼的應(yīng)用程序執(zhí)行體片段進行加密。(4)合成裝置16將文件頭、殼程序、加殼和加密后的應(yīng)用程序執(zhí)行體片段按照指 定順序合成文件F,并在文件頭中填入相關(guān)參數(shù)。再由簽名裝置17使用私鑰r對文件頭和 殼程序部分進行數(shù)字簽名,并將該數(shù)字簽名寫入到文件頭中。最后將經(jīng)過上述處理后的應(yīng) 用程序以原始方式重新打包,并在其中加入特定標(biāo)識。所述特定標(biāo)識由一個固定名稱的文 件表示,該標(biāo)識文件包含下述內(nèi)容打包時間、加殼程序的版本和驗證方式等。通過所述特 定標(biāo)識,為受保護程序的分發(fā)和安裝等提供便利。本實施方式中,加殼和加密后的應(yīng)用程序 可執(zhí)行體文件的結(jié)構(gòu)如圖6所示。在生成公鑰r-私鑰r對后,將加密的應(yīng)用程序編號或者ID與所述公鑰r之間的 對應(yīng)關(guān)系保存在Token File (權(quán)限文件)中,Token File可保存在公鑰數(shù)據(jù)庫。優(yōu)選的, 對公鑰r進行加密。具體實現(xiàn)方法為由公鑰加密裝置18根據(jù)應(yīng)用程序編號或ID以及用 戶唯一碼合成對公鑰r加密的密鑰k,使用所述密鑰k對公鑰r進行加密。所述用戶唯一碼 可以是用戶ID、PIN碼、手機識別碼、手機卡識別碼,如手機IMSI碼等。權(quán)限文件與用戶唯 一碼相關(guān)聯(lián)。實施方式2本實施方式記載了一種采用實施方式1所述方法進行加殼和加密的智能手機應(yīng) 用程序的解密和脫殼系統(tǒng)及方法。如圖2所示,該系統(tǒng)包括數(shù)字簽名認(rèn)證裝置21、公鑰解密 裝置22、片段解密裝置23和脫殼裝置24。數(shù)字簽名認(rèn)證裝置21用于使用公鑰r對待解密和脫殼的應(yīng)用程序進行數(shù)字簽名 認(rèn)證。公鑰解密裝置22用于從權(quán)限文件中獲取該應(yīng)用程序?qū)?yīng)的加密的公鑰r,根據(jù)待解密和脫殼的應(yīng)用程序編碼或ID以及用戶唯一碼合成對所述加密的公鑰r進行解密的密 鑰k,并使用所述密鑰k對所述加密的公鑰r進行解密。片段解密裝置23用于根據(jù)應(yīng)用程序執(zhí)行體文件的文件頭中記錄的加密算法標(biāo)識 獲取相應(yīng)的解密算法,利用公鑰r對文件頭中標(biāo)識的加密的執(zhí)行體片段采用所述解密算法 進行解密處理。脫殼裝置24用于合成脫殼還原時使用的密鑰m,根據(jù)加殼和加密的應(yīng)用程序執(zhí)行 體文件的文件頭中記錄的加殼方式標(biāo)識獲取相應(yīng)的脫殼方式,利用所述密鑰m對文件頭中 標(biāo)識的加殼的執(zhí)行體片段采用所述脫殼方式進行脫殼處理。如圖5所示,采用上述系統(tǒng)對加殼和加密的智能手機應(yīng)用程序進行解密和脫殼的 方法包括以下步驟(1)數(shù)字簽名認(rèn)證裝置21對待解密和脫殼的應(yīng)用程序進行數(shù)字簽名認(rèn)證;如果通 過驗證,則進入下一步,否則解密和脫殼過程結(jié)束;(2)公鑰解密裝置22從權(quán)限文件中獲取該應(yīng)用程序?qū)?yīng)的加密的公鑰r,根據(jù)待 解密和脫殼的應(yīng)用程序編碼或ID以及用戶唯一碼合成對所述加密的公鑰r進行解密的密 鑰k,并使用所述密鑰k對所述加密的公鑰r進行解密。(3)片段解密裝置23根據(jù)應(yīng)用程序執(zhí)行體文件的文件頭中記錄的加密算法標(biāo)識 獲取相應(yīng)的解密算法,解密算法存儲在解密算法庫中,可以從中查找或者從網(wǎng)絡(luò)上下載。利 用公鑰r對文件頭中標(biāo)識的加密的執(zhí)行體片段采用所述解密算法進行解密處理。(4)脫殼裝置24合成脫殼還原時使用的密鑰m,根據(jù)應(yīng)用程序執(zhí)行體文件的文件 頭中記錄的加殼方式標(biāo)識獲取相應(yīng)的脫殼方式,可以從本地查找或者從網(wǎng)絡(luò)上下載。利用 所述密鑰m對文件頭中標(biāo)識的加殼的執(zhí)行體片段采用所述脫殼方式進行脫殼處理。脫殼過 程如圖7所示。實施方式3本實施方式記載了一種采用實施方式1所述方法進行加殼和加密的智能手機應(yīng) 用程序的運行系統(tǒng)及方法。如圖3所示,該系統(tǒng)包括啟動裝置31,安全運行裝置32和殼裝 置33。安全運行裝置32和殼裝置33可以相互調(diào)用。安全運行裝置32包括加載運行單元 321、數(shù)字簽名認(rèn)證單元322、解密單元323、殼裝置配置單元324。殼裝置33被加入到應(yīng)用 程序中,包括變換單元331、加載啟動單元332、數(shù)字簽名認(rèn)證單元333、脫殼單元334、內(nèi)存 沖洗單元335、攻擊監(jiān)視單元336和攻擊處理單元337。啟動裝置31用于啟動應(yīng)用程序,應(yīng)用程序中的殼裝置33首先啟動。安全運行裝置32中的加載運行單元321用于加載運行應(yīng)用程序。數(shù)字簽名認(rèn)證 單元322用于讀取應(yīng)用程序執(zhí)行體文件的文件頭中的數(shù)字簽名,使用公鑰r對應(yīng)用程序進 行數(shù)字簽名認(rèn)證。解密單元323用于從權(quán)限文件中獲取應(yīng)用程序?qū)?yīng)的加密的公鑰r,合 成對公鑰r進行解密的密鑰k,利用所述密鑰k對公鑰r進行解密,再利用解密后的公鑰r 對文件頭中加密執(zhí)行體片段位置標(biāo)識對加密的執(zhí)行體片段進行解密還原。殼裝置配置單元 324用于根據(jù)文件頭中殼裝置變換標(biāo)識配置殼裝置的變換模式。安全運行裝置在不需要時 進行休眠,在內(nèi)存中保存較少的必要數(shù)據(jù),以減少處理器和內(nèi)存的功耗。殼裝置33中的變換單元331用于根據(jù)安全運行裝置中的殼裝置配置單元配置的 變換模式變換自身結(jié)構(gòu)。變換模式包括指令順序變換、寄存器變換、空指令變換、代碼擾亂變換和花指令變換。所述指令順序變換是指將指令的前后順序進行顛倒;所述寄存器變換 是指將不同指令之間所用的寄存器進行互換;所述空指令變換是指將殼模板中的空指令替 換為功能指令;所述代碼擾亂變換是指通過非常用方式使用指令;所述花指令變換是指在 常規(guī)指令前插入跳轉(zhuǎn)指令。使用這些變換模式的主要目的是防止攻擊者通過靜態(tài)反編譯的 方式分析受保護的程序,從而實現(xiàn)破解的目的。加載啟動單元332用于將應(yīng)用程序可能依賴的安全庫、脫殼單元、應(yīng)用程序執(zhí)行 體片段、數(shù)字簽名認(rèn)證單元、攻擊監(jiān)視單元、內(nèi)存沖洗單元、攻擊處理單元加載到安全運行 裝置。數(shù)字簽名認(rèn)證單元333用于使用公鑰2對安全運行裝置的數(shù)字簽名進行認(rèn)證。脫 殼單元334采用實施方式2所述方式對應(yīng)用程序執(zhí)行體片段進行脫殼處理。內(nèi)存沖洗單元 335用于將已經(jīng)執(zhí)行過的應(yīng)用程序執(zhí)行體片段從內(nèi)存中沖洗掉,防止破解者使用dump內(nèi)存 的方式攻擊。攻擊監(jiān)視單元336用于監(jiān)視應(yīng)用程序的運行異常,內(nèi)存中調(diào)試器、跟蹤器及其 他破解工具的特征數(shù)據(jù),操作系統(tǒng)的調(diào)試異常,處理器的調(diào)整異常。攻擊監(jiān)視裝置將以下異 常作為被攻擊的條件①應(yīng)用程序運行異常,例如空指令、空地址、越權(quán)指令、越權(quán)地址等; ②在內(nèi)存中發(fā)現(xiàn)調(diào)試器、跟蹤器及其他破解工具的數(shù)據(jù)痕跡;③以某種方式判斷出自身被 跟蹤或者被監(jiān)視;④發(fā)現(xiàn)操作系統(tǒng)調(diào)試異常;⑤發(fā)現(xiàn)處理器調(diào)試異常。攻擊處理單元337用 于根據(jù)攻擊監(jiān)視裝置響應(yīng)進入攻擊處理模式,根據(jù)攻擊監(jiān)視裝置的攻擊判斷結(jié)果對攻擊行 為進行相應(yīng)處理。在上述運行系統(tǒng)運行被被加殼和加密的應(yīng)用程序的方法包括以下步驟(1)啟動裝置啟動應(yīng)用程序,應(yīng)用程序中加入的殼裝置首先啟動。(2)殼裝置激活安全運行裝置。殼裝置使用公鑰2對安全運行裝置進行數(shù)字簽名 認(rèn)證(安全運行裝置使用與公鑰2對應(yīng)的私鑰2進行數(shù)字簽名)。如果通過認(rèn)證,則繼續(xù)運 行;如果認(rèn)證失敗,則進行異常處理。安全運行裝置獲取權(quán)限文件。安全運行裝置也可以由手機安裝器或者啟動器激活。(3)將應(yīng)用程序加載到安全運行裝置。應(yīng)用程序可由殼裝置、手機安裝器或者啟動器加載。(4)安全運行裝置讀入部分應(yīng)用程序數(shù)據(jù),包括文件頭和殼裝置。使用公鑰r對應(yīng) 用程序進行數(shù)字簽名認(rèn)證。如果認(rèn)證通過,則按照應(yīng)用程序執(zhí)行體片段順序執(zhí)行應(yīng)用程序; 否則將應(yīng)用程序退出安全運行裝置。(5)如果當(dāng)前執(zhí)行的執(zhí)行體片段進行了加密,則先調(diào)用解密單元對應(yīng)用程序執(zhí)行 體片段進行解密。解密方法參見實施方式2。(6)安全運行裝置根據(jù)文件頭中的殼裝置變換標(biāo)識配置殼裝置的變換模式。此機 制在于使得殼裝置的變換更加多樣,讓破解者難以分析和找到規(guī)律。(7)殼裝置根據(jù)配置的變化模式變換自身結(jié)構(gòu)。(8)殼裝置加載應(yīng)用程序可能依賴的安全庫。所述安全庫由多種加解密算法組成。在應(yīng)用中,根據(jù)加殼時采用的加密算法從安 全庫中選取對應(yīng)的解密算法,以便加載單元能夠正確解密加殼時加密的執(zhí)行體片段。安全 庫可以根據(jù)自身所需調(diào)用更多本地資源庫。(9)殼裝置調(diào)用脫殼單元對應(yīng)用程序執(zhí)行體片段進行脫殼處理。脫殼方法可參見 實施方式2。
13
密鑰m的合成方法如下根據(jù)與已經(jīng)運行過的帶殼應(yīng)用程序執(zhí)行體片段進行關(guān)聯(lián) 運算,如求帶殼片段的校驗和等,生成脫殼密鑰m。若破解者改動已經(jīng)運行過的帶殼應(yīng)用程 序執(zhí)行體片段數(shù)據(jù)中的任何一位,便會引起校驗和錯誤,使得脫殼還原的執(zhí)行體片段數(shù)據(jù) 發(fā)生錯誤,導(dǎo)致應(yīng)用程序出現(xiàn)異常。攻擊監(jiān)視單元可以監(jiān)視到此種異常,并由攻擊處理器作 相應(yīng)處理。(10)在安全運行裝置中運行應(yīng)用程序執(zhí)行體。運行過程參見圖8。(11)在應(yīng)用程序執(zhí)行體執(zhí)行過程中,殼裝置加載啟動攻擊監(jiān)視單元和內(nèi)存沖洗單 元。攻擊監(jiān)視單元將監(jiān)視應(yīng)用程序的運行異常,內(nèi)存中調(diào)試器、跟蹤器及其他破解工具的特 征數(shù)據(jù),操作系統(tǒng)的調(diào)試異常,處理器的調(diào)試異常。攻擊監(jiān)視裝置將以下異常作為被攻擊的 條件①應(yīng)用程序運行異常,例如空指令、空地址、越權(quán)指令、越權(quán)地址等;②在內(nèi)存中發(fā)現(xiàn)調(diào)試器、跟蹤器及其他破解工具的數(shù)據(jù)痕跡;③通過判斷CPU或JAVA虛擬機提供的跟蹤調(diào)試機制是否具有自恢復(fù)能力來判斷 出自身被跟蹤或者被監(jiān)視;④發(fā)現(xiàn)操作系統(tǒng)調(diào)試異常;⑤發(fā)現(xiàn)處理器調(diào)試異常。當(dāng)攻擊監(jiān)視單元監(jiān)視到異常時,殼裝置啟動攻擊處理單元,攻擊處理單元根據(jù)攻 擊監(jiān)視單元的判斷結(jié)果對攻擊行為進行相應(yīng)處理。攻擊監(jiān)視單元可以通過分時的方式對運 行環(huán)境進行掃描監(jiān)視。例如,攻擊監(jiān)視單元每隔10 30分鐘,在系統(tǒng)空閑時對內(nèi)存進行主 動掃描,以確定是否有調(diào)試器和跟蹤器等破解工具在運行。(12)內(nèi)存沖洗單元對應(yīng)用程序執(zhí)行體進行清理。①清洗應(yīng)用程序初始化執(zhí)行體。內(nèi)存沖洗單元將已經(jīng)執(zhí)行過的應(yīng)用程序初始化執(zhí)行體片段從內(nèi)存中沖洗掉,防止 破解者使用dump內(nèi)存的方式攻擊。每個應(yīng)用程序的開始部分都會執(zhí)行系統(tǒng)的初始化,為整個應(yīng)用系統(tǒng)的正常運行提 供工作環(huán)境。初始化代碼是每個應(yīng)用程序的關(guān)鍵代碼,而且初始化代碼只會執(zhí)行一次,一旦 初始化代碼執(zhí)行完畢,應(yīng)用程序在其后的運行中均不會再調(diào)用這段代碼。因此,當(dāng)應(yīng)用程序 執(zhí)行完初始化代碼后,就可以將其從內(nèi)存中清除。為了防止攻擊者輕易發(fā)現(xiàn)初始化代碼被 破壞,例如通過簡單置0的方式等,內(nèi)存沖洗單元通過將本進程中其它內(nèi)存空間的代碼或 數(shù)據(jù)通過復(fù)制的方式填充待沖洗的內(nèi)存空間來達到破壞內(nèi)存數(shù)據(jù)的目的。②應(yīng)用程序退出后的處理。當(dāng)整個應(yīng)用程序執(zhí)行完畢、退出后,內(nèi)存沖洗單元將應(yīng)用程序的部分代碼空間通 過置0的方式進行沖洗,防止應(yīng)用程序運行過的內(nèi)存空間在應(yīng)用程序退出后被dump出去。通過上述方法可以看出,本實施方式在安全運行裝置與應(yīng)用程序之間采用了雙向 驗證方式,參見上述方法中的步驟(2)、步驟(4)和圖9。在整個防破解系統(tǒng)中,有兩組非對 稱密鑰,一組非對稱密鑰為預(yù)先生成的公鑰2和私鑰2 ;另一組非對稱密鑰為加殼時隨機生 成的公鑰r和私鑰r。預(yù)先生成的非對稱密鑰用來對安全運行裝置進行數(shù)字簽名和簽名驗證,其中私鑰 2私密保存,公鑰2存放在加殼加密系統(tǒng)中,在保護應(yīng)用程序時,加殼加密系統(tǒng)將公鑰2傳遞到受保護的應(yīng)用程序文件頭中。隨機生成的非對稱密鑰對中的私鑰r,用于加密受保護應(yīng)用程序的片段和對受保 護的應(yīng)用程序簽名,在完成上述操作后,私鑰r被銷毀。公鑰r用于解密受保護應(yīng)用程序的 片段和對受保護的應(yīng)用程序進行簽名驗證,公鑰r保存在權(quán)限文件中,并通過權(quán)限文件傳 遞到手機上。在受保護的應(yīng)用程序運行時,殼裝置首先獲得控制權(quán),殼裝置通過保存在受保護 文件頭中的公鑰2對安全運行裝置進行數(shù)字簽名驗證,(安全運行裝置已通過私鑰2進行了 數(shù)字簽名并存放在安全運行裝置的數(shù)字簽名認(rèn)證單元A中)。如果通過驗證,則繼續(xù)運行; 如果驗證失敗,則進行異常處理。當(dāng)安全運行裝置被應(yīng)用程序的殼裝置激活后,安全運行裝置通過權(quán)限文件獲得公 鑰r,然后使用公鑰r對應(yīng)用程序進行數(shù)字簽名驗證(應(yīng)用程序執(zhí)行體文件的文件頭已通過 私鑰r進行了數(shù)字簽名并存放在文件頭中的數(shù)字簽名認(rèn)證單元B中)。如果驗證通過,則按 照應(yīng)用程序執(zhí)行體片段順序執(zhí)行應(yīng)用程序;否則將應(yīng)用程序退出安全運行裝置。顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精 神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其同等技術(shù)的范圍 之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
1權(quán)利要求
1.一種手機應(yīng)用程序加殼和加密方法,包括以下步驟(1)對待加殼和加密的應(yīng)用程序執(zhí)行體進行分段,根據(jù)預(yù)先設(shè)置的該應(yīng)用程序的保護 強度確定需要加殼和加密的片段;(2)生成加殼和加密時使用的密鑰m和一公鑰r-私鑰r對,利用所述密鑰m和私鑰r 分別對確定需要加殼和加密的片段進行加殼和加密處理;(3)將文件頭、殼程序和應(yīng)用程序執(zhí)行體片段合成一個文件F,所述文件頭包括加殼和 加密的執(zhí)行體片段位置信息、加殼方式標(biāo)識和加密算法標(biāo)識。
2.如權(quán)利要求1所述的手機應(yīng)用程序加殼和加密方法,其特征在于步驟(1)中所述 保護強度分為若干等級,等級越高,加殼和加密的片段越多。
3.如權(quán)利要求1所述的手機應(yīng)用程序加殼和加密方法,其特征在于步驟(1)中根據(jù) 應(yīng)用程序的保護強度隨機選擇相應(yīng)數(shù)量的片段進行加殼和加密。
4.如權(quán)利要求1所述的手機應(yīng)用程序加殼和加密方法,其特征在于步驟(2)中所述 密鑰m由對被加殼的執(zhí)行體片段前面的部分執(zhí)行體片段求字節(jié)和生成;如果加密強度高, 則選擇前面較多的執(zhí)行體片段進行運算,否則選擇較少的執(zhí)行體片段進行運算。
5.如權(quán)利要求1所述的手機應(yīng)用程序加殼和加密方法,其特征在于所述方法還包括 合成密鑰k并使用所述密鑰k對所述公鑰r進行加密的步驟。
6.如權(quán)利要求5所述的手機應(yīng)用程序加殼和加密方法,其特征在于所述密鑰k根據(jù) 用戶唯一碼合成。
7.如權(quán)利要求1所述的手機應(yīng)用程序加殼和加密方法,其特征在于所述方法還包括 將加密的應(yīng)用程序與加密該應(yīng)用程序所使用的公鑰r之間的對應(yīng)關(guān)系保存在權(quán)限文件中 的步驟。
8.如權(quán)利要求1 7中任一項所述的手機應(yīng)用程序加殼和加密方法,其特征在于所 述方法還包括對所述文件F使用私鑰r進行數(shù)字簽名的步驟,所述文件頭還包括數(shù)字簽名 認(rèn)證信息。
9.一種手機應(yīng)用程序加殼和加密系統(tǒng),包括用于設(shè)置對應(yīng)用程序執(zhí)行體的分段方式, 對應(yīng)用程序執(zhí)行體片段進行加殼的加殼方式,對應(yīng)用程序執(zhí)行體片段進行加密的加密算 法,殼程序庫和對應(yīng)用程序的保護強度的設(shè)置裝置(11);用于掃描應(yīng)用程序安裝包,分析應(yīng)用程序各部分之間的調(diào)用關(guān)系,標(biāo)識應(yīng)用程序執(zhí)行 體文件的預(yù)處理裝置(12);用于根據(jù)設(shè)定的分段方式將應(yīng)用程序執(zhí)行體分成若干片段,并根據(jù)設(shè)置的對該應(yīng)用程 序的保護強度確定需要加殼和加密的執(zhí)行體片段的分段裝置(13);用于合成加殼時使用的密鑰m,并利用所述密鑰m對需要加殼的應(yīng)用程序執(zhí)行體片段 按照設(shè)置的加殼方式進行加殼處理的加殼裝置(14);用于生成一公鑰r-私鑰r對,并利用所述私鑰r對需要加密的應(yīng)用程序執(zhí)行體片段進 行加密的片段加密裝置(15);用于將應(yīng)用程序執(zhí)行體文件的文件頭、殼程序、加殼和加密后的應(yīng)用程序執(zhí)行體片段 合成一個文件F的合成裝置(16)。
10.如權(quán)利要求9所述的手機應(yīng)用程序加殼和加密系統(tǒng),其特征在于所述系統(tǒng)還包括 用于對文件F使用私鑰r進行數(shù)字簽名的數(shù)字簽名裝置(17)。
11.如權(quán)利要求9或10所述的手機應(yīng)用程序加殼和加密系統(tǒng),其特征在于所述系統(tǒng) 還包括用于根據(jù)應(yīng)用程序編號或ID以及用戶唯一碼合成密鑰k,使用所述密鑰k對公鑰r 進行加密的公鑰加密裝置(18)。
12.—種采用權(quán)利要求1 8中任一項所述方法進行加殼和加密的手機應(yīng)用程序的脫 殼和解密方法,包括以下步驟(1)如果對所述文件F進行了數(shù)字簽名,則先進行數(shù)字簽名認(rèn)證;如果通過驗證,則進 入下一步,否則結(jié)束;如果未對所述文件F進行數(shù)字簽名,則直接進入下一步;(2)獲取該應(yīng)用程序?qū)?yīng)的公鑰r,如果所述公鑰r使用了密鑰k加密,則先合成對所 述公鑰r進行解密的密鑰k,使用所述密鑰k對所述公鑰r進行解密;如果未對公鑰r進行 加密,則直接進入下一步;(3)利用所述公鑰r對加密的應(yīng)用程序執(zhí)行體片段進行解密;(4)合成脫殼還原時使用的密鑰m,利用所述密鑰m對加殼的應(yīng)用程序執(zhí)行體片段進行 脫殼處理。
13.一種采用權(quán)利要求9所述系統(tǒng)進行加殼和加密的手機應(yīng)用程序的脫殼和解密系 統(tǒng),包括用于根據(jù)應(yīng)用程序執(zhí)行體文件的文件頭中記錄的加密算法標(biāo)識獲取相應(yīng)的解密算 法,利用公鑰r對文件頭中標(biāo)識的加密的執(zhí)行體片段采用所述解密算法進行解密處理的片 段解密裝置(23);用于合成脫殼還原時使用的密鑰m,根據(jù)加殼和加密的應(yīng)用程序執(zhí)行體文件的文件頭 中記錄的加殼方式標(biāo)識獲取相應(yīng)的脫殼方式,利用所述密鑰m對文件頭中標(biāo)識的加殼的執(zhí) 行體片段采用所述脫殼方式進行脫殼處理的脫殼裝置(24)。
14.如權(quán)利要求13所述的手機應(yīng)用程序的脫殼和解密系統(tǒng),其特征在于所述系統(tǒng)還 包括用于使用私鑰r對待解密和脫殼的應(yīng)用程序進行數(shù)字簽名認(rèn)證的數(shù)字簽名認(rèn)證裝置 (21)。
15.如權(quán)利要求13所述的手機應(yīng)用程序的脫殼和解密系統(tǒng),其特征在于所述系統(tǒng)還 包括用于從權(quán)限文件中獲取該應(yīng)用程序?qū)?yīng)的加密的公鑰r,根據(jù)待解密和脫殼的應(yīng)用程 序編碼或ID以及用戶唯一碼合成對所述加密的公鑰r進行解密的密鑰k,并使用所述密鑰 k對所述加密的公鑰r進行解密的公鑰解密裝置(22)。
16.一種采用權(quán)利要求1 8中任一項所述方法進行加殼和加密的手機應(yīng)用程序運行 系統(tǒng),包括啟動裝置(31)、安全運行裝置(32)和殼裝置(33)所述啟動裝置(31)用于啟動應(yīng)用程序,應(yīng)用程序中的殼裝置(33)首先啟動;所述安全運行裝置(32)包括用于加載運行應(yīng)用程序的加載運行單元(321);用于從權(quán) 限文件中獲取應(yīng)用程序?qū)?yīng)的加密的公鑰r,合成對公鑰r進行解密的密鑰k,利用所述密 鑰k對公鑰r進行解密,再利用解密后的公鑰r對文件頭中加密執(zhí)行體片段位置標(biāo)識對加 密的執(zhí)行體片段進行解密還原的解密單元(323);所述殼裝置(33)被加入到應(yīng)用程序中,包括用于將應(yīng)用程序可能依賴的安全庫,脫殼 單元、應(yīng)用程序執(zhí)行體片段和內(nèi)存沖洗單元加載到安全運行裝置的加載啟動單元(332); 用于采用權(quán)利要求12所述方式對應(yīng)用程序執(zhí)行體片段進行脫殼處理的脫殼單元(334);用 于將已經(jīng)執(zhí)行過的應(yīng)用程序執(zhí)行體片段從內(nèi)存中沖洗掉的內(nèi)存沖洗單元(335)。
17.如權(quán)利要求16所述的手機應(yīng)用程序運行系統(tǒng),其特征在于所述安全運行裝置(32)還包括用于根據(jù)應(yīng)用程序可執(zhí)行體文件的文件頭中殼裝置變 換標(biāo)識配置殼裝置的變換模式的殼裝置配置單元(34);所述殼裝置(33)還包括用于根據(jù)安全運行裝置中的殼裝置配置單元配置的變換模式 變換自身結(jié)構(gòu)的變換單元(331)。
18.如權(quán)利要求16所述的手機應(yīng)用程序運行系統(tǒng),其特征在于所述安全運行裝置 (32)在不需要時進行休眠,在內(nèi)存中保存較少的必要數(shù)據(jù)。
19.如權(quán)利要求16所述的手機應(yīng)用程序運行系統(tǒng),其特征在于所述安全運行裝置(32)還包括用于使用公鑰2對安全運行裝置的數(shù)字簽名進行認(rèn)證 的數(shù)字簽名認(rèn)證單元A (322);所述殼裝置(33)還包括用于使用公鑰r對應(yīng)用程序執(zhí)行體文件的文件頭中的數(shù)字簽 名進行認(rèn)證的數(shù)字簽名認(rèn)證單元B(333);所述殼裝置(33)中的加載啟動單元(332)還用 于加載所述數(shù)字簽名認(rèn)證單元B (333)。
20.如權(quán)利要求16所述的手機應(yīng)用程序運行系統(tǒng),其特征在于所述殼裝置(33)還包 括攻擊監(jiān)視單元(336)和攻擊處理單元(337),所述加載啟動單元(332)還用于加載攻擊監(jiān) 視單元和攻擊處理單元;所述攻擊監(jiān)視單元(336)用于監(jiān)視應(yīng)用程序運行異常,內(nèi)存中調(diào)試器、跟蹤器及其他 破解工具的特征數(shù)據(jù),操作系統(tǒng)調(diào)試異常,處理器調(diào)整異常;所述攻擊處理單元(337)用于根據(jù)攻擊監(jiān)視裝置的響應(yīng)進入攻擊處理模式,根據(jù)攻擊 監(jiān)視裝置的攻擊判斷結(jié)果對攻擊行為進行相應(yīng)處理。
21.一種采用權(quán)利要求1 8中任一項所述方法進行加殼和加密的手機應(yīng)用程序運行 方法,包括以下步驟(1)啟動裝置啟動應(yīng)用程序,應(yīng)用程序中加入的殼裝置首先啟動;(2)殼裝置激活安全運行裝置,將應(yīng)用程序加載到安全運行裝置;(3)安全運行裝置獲取權(quán)限文件,如果當(dāng)前待執(zhí)行的應(yīng)用程序執(zhí)行體片段進行了加密, 則先調(diào)用解密單元對應(yīng)用程序執(zhí)行體片段進行解密;(4)如果當(dāng)前待執(zhí)行的應(yīng)用程序執(zhí)行體片段進行了加殼,則先由殼裝置調(diào)用脫殼單元 對應(yīng)用程序執(zhí)行體片段進行脫殼處理;(5)在安全運行裝置中運行應(yīng)用程序執(zhí)行體;(6)在應(yīng)用程序執(zhí)行體執(zhí)行過程中,殼裝置加載啟動內(nèi)存沖洗單元,將已經(jīng)執(zhí)行過的應(yīng) 用程序執(zhí)行體片段從內(nèi)存中沖洗掉;殼裝置加載啟動攻擊監(jiān)視單元,攻擊監(jiān)視單元將監(jiān)視 應(yīng)用程序的運行異常,內(nèi)存中調(diào)試器、跟蹤器及其他破解工具的特征數(shù)據(jù),操作系統(tǒng)調(diào)試異 常和處理器調(diào)整異常;當(dāng)攻擊監(jiān)視單元監(jiān)視到異常時,殼裝置啟動攻擊處理單元,攻擊處理 單元根據(jù)攻擊監(jiān)視單元的判斷結(jié)果對攻擊行為進行相應(yīng)處理。
22.如權(quán)利要求21所述的手機應(yīng)用程序運行方法,其特征在于步驟(2)中還包括殼 裝置使用公鑰2對安全運行裝置進行數(shù)字簽名認(rèn)證的操作;如果通過認(rèn)證,則繼續(xù)運行;否 則進行異常處理。
23.如權(quán)利要求21所述的手機應(yīng)用程序運行方法,其特征在于步驟(3)中在對應(yīng)用 程序執(zhí)行體片段進行解密之前,還包括讀入應(yīng)用程序執(zhí)行體文件的文件頭,使用公鑰r對 應(yīng)用程序進行數(shù)字簽名認(rèn)證的操作;如果認(rèn)證通過,則按照應(yīng)用程序執(zhí)行體片段順序執(zhí)行應(yīng)用程序;否則將應(yīng)用程序退出安全運行裝置。
24.如權(quán)利要求21所述的手機應(yīng)用程序運行方法,其特征在于所述方法還包括安全 運行裝置根據(jù)應(yīng)用程序執(zhí)行體文件的文件頭中的殼裝置變換標(biāo)識配置殼裝置變換模式的 步驟;在安全運行裝置中運行應(yīng)用程序執(zhí)行體之前,還包括殼裝置根據(jù)所述變換模式變換自 身結(jié)構(gòu)的步驟。
25.如權(quán)利要求24所述的手機應(yīng)用程序運行方法,其特征在于所述變換模式包括指 令順序變換、寄存器變換、空指令變換、代碼擾亂變換和花指令變換。
全文摘要
本發(fā)明涉及一種手機應(yīng)用程序防破解方法及系統(tǒng),屬于手機軟件保護技術(shù)領(lǐng)域。本發(fā)明首先對手機應(yīng)用程序執(zhí)行體進行分段,對部分片段進行加殼和加密;在應(yīng)用程序執(zhí)行體執(zhí)行過程中,進行解密和脫殼;將已經(jīng)執(zhí)行過的應(yīng)用程序執(zhí)行體片段從內(nèi)存中沖洗掉;同時監(jiān)視應(yīng)用程序的運行異常,內(nèi)存中調(diào)試器、跟蹤器及其他破解工具的特征數(shù)據(jù),操作系統(tǒng)調(diào)試異常和處理器調(diào)試異常;當(dāng)攻擊監(jiān)視單元監(jiān)視到異常時,啟動攻擊處理單元,攻擊處理單元根據(jù)攻擊監(jiān)視單元的判斷結(jié)果對攻擊行為進行相應(yīng)處理。本發(fā)明能夠有效地防止手機應(yīng)用程序被破解,提高手機應(yīng)用程序的安全性。
文檔編號H04L9/32GK102118512SQ20111007633
公開日2011年7月6日 申請日期2011年3月28日 優(yōu)先權(quán)日2011年3月28日
發(fā)明者梁金千, 阮曉迅 申請人:梁金千, 阮曉迅
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1