綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[教程] apk解密實戰--線上聽歌軟體

[複製連結] 查看: 42615|回覆: 22|好評: 0
跳轉到指定樓層
樓主
fam1001 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2016-3-28 10:58

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
近日使用某連線聽歌軟體,有不少兒童故事不錯,但連線聽經常出現時斷時續情形,而軟體要求積分大於1500才可整頁下載。要滿足積分條件需要手動安裝其推薦的數十個應用,簡直是坑爹。故決定破解之。
假定要破解apk的名字為mytest.apk,則破解步驟如下:
步驟 1:得到resource及smali檔案1)得到apktool工具
http://code.google.com/p/android-apktool/https://github.com/brutall/brut.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所在的資料夾裡
1.D:android        oolapktoolapktool d C:mytest.apk C:out
命令行解釋:apktool d 要反編譯的檔案 輸出資料夾
特別注意:你要反編譯的檔案一定要放在C盤的根目錄裡,
3)開啟 C:out資料夾 就可以得到各種資源了步驟
2:得到java檔案
方法a:
  • 把apk檔案改名為.zip,然後解壓縮出其中的class.dex檔案
  • 安裝把dex檔案反編譯為jar檔案的工具dex2jar。http://code.google.com/p/dex2jar/downloads/list
  • 把class.dex拷貝到dex2jar.bat所在目錄。
  • 生成jar檔案classes.dex.dex2jar.jar[java]dex2jar.bat classes.dex
  • 安裝把jar反編譯為java的工具。(JD-GUI)
  • 執行JD-GUI工具,開啟上面的jar檔案
  • File -> Save All Sources將生成Java源代碼檔案到c:out
方法b(TBV)
  • 從out目錄下取得dexdump。
  • adb shell dexdump -d -f -h /data/dalvik-cache/data@[email protected]@classes.dex > twitpic.text
步驟3:破解源代碼
1)查找位置
由於此軟體要求積分大於1500才可下載,故開啟java檔案,查找1500發現有三個檔案有定義,PlayActivity$12.java,Cfg.java,ScoreDialog$5.java。
PlayActivity$12.java

  1. final class PlayActivity$12  implements Runnable
  2. {
  3. public void run()
  4. {
  5. ...
  6. int i = 1500;
  7. int j;
  8. Cfg.IS_WITHAD = j;
  9. if (j != 0)
  10. {
  11. if (this.val$arg1 >= i) //似乎為顯示廣告門限控制值
  12. break label91;
  13. boolean bool2 = Cfg.HIDDEN_GUANGGAO;
  14. label35: boolean bool3; //???
  15. Cfg.HIDDEN_GUANGGAO = bool3;
  16. Cfg.SaveBool("hiddenguanggao", bool3);
  17. }
複製代碼



ScoreDialog$5.java

  1. final class ScoreDialog$5  implements Runnable
  2. {
  3. public void run()
  4. {
  5. Object localObject1 = null;
  6. int i = 17301659;
  7. int j = 1500;       //Score
  8. ...
  9. if (localProgressDialog != null)
  10. if (this.val$arg1 < j)     //可以猜出此為定義的分數之一,如不滿足則彈出對話框
  11. {
  12. ScoreDialog localScoreDialog1 = this.this$0;
複製代碼



Cfg.java

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



PlayActivity$12.java

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



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

  1. .field public static final HIDDEN_GUANGGAO_NEED_SCORE:I = 0x5DC                //此處改為0x0
複製代碼



PlayActivity$12.smali

  1. .method public run()V
  2. .locals 6

  3. .prologue
  4. const/4 v2, 0x1
  5. const/4 v4, 0x0
  6. const/16 v3, 0x5DC                                                        //此處改為0x0
複製代碼



ScoreDialog$5.smali

  1. .method public run()V
  2. .locals 10
  3. .prologue
  4. const/4 v7, 0x0
  5. const v5, 0x108009b                                                          //對應17301659
  6. const/16 v6, 0x5DC                                                           //此處改為0x0
複製代碼



步驟4 將反編譯完的檔案重新打包成apk檔案out.apk
  1. 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)準備簽名檔案
[java]
1."C:Program FilesJavajdk1.6.0_24inkeytool" -genkey -alias wendy.keystore -keyalg RSA -validity 20000 -keystore wendy.keystore

注意密碼為6位數,如123456。
3)簽名
[plain]
1."C:Program FilesJavajdk1.6.0_24injarsigner" -verbose -keystore wendy.keystore -signedjar out.apk out_raw.apk wendy.keystore

此處需輸入第2步的密碼123456,執行完即可生成簽名後的apk檔案out.apk.
安裝後,發現原有限制被破解了,一切成功。

「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)

評分

參與人數 14碎鑽 +10 經驗 +1 幫助 +14 收起 理由
linweilung + 1 + 1 非常讃
rockthis + 1 + 1 非常讃
iqmost + 1 + 1 很給力!
a04500000 + 1 好內容。朕有賞,還不謝主隆恩.
a09060628 + 1 + 1 非常讃
uybni + 1 + 1 + 1 很給力!
王均 + 1 + 1 非常讃
linda26807 + 1 + 1 非常讃
jonguser + 1 偶像,看完你的內容,讓我找到了活著的意義.
apk9511 + 1 偶像,看完你的內容,讓我找到了活著的意義.

查看全部評分

收藏收藏16 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

沙發
alarm21 | 收聽TA | 只看該作者
發表於 2016-9-27 14:02
看完你的內容
應該可以試試看
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

板凳
mc9765 | 收聽TA | 只看該作者
發表於 2016-12-6 05:16

看完你的內容
應該可以試試看 !!!
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

地板
qweruipo3 | 收聽TA | 只看該作者
發表於 2016-12-18 22:50


看完你的內容
應該可以試試看 !!!
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

5
jaulong | 收聽TA | 只看該作者
發表於 2017-6-25 12:25
看完你的內容
應該我還是不會
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

6
jimmy724 | 收聽TA | 只看該作者
發表於 2018-2-22 22:04
看了你的介绍, 到想下载来试试手
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

7
netleoian | 收聽TA | 只看該作者
發表於 2018-5-17 09:35
想請問
ScoreDialog$5.smali 跟 PlayActivity$12.smali
個別是在處理什麼嗎?
看完之後還是不太懂 怎都是兩個都是放0放回去?
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

8
hytang | 收聽TA | 只看該作者
發表於 2020-12-10 17:02
看完你的內容
應該我也是不會!!!太難了
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

9
fh7889 | 收聽TA | 只看該作者
發表於 2021-1-28 09:28
看完你的內容
我決定了
我還是不要聽歌好了
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

10
avc978 | 收聽TA | 只看該作者
發表於 2021-1-28 15:07
很詳細,可以拿來當參考資料,趕戲ㄝ
用Android 就來Android 台灣中文網(https://apk.tw)
回覆 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則