1. 程式人生 > >Android應用程式破解(反編譯)

Android應用程式破解(反編譯)

一、apktools進行反編譯 1.首先安裝需要JAVA環境(JDK和JRE)     設定JAVA環境變數          CLASSPATH       %JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar         JAVA_HOME     C:\Program Files\Java\jdk1.8.0_20            Path    %JAVA_HOME%\bin;C:\Program Files\Java\jre1.8.0_20\bin 2.下載apktools並解壓 (1)下載apktool_2.0.0rc4.jar和apktool-install-windows-r04-brut1.tar.bz2
(2)把兩個檔案都解壓放在同一個目錄,共三個檔案 aapt.exe apktool.bat apktool.jar 其中,apktool.jar用於解包,apktool.jar和aapt.exe聯合用於打包。 (3)點選開始選單。執行,輸入CMD回車,用cd命令轉到剛剛解壓apktool-install-windows所在的資料夾,輸入apktool,出現一些命令說明即成功安裝。當然,我們也可以將三個檔案直接放在C盤的Windows目錄,就可以直接使用apktool。
3.apktools使用方法 (1)反編譯與打包命令     反編譯命令:usage: apktool d[ecode] [options] <file_apk>
                     -f,--force              Force delete destination directory.                      -o,--output <dir>       The name of folder that gets written. Default is apk.ou                       -p,--frame-path <dir>   Uses framework files located in <dir>.                      -r,--no-res             Do not decode resources.
                     -s,--no-src             Do not decode sources.                      -t,--frame-tag <tag>    Uses framework files tagged by <tag>.     打包命令:usage: apktool b[uild] [options] <app_path>                      -f,--force-all          Skip changes detection and build all files.                      -o,--output <dir>       The name of apk that gets written. Default is dist/name .apk (2)將apk應用存放到當前目錄(這裡假設為D盤根目錄),反編譯
然後,在當前目錄看到反編譯的資料夾"2015" 二、apktools進行重新打包
    當我們對破解後的apk修改後,可以重新打包回APK檔案,執行命令:apktool b <decode_dir> ,然後我們在當前目錄下看到打包好的APK。由於apk還沒有簽名,一般是無法安裝的。此時,可以通過keytool工具生成證書(.keystore檔案),最後使用jarsigner工具對apk應用進行簽名即可。 具體步驟如下 1.使用apktool重寫打包成apk       將破解後修改的應用原始碼重寫打包回apk,主要使用aapt.exe 、apktool.jar  兩個工具。需要注意的是,最好是從谷歌官方網站下載最新版的aapt.exe(也可從Android SDK的build-tools目錄下拷貝)和apktool工具。
2.使用keytool工具生成簽名證書 keytool -genkey -v-keystore 2015.keystore-alias 2015.keystore-keyalg RSA -validity 20000 說明:       1)keytool是工具名稱,-genkey意味著執行的是生成數字證書操作,-v表示將生成證書的詳細資訊打印出來,顯示在dos視窗中;       2)-keystore2015.keystore 表示生成的數字證書的檔名為“2015.keystore”;       3)-alias2015.keystore 表示證書的別名為“2015.keystore”,當然可以不和上面的檔名一樣;       4)-keyalg RSA 表示生成金鑰檔案所採用的演算法為RSA;       5)-validity 20000 表示該數字證書的有效期為20000天,意味著20000天之後該證書將失效 在執行上面的命令生成數字證書檔案時,會提示你輸入一些資訊,包括證書的密碼,示例如下:        注:執行命令成功,系統會在當前目錄(C:\Users\jiangdongguo)生成一個"2015.keystore"的證書。 3.使用jarsigner工具為Android應用程式簽名       jarsigner -verbose -keystore2015.keystore -signedjar2015_signed.apk 2015.apk 2015.keystore 說明:       1)jarsigner是工具名稱,-verbose表示將簽名過程中的詳細資訊打印出來,顯示在dos視窗中;       2)-keystore2015.keystore 表示簽名所使用的數字證書所在位置,這裡沒有寫路徑,表示在當前目錄下;       3)-signedjar 2015_signed.apk 2015.apk 表示給notepad.apk檔案簽名,簽名後的檔名稱為2015_signed.apk;       4)最後面的2015.keystore 表示證書的別名,對應於生成數字證書時-alias引數後面的名稱 註釋: keytool工具:該工具位於jdk安裝路徑的bin目錄下; jarsigner工具:該工具位於jdk安裝路徑的bin目錄下;

三、常見問題

1.關於安裝和管理framework檔案

    1. $ apktool d HtcContacts.apk     2. I: Loading resource table...     3. I: Decoding resources...     4. I: Loading resource table from file: /home/brutall/apktool/framework/1.apk     5. W: Could not decode attr value, using undecoded value instead: ns=android, name=drawable, value=0x02020542     6. ...     7. W: Could not decode attr value, using undecoded value instead: ns=android, name=icon, value=0x02020520     8. Can't find framework resources for package of id: 2. You must install proper framework files, see project website for more info. ... ... ... W: Could not decode attr value, using undecoded value instead: ns=android, name=hardwareAccelerated, value=0xffffffff ...

原因:C:\Users\jiangdongguo\apktool\framework\1.apk版本過低。在使用apktool進行反編譯前不需要做其他的事情,然而由於有的廠商,如HTC,三星等,他們定製了framework檔案並且在他們的系統應用中使用了這些檔案,為了能正常的反編譯這些apk檔案,你就必須從你的裝置中拷貝出framework檔案並且安裝到apktool中。

解決方案


這裡假設framwork-res.apk檔案都放在d盤根目錄

2.出現public.xml資源沒有定義錯誤


原因:

其實在編譯過程中會遇到很多其他的問題,大多數是由於刪除、修改、添加了資源後,沒有對應的修改res\values\public.xml檔案而造成的。

解決方案

(1)public.xml檔案中的資源不能重複定義。

(2)public.xml檔案中的任意兩個資源的ID不能一樣

(3)public.xml檔案中定義的資源必須能找到該檔案(如果你刪除了一些檔案,必須要對應的刪除public.xml中的該行)

(4)public.xml檔案中儘可能全面(如果你添加了某資源,最好確保在public.xml中也新增)

(5)public.xml檔案中的資源的ID儘可能連續(當你為新增的檔案新增宣告時,賦予的ID儘可能是連續的)

總結:很多時候都是因為apktool版本過低導致的錯誤,為此我們需要去谷歌官網下載最新版的apktool和aapt.exe工具,然後直接放在系統盤(C)的Windows目錄下即可。