apk破解實戰

來源:互聯網
上載者:User

近日使用某線上聽歌軟體,有不少兒童故事不錯,但線上聽經常出現時斷時續情形,而軟體要求積分大於1500才可整頁下載。要滿足積分條件需要手動安裝其推薦的數十個應用,簡直是坑爹。故決定破解之。


假定要破解apk的名字為mytest.apk,則破解步驟如下:


步驟 1:得到resource及smali檔案。1)得到apktool工具

在http://code.google.com/p/android-apktool/下 載獲得,apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip兩個包都要下。解壓縮下載的兩個檔案包,apktool-install-windows-2.1_r01-1.zip解壓縮後得到的包裡有aapt.exe
和apktool.bat.(注意要把apktool-1.0.0.tar.bz2解壓後的一個.jar 檔案copy進來)

2).DOS命令視窗下進入到apktool.bat所在的檔案夾裡。

    D:\android\tool\apktool\apktool d C:\mytest.apk  C:\out 

命令列解釋:apktool d 要反編譯的檔案 輸出檔案夾

特別注意:你要反編譯的檔案一定要放在C盤的根目錄裡,

3).開啟 C:\out檔案夾 就可以得到各種資源了。

步驟2:得到java檔案方法a:

1)、把apk檔案改名為.zip,然後解壓縮出其中的class.dex檔案

2)、安裝把dex檔案反編譯為jar檔案的工具dex2jar。http://code.google.com/p/dex2jar/downloads/list

3)、把class.dex拷貝到dex2jar.bat所在目錄。
4)、產生jar檔案classes.dex.dex2jar.jar

dex2jar.bat classes.dex

5)、安裝把jar反編譯為java的工具。(JD-GUI)http://java.decompiler.free.fr/?q=jdgui

6)、運行JD-GUI工具,開啟上面的jar檔案

7)、File -> Save All Sources將產生Java原始碼檔案到c:\out

方法b(TBV):

1).從out目錄下取得dexdump。

2).adb shell dexdump -d -f -h /data/dalvik-cache/data@app@mytest.apk@classes.dex > twitpic.text

步驟3:破解原始碼1).尋找位置

由於此軟體要求積分大於1500才可下載,故開啟java檔案,尋找1500發現有三個檔案有定義,PlayActivity$12.java,Cfg.java,ScoreDialog$5.java。

PlayActivity$12.java

final class PlayActivity$12  implements Runnable{  public void run()  {...    int i = 1500;    int j;    Cfg.IS_WITHAD = j;    if (j != 0)    {      if (this.val$arg1 >= i) //似乎為顯示廣告門限控制值        break label91;      boolean bool2 = Cfg.HIDDEN_GUANGGAO;       label35: boolean bool3; //???      Cfg.HIDDEN_GUANGGAO = bool3;      Cfg.SaveBool("hiddenguanggao", bool3);    }

ScoreDialog$5.java

final class ScoreDialog$5  implements Runnable{  public void run()  {    Object localObject1 = null;    int i = 17301659;    int j = 1500;       //Score... if (localProgressDialog != null)      if (this.val$arg1 < j)     //可以猜出此為定義的分數之一,如不滿足則彈出對話方塊      {        ScoreDialog localScoreDialog1 = this.this$0;

Cfg.java

public class Cfg{...  public static final int HIDDEN_GUANGGAO_NEED_SCORE = 1500; //似乎為顯示廣告與否的分數門限值

PlayActivity$12.java

final class PlayActivity$12  implements Runnable{  public void run()  {    boolean bool1 = true;    DialogInterface.OnClickListener localOnClickListener1 = null;    int i = 1500;但HIDDEN_GUANGGAO_NEED_SCORE並未被其他任何檔案應用,但保險起見任然改動此值。

2)更改smali檔案
smali檔案只是將java檔案的尾碼改為.smali,故可找到上述三檔案對應的smali檔案
Cfg.smali

.field public static final HIDDEN_GUANGGAO_NEED_SCORE:I = 0x5DC                //此處改為0x0

PlayActivity$12.smali

.method public run()V    .locals 6    .prologue    const/4 v2, 0x1    const/4 v4, 0x0    const/16 v3, 0x5DC                                                        //此處改為0x0

ScoreDialog$5.smali

.method public run()V    .locals 10    .prologue    const/4 v7, 0x0    const v5, 0x108009b                                                          //對應17301659    const/16 v6, 0x5DC                                                           //此處改為0x0
步驟4 將反編譯完的檔案重新打包成apk檔案out.apk   
apktool b c:\out out_raw.apk

步驟5:對產生的apk簽名:

1).準備工具

如沒有安裝JDK,請在Sun官方網站下載JDKhttp://www.java.net/download/jdk6/6u10/promoted/b32/binaries/jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe,其實僅需要中的Keytool和Jarsigner。

2)、準備簽名檔案

"C:\Program Files\Java\jdk1.6.0_24\bin\keytool" -genkey -alias wendy.keystore -keyalg RSA -validity 20000 -keystore wendy.keystore

注意密碼為6位元,如123456。

3)、簽名

"C:\Program Files\Java\jdk1.6.0_24\bin\jarsigner" -verbose -keystore wendy.keystore -signedjar out.apk out_raw.apk wendy.keystore

此處需輸入第2步的密碼123456,執行完即可產生簽名後的apk檔案out.apk.

安裝後,發現原有限制被破解了,一切成功。

ref:

1.一個APK反編譯利器Apktool1

2.如何反編譯apk

3.反編譯Android apk檔案 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.