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

來源:互聯網
上載者:User

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\bin2.下載apktools並解壓(1)下載apktool_2.0.0rc4.jar和apktool-install-windows-r04-brut1.tar.bz2    地址:http://code.google.com/p/android-apktool/downloads/list(2)把兩個檔案都解壓放在同一個目錄,共三個檔案aapt.exeapktool.batapktool.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 t                      -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  兩個工具。需要注意的是,最好是從Google官方網站下載最新版的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)-keystore 2015.keystore 表示產生的數位憑證的檔案名稱為“2015.keystore”;      3)-alias 2015.keystore 表示認證的別名為“2015.keystore”,當然可以不和上面的檔案名稱一樣;      4)-keyalg RSA 表示產生密鑰檔案所採用的演算法為RSA;      5)-validity 20000 表示該數位憑證的有效期間為20000天,意味著20000天之後該認證將失效在執行上面的命令產生數位憑證檔案時,會提示你輸入一些資訊,包括認證的密碼,樣本如下:      注:執行命令成功,系統會在目前的目錄(C:\Users\jiangdongguo)產生一個"2015.keystore"的認證。3.使用jarsigner工具為Android應用程式簽名      jarsigner -verbose -keystore 2015.keystore -signedjar2015_signed.apk 2015.apk 2015.keystore說明:      1)jarsigner是工具名稱,-verbose表示將簽名過程中的詳細資料列印出來,顯示在dos視窗中;      2)-keystore 2015.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版本過低導致的錯誤,為此我們需要去Google官網下載最新版的apktool和aapt.exe工具,然後直接放在系統硬碟(C)的Windows目錄下即可。

參考:http://blog.csdn.net/lyq8479/article/details/6401093http://www.cnblogs.com/CuriosityWzk/archive/2012/01/06/2315150.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.