Android破取某漫畫app獲得VIP許可權

滑板上的老砒霜發表於2019-02-17

0.前言

昨天去公司加班,寫業務程式碼寫的我是心煩意亂,今天本打算再繼續寫的,但是就像肉吃多了也膩一樣,想搞點新花樣試試,最近對寫外掛和破解app很有興趣,想到最近某漫畫app裡的某部漫畫需要用vip許可權才能看,那今天我就想破解這個app,免費獲取vip許可權。

注意:只是用來學習交流,尊重正版尊重創作者,不要用於非法用途

1.準備工具

1.1 apktool

現在好像比較流行用android killer,但是沒有mac版,就用這個了,用來解壓apk和重新打包apk。

1.2 dex2jar

用來將dex檔案轉換成jar包

1.3 jdgui

反編譯jar包,得到java程式碼

1.4sublime

用來檢視程式碼 本文不涉及這些工具的使用方法,只是描寫一下思路,具體使用方法請google。

2.過程

2.1解壓apk

apk就是zip打包的,將apk字尾修改為zip,所以直接用zip解壓就行,如果apk用v2簽名的話,解壓的時候會報錯,這個時候不要擔心,硬解,用命令列unzip **.apk。

Android破取某漫畫app獲得VIP許可權

2.2用dex2jar得到jar包

Android破取某漫畫app獲得VIP許可權

2.3用jdgui反編譯jar包

Android破取某漫畫app獲得VIP許可權

2.4分析

用jdgui檢視java程式碼,你會發現程式碼是經過混淆的,這很正常,壓根也沒期望它不會混淆,混淆不要緊,無非就是變數方法換換名字嘛,耐心分析就好。我們們先正向的想一下,我們們來做一個app,vip許可權一般都是在你登入的時候伺服器返回給你的一個欄位,用來標註你是vip,然後你儲存在本地,寫一個方法可以判斷你是不是vip,開啟需要vip的章節的時候先判斷你是不是vip,如果是的話就可以開啟該鎖定章節了。我們們要做的就是修改這個方法,判斷vip的時候始終返回true。 既然大致思路有了,那麼最主要的問題就是如何確定這是哪個方法在哪個類裡。我們先看一下apk的賬戶頁面

Android破取某漫畫app獲得VIP許可權
可以看到這個藍色的item就是顯示vip資訊的。一般app都會把這些文字放在string.xml這種資原始檔裡,資原始檔又會生成R檔案標記它的位置,一個int型別,我的思路是通過找到這個R檔案中該string的int值,看哪個類的TextView用到了這個string,這個TextView肯定會根據是否是vip而顯示不同的東西,然後基本上就可以找到我們們前面說的那個判斷vip的方法了

2.5操作

apktool解壓apk 得到的檔案如下圖所示

Android破取某漫畫app獲得VIP許可權
得到資原始檔和smail檔案,用sublime開啟,開啟string.xml檔案,搜尋**漫畫VIP,可以看到

Android破取某漫畫app獲得VIP許可權
然後全域性搜尋vip_state_1

Android破取某漫畫app獲得VIP許可權
這就是這個string的id,然後全域性搜尋id

Android破取某漫畫app獲得VIP許可權
可以看到VipInfoView.smail裡使用了string,VipInfoView,名字也很清晰了,肯定就是它了,

Android破取某漫畫app獲得VIP許可權
可以看到在VipInfoView的a()方法裡呼叫textView的setText設定了這個string。 這裡先不著急看smail檔案,開啟jdgui,檢視VipInfoView.class,搜尋a方法,看看在哪裡引用,雖然VipInfoView裡沒有直接引用,但是我會發現一個方法,名字很直白

 public void setLoginState(com.netease.cartoonreader.i.b paramb)
  {
    boolean bool1 = q.a().c();
    ...
      bool2 = q.a().c();
      if (!bool1) {
        break label452;
      }
  ....
      label452:
      this.g.setText(2131625239);
    ...
  }
  
複製程式碼

我省略了大部分程式碼,你會發現如果bool1為false就會跳到label452,呼叫textview設定text,2131625239有沒有很熟悉?這就是那個string的id的十進位制表示。所以我推斷這個q.a().c()方法就是用來判斷vip的,開啟com/netease/cartoonreader/e/q這個smail檔案 找到這個c方法,修改如下

.method public c()Z
    .locals 5

    .prologue
    const/4 v4, 0x1
    
    return v4

.end method
複製程式碼

關於smail其實我也不是很精通,只是知道一些基本的語法,大家自己去看看就好,不難 使用apktool重新打包,簽名安裝。最終效果

Android破取某漫畫app獲得VIP許可權

3總結

整體看難度不大,大家學習參考就好。

Android破取某漫畫app獲得VIP許可權
關注我的公眾號

相關文章