欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種apk應用加固的方法及系統(tǒng)的制作方法

文檔序號:6525521閱讀:317來源:國知局
一種apk應用加固的方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種APK應用加固的方法及系統(tǒng),所述方法為,導入待加固文件源碼或APK文件,并對待加固文件進行預處理,分析其語義,針對不同的對象采取不同的加密方式,將加密后的對象進行JVM類初始化處理,將加密后的對象以靜態(tài)成員、靜態(tài)代碼塊等方式提取到類初始化過程中,最后將加固結果導出。通過本發(fā)明的方法,能夠對Android下的APK應用程序進行加固處理,使反編譯結果中不會出現(xiàn)任何明文字符串和庫函數(shù)的顯示調用,并隱藏了核心代碼功能,極大提增加了對APK文件逆向分析的難度,從而起到對開發(fā)者的應用代碼的保護作用。
【專利說明】—種APK應用加固的方法及系統(tǒng)
【技術領域】
[0001]本發(fā)明涉及移動終端應用安全領域,特別涉及一種APK應用加固的方法及系統(tǒng)?!颈尘凹夹g】
[0002]隨著Android移動終端平臺的日益發(fā)展,第三方應用程序大量涌現(xiàn),對第三方應用的盜版和重打包現(xiàn)象日益嚴重。由于Android下APK能夠很容易的由dex2 jar和JD-GU1、JAD等反編譯工具反編譯為易于閱讀的JAVA代碼,從而代碼中的明文字符串、庫函數(shù)調用、核心功能函數(shù)等都一目了然,使得非法開發(fā)者對第三方應用程序的盜版或者核心功能的逆向工程變得更加容易。

【發(fā)明內容】

[0003]本發(fā)明提供了一種APK應用加固的方法及系統(tǒng),解決了 APK代碼易于被反編譯顯示的問題,能夠使第三方應用程序加固,最大化保護APK應用程序的安全。
[0004]一種APK應用加固的方法,包括:
向JVM中導入待加固的文件,所述文件為文件源碼或打包的APK文件;基于源碼的加固通常是導入類代碼,通常為*.Java文件;
對待加固文件進行預處理,分析待加固文件代碼的語義為字符串對象,或庫函數(shù)調用,或核心功能代碼塊;
根據(jù)分析結果,對待加固文件加密:
如果為字符串對象,則根據(jù)用戶自定義的加密方式加密;
如果為庫函數(shù)調用,則加密被調用的類名、方法名、并進行反射調用;
如果為核心功能代碼塊,則加密并動態(tài)生成加密后的代碼;
JVM類初始化,對加密后的字符串對象、庫函數(shù)調用及核心功能代碼塊以靜態(tài)成員、靜態(tài)代碼塊方式提取到類初始化過程中;
待加固文件的加固結果導出,分別導出加固后的源文件或APK文件?;谠创a的導出結果為加固后的*.java源文件,基于打包APK的導出結果為加固后的APK文件。
[0005]所述的方法中,所述用戶自定義的加密方式為標準加密方式或已知的任一字符串加密方式。
[0006]本發(fā)明還提供一種APK應用加固的系統(tǒng),包括:
加載模塊,用于向JVM中導入待加固的文件,所述文件為文件源碼或打包的APK文件;分析模塊,用于對待加固文件進行預處理,分析待加固文件代碼的語義為字符串對象,或庫函數(shù)調用,或核心功能代碼塊;
加固模塊,用于根據(jù)分析結果,對待加固文件加密:
如果為字符串對象,則根據(jù)用戶自定義的加密方式加密;
如果為庫函數(shù)調用,則加密被調用的類名、方法名、并進行反射調用;
如果為核心功能代碼塊,則加密并動態(tài)生成加密后的代碼; 初始化模塊,用于JVM類初始化,對加密后的字符串對象、庫函數(shù)調用及核心功能代碼塊以靜態(tài)成員、靜態(tài)代碼塊方式提取到類初始化過程中;
文件生成模塊,用于待加固文件的加固結果導出,分別導出加固后的源文件或APK文件。
[0007]所述的系統(tǒng),所述用戶自定義的加密方式為標準加密方式或已知的任一字符串加密方式。
[0008]本發(fā)明方法及系統(tǒng)的優(yōu)勢在于,提供了一種APK應用的加固方案,利用JVM中類初始化的特性和JAVA反射機制,對代碼中的字符串、庫函數(shù)的調用以及部分代碼塊進行加固保護,并且提供基于源碼的加固方式和基于打包APK的加固方式,極大降低了對加固后應用程序的逆向工程的可能性,從而達到最大化保護應用開發(fā)者版權的目的。
[0009]本發(fā)明提供了一種APK應用加固的方法及系統(tǒng),主要針對Android下APK應用的代碼加固方案,并且提供了源碼級和非源碼級的兩種加固方式。所述方法為,導入待加固文件源碼或APK文件,并對待加固文件進行預處理,分析其語義,針對不同的對象采取不同的加密方式,將加密后的對象進行JVM類初始化處理,將加密后的對象以靜態(tài)成員、靜態(tài)代碼塊等方式提取到類初始化過程中,最后將加固結果導出。通過本發(fā)明的方法,能夠對Android下的APK應用程序進行加固處理,使反編譯結果中不會出現(xiàn)任何明文字符串和庫函數(shù)的顯示調用,并隱藏了核心代碼功能,極大提增加了對APK文件逆向分析的難度,從而起到對開發(fā)者的應用代碼的保護作用。
【專利附圖】

【附圖說明】
[0010]為了更清楚地說明本發(fā)明或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明中記載的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0011]圖1為本發(fā)明APK應用加固的方法流程圖;
圖2為本發(fā)明APK應用加固的系統(tǒng)結構示意圖。
【具體實施方式】
[0012]為了使本【技術領域】的人員更好地理解本發(fā)明實施例中的技術方案,并使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結合附圖對本發(fā)明中技術方案作進一步詳細的說明。
[0013]本發(fā)明提供了一種APK應用加固的方法及系統(tǒng),解決了 APK代碼易于被反編譯顯示的問題,能夠使第三方應用程序加固,最大化保護APK應用程序的安全。
[0014]一種APK應用加固的方法,如圖1所示,包括:
5101:向JVM中導入待加固的文件,所述文件為文件源碼或打包的APK文件;基于源碼的加固通常是導入類代碼,通常為*.java文件;
5102:對待加固文件進行預處理,分析待加固文件代碼的語義為字符串對象,或庫函數(shù)調用,或核心功能代碼塊;
根據(jù)分析結果,對待加固文件加密:如果為字符串對象,則執(zhí)行S103:根據(jù)用戶自定義的加密方式加密;這里可以將加密方式統(tǒng)稱為ENCRYPT,其對應的解密方法統(tǒng)稱為DECRYPT,需要加密的字符串對象統(tǒng)稱為STRING,加固后的形態(tài)為 ENCRYPT (STRING);
如果為庫函數(shù)調用,則執(zhí)行S104:加密被調用的類名、方法名、并進行反射調用;加固后的形態(tài)為:
INVOKE(ENCRYPT(CLASSNAME), ENCRYPT(METHODNAME));
如果為核心功能代碼塊,則執(zhí)行S105:加密并動態(tài)生成加密后的代碼;所述的加密方式可以為已知的任一一種代碼塊加密方式;加固后的形態(tài)為:
NEW(ENCRYPT(CODE));
5106:JVM類初始化,對加密后的字符串對象、庫函數(shù)調用及核心功能代碼塊以靜態(tài)成員、靜態(tài)代碼塊方式提取到類初始化過程中;
5107:待加固文件的加固結果導出,分別導出加固后的源文件或APK文件?;谠创a的導出結果為加固后的*.java源文件,基于打包的APK的導出結果為加固后的APK文件。
[0015]所述的方法中,所述用戶自定義的加密方式為標準加密方式或已知的任一字符串加密方式。
[0016]為更明確本發(fā)明的實施方式,對APK文件加固方式舉例如下:
對導入的待加固文件預 處理后,分析得到類A下的字符串信息“aaa”,并且存在一個調用了類B的c方法。并且指定生成一對加密解密函數(shù):encrypt和decrypt。
[0017]對字符串信息進行加密后,“aaa”被encrypt ( “aaa”)生成加密后的結果“xxx”。
[0018]對庫函數(shù)調用信息進行加密,類名“B”被encrypt (“B”)加密為“X”,函數(shù)名“c”被encrypt (“c”)加密為“x”。將invoke (B,c)的方式置換為動態(tài)調用方式。
[0019]其中Class.forName (CLASSNAME)返回一個類名為CLASSNAME的類對象;其對象的getMethod (METHODNAME)方法返回該類下對應METHODNAME名字的方法對象。
[0020]JVM類初始化處理:添加類成員al賦值為加密的字符串結果“xxx” ;
添加類成員a2賦值為加密的調用類名結果“X” ;
添加類成員a3賦值為加密的調用方法名結果“X”。
[0021]置換加固結果:
“aaa” 替換為 decrypt (al);
invoke (B, c)替換為:
invoke (Class.forName(decrypt ( “X”));
Class.forName(decrypt ( “X”)).getMethod( “x”))。
[0022]導出加固后的APK文件,完成加固。
[0023]本實施例中的“X”或“X”為變量,可以由用戶任意設定。
[0024]本發(fā)明還提供一種APK應用加固的系統(tǒng),如圖2所示,包括:
加載模塊201,用于向JVM中導入待加固的文件,所述文件為文件源碼或打包的APK文
件;
分析模塊202,用于對待加固文件進行預處理,分析待加固文件代碼的語義為字符串對象,或庫函數(shù)調用,或核心功能代碼塊;
加固模塊203,用于根據(jù)分析結果,對待加固文件加密: 如果為字符串對象,則根據(jù)用戶自定義的加密方式加密;
如果為庫函數(shù)調用,則加密被調用的類名、方法名、并進行反射調用;
如果為核心功能代碼塊,則加密并動態(tài)生成加密后的代碼;
初始化模塊204,用于JVM類初始化,對加密后的字符串對象、庫函數(shù)調用及核心功能代碼塊以靜態(tài)成員、靜態(tài)代碼塊方式提取到類初始化過程中;
文件生成模塊205,用于待加固文件的加固結果導出,分別導出加固后的源文件或APK文件。
[0025]所述的系統(tǒng),所述用戶自定義的加密方式為標準加密方式或已知的任一字符串加密方式。
[0026]本發(fā)明方法及系統(tǒng)的優(yōu)勢在于,提供了一種APK應用的加固方案,利用JVM中類初始化的特性和JAVA反射機制,對代碼中的字符串、庫函數(shù)的調用以及部分代碼塊進行加固保護,并且提供基于源碼的加固方式和基于打包APK的加固方式,極大降低了對加固后應用程序的逆向工程的可能性,從而達到最大化保護應用開發(fā)者版權的目的。
[0027]本發(fā)明提供了一種APK應用加固的方法及系統(tǒng),主要針對Android下APK應用的代碼加固方案,并且提供了源碼級和非源碼級的兩種加固方式。所述方法為,導入待加固文件源碼或APK文件,并對待加固文件進行預處理,分析其語義,針對不同的對象采取不同的加密方式,將加密后的對象進行JVM類初始化處理,將加密后的對象以靜態(tài)成員、靜態(tài)代碼塊等方式提取到類初始化過程中,最后將加固結果導出。通過本發(fā)明的方法,能夠對Android下的APK應用程序進行加固處理,使反編譯結果中不會出現(xiàn)任何明文字符串和庫函數(shù)的顯示調用,并隱藏了核心代碼功能,極大提增加了對APK文件逆向分析的難度,從而起到對開發(fā)者的應用代碼的保護作用。
[0028]本說明書中的各個實施例均采用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于系統(tǒng)實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
[0029]本發(fā)明可用于眾多通用或專用的計算系統(tǒng)環(huán)境或配置中。例如:個人計算機、服務器計算機、手持設備或便攜式設備、平板型設備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、置頂盒、可編程的消費電子設備、網(wǎng)絡PC、小型計算機、大型計算機、包括以上任何系統(tǒng)或設備的分布式計算環(huán)境等等。
[0030]雖然通過實施例描繪了本發(fā)明,本領域普通技術人員知道,本發(fā)明有許多變形和變化而不脫離本發(fā)明的精神,希望所附的權利要求包括這些變形和變化而不脫離本發(fā)明的精神。
【權利要求】
1.一種APK應用加固的方法,其特征在于,包括: 向JVM中導入待加固的文件,所述文件為文件源碼或打包的APK文件; 對待加固文件進行預處理,分析待加固文件代碼的語義為字符串對象,或庫函數(shù)調用,或核心功能代碼塊; 根據(jù)分析結果,對待加固文件加密: 如果為字符串對象,則根據(jù)用戶自定義的加密方式加密; 如果為庫函數(shù)調用,則加密被調用的類名、方法名、并進行反射調用; 如果為核心功能代碼塊,則加密并動態(tài)生成加密后的代碼; JVM類初始化,對加密后的字符串對象、庫函數(shù)調用及核心功能代碼塊以靜態(tài)成員、靜態(tài)代碼塊方式提取到類初始化過程中; 待加固文件的加固結果導出,分別導出加固后的源文件或APK文件。
2.如權利要求1所述的方法,其特征在于,所述用戶自定義的加密方式為標準加密方式或已知的任一字符串加密方式。
3.—種APK應用加固的系統(tǒng),其特征在于,包括: 加載模塊,用于向JVM中導入待加固的文件,所述文件為文件源碼或打包的APK文件;分析模塊,用于對待加固文件進行預處理,分析待加固文件代碼的語義為字符串對象,或庫函數(shù)調用,或核心功能代碼塊; 加固模塊,用于根據(jù)分析結果,對待加固文件加密: 如果為字符串對象,則根據(jù)用戶自定義的加密方式加密; 如果為庫函數(shù)調用,則加密被調用的類名、方法名、并進行反射調用; 如果為核心功能代碼塊,則加密并動態(tài)生成加密后的代碼; 初始化模塊,用于JVM類初始化,對加密后的字符串對象、庫函數(shù)調用及核心功能代碼塊以靜態(tài)成員、靜態(tài)代碼塊方式提取到類初始化過程中; 文件生成模塊,用于待加固文件的加固結果導出,分別導出加固后的源文件或APK文件。
4.如權利要求3所述的系統(tǒng),其特征在于,所述用戶自定義的加密方式為標準加密方式或已知的任一字符串加密方式。
【文檔編號】G06F21/14GK103902858SQ201310725091
【公開日】2014年7月2日 申請日期:2013年12月25日 優(yōu)先權日:2013年12月25日
【發(fā)明者】潘博文, 喬偉, 肖新光 申請人:武漢安天信息技術有限責任公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
工布江达县| 大埔区| 阿坝县| 隆回县| 石景山区| 伊宁市| 清涧县| 郸城县| 富顺县| 彭泽县| 尚义县| 偏关县| 临漳县| 普宁市| 綦江县| 金昌市| 加查县| 台中县| 沾益县| 巴塘县| 团风县| 新乡市| 福安市| 平遥县| 紫金县| 元朗区| 大庆市| 鹤峰县| 天门市| 湖州市| 天柱县| 百色市| 巴塘县| 柘荣县| 和平区| 青岛市| 建水县| 颍上县| 汉阴县| 长治市| 探索|