APP攻防--安卓逆向&資料修改&邏輯修改&檢視修改

了了青山見發表於2023-11-01

APP攻防--安卓逆向&資料修改&邏輯修改&檢視修改

@

工具集

MT管理器
NP管理器
APK查殼工具PKID
開發助手專業版破解版 v6.8.4
開發者助手
Smail語法查詢
HttpCanary(小黃鳥)
吾愛破解demo(密碼52pj)
以上工具均可在吾愛破解論壇影片《安卓逆向這檔事》中找到
影片地址《安卓逆向這檔事》

apk目錄意義


逆向資料修改

在吾愛論壇大佬寫的練習逆向app中,第一關完成對app中得圖片與文字替換
image.png
使用MT管理器對目標APP進行安裝包提取定位
image.png

image.png

提取之後檢視APK中得程式碼
image.png
圖中得資料夾中就是APK未進行反編譯得程式碼
image.png

使用開發者助手抓取APP上的文字內容進行復制
image.png
image.png
使用MT管理器中的搜尋功能對關鍵字進行搜尋
image.png
搜尋出只有JF.xml檔案中包含關鍵字
image.png
將檔案進行反編譯之後使用搜尋功能對檔案中關鍵字進行搜尋,找到關鍵字位置進行修改即可完成對關鍵字的替換,更換完成儲存並對檔案更新即可。
image.png

下面繼續對其他關鍵字進行搜尋,發現結果在resources.arsc檔案中存在。
image.png

透過搜尋資源值進行搜尋
image.png
透過搜尋找到關鍵字所在的位置,按照搜尋結果路徑即可順利找到字元所在位置進行修改。
image.png
同樣透過檢視id值也可以實現定位。
image.png
透過id定位的結果也一樣。
image.png

透過各種方式的查詢找到了關鍵字的位置,即可對關鍵字進行修改
image.png

第三個關鍵字在dex檔案中,這個檔案寫的是APP的執行邏輯程式。
image.png
透過dex編輯器++方式開啟classes.dex檔案對關鍵字進行查詢,根據查詢字串或者查詢程式碼、類名等方式找到了關鍵字所在位置。
image.png

對關鍵字進行修改儲存即可
image.png

最後將apk進行簽名覆蓋安裝即可
image.pngimage.png
簽名之後會啟動生成一個apk檔案,覆蓋安裝即可
image.png
重新啟動執行後即可發現,我們所要修改的關鍵字成功唄修改成我們想要的語句。
image.png

逆向邏輯修改

在吾愛破解demo第二關中,在進行一鍵三連時,需要首先獲取10個硬幣,我們需要繞過此項驗證。
image.png

透過對關鍵提示字進行搜尋,定位到了以下smail程式碼,使用其他工具NP管理器、jadx等進行搜尋轉為java程式碼之後,發現是一個if語句進行控制
image.png
image.png
透過smail語法查詢即可獲取執行邏輯,將執行邏輯改變即可。如下透過查詢smail語法得知,原smail程式碼透過判斷p0和v0的關係來得知是否具備10個硬幣,我們只需要將其取反,將if語句由if-ge改為if-le即可修改執行邏輯,在沒有10個硬幣的情況下也可以進行下一步操作。
image.png
image.png
修改儲存,對apk進行簽名後安裝即可。再次對修改後的APP啟動後發現成功繞過硬幣檢測。
image.png

逆向檢視修改

在demo第三關中,發現會彈出廣告,要想將他繞過,就需要監視模擬器上檢視的跳轉情況。
image.png
使用MT管理器的Activity記錄來監視檢視跳轉情況
image.png

image.png
由於廣告彈窗是在第三關介面中停留若干秒才彈出來,因此我們需要進行排查,首先從第三關介面的類中去排查。透過搜尋關鍵字類名進行搜尋。搜尋結果如下
image.png
對第一個類進行檢視
透過loadAd這個方法名大致意思為載入Activyity的意思,這裡的0x3e9是1001 的十進位制表示,而 0xbb8則是3000 的十進位制表示 ,這裡程式碼的意思是1秒到3秒的時間間隔,嘗試將這兩個值修改為0。
image.png
從轉換後的java程式碼也可以大致猜出什麼意思。
image.png
將apk進行儲存簽名後重新安裝,開啟後發現廣告彈窗成功繞過。
image.png

某小說升級vip

在vip處找到關鍵字開通,透過MT管理器進行反編譯,然後搜尋開通關鍵字
image.png
搜尋結果如下,由於dex檔案所寫的為APP執行邏輯,開通vip的這件事情是邏輯修改,因此優先檢視dex檔案
image.png

在dex檔案中搜尋結果中幾乎全部都是顯示的字串,跟邏輯幾乎沒有什麼關係。
image.png
在資源id對應檔案中搜尋結果如下,其中有一項已開通,另外兩個方法在命名中的HK和TW應該是其他地區的邏輯。我們嘗試將此方法對應的id值長摁複製,拿去dex檔案中去搜尋。
image.png
在dex檔案中搜尋結果如下,其中第一個結果為初始化函式,因此第一個一般不會去修改
image.png
image.png
經過對smail語法分析,其中決定vip是否開通的關鍵在與y5函式的執行結果,透過對y5函式的追蹤,對y5函式的返回結果v0強制賦值為true,0x0變為0x1。
image.png
在對目標apk進行簽名重打包過後重新安裝,再次檢視介面,發現成功繞過vip開通檢測,成功開通vip。
image.png

某兔去除廣告

在開啟目標APP後,發現介面上載入有廣告,想辦法去除掉。由於這個廣告並沒有進行跳轉,因此不能使用監控Activity的方式來獲取廣告的檢視。
image.png
使用開發助手的佈局檢視功能檢視廣告所在的檢視
image.png
開啟佈局檢視功能後選中廣告所在位置即可
image.png
選中後會出先兩個檢視,第一個檢視才是廣告檢視,第二個選中後紅框圈中的範圍並不是我們想要的範圍,因此第一個檢視才是我們想要檢視的檢視。
image.png
選中後上面記錄著檢視實現的類名,根據類名進行查詢實現程式碼。
image.png
搜尋結果如下,檢視設定一般在xml中。
image.png嘗試將檢視的高度和寬度設定為0。
image.png
將目標apk編譯重打包加入簽名後重新安裝並啟動,成功將廣告去除。
image.png

某桌布升級vip

目標APP開通vip的方式類似於Web中的前端校驗繞過,這裡實現的方法是固定返回資料包,將身份證明的資料包進行修改,並透過抓包工具將APP每次請求伺服器的資料包都進行修改。這個方法的前提是要知道身份偽造的資料包的具體引數。
資料響應包應修改如下

{
  "code": 200,
  "data": {
    "id": 2220156,
    "userId": "8kMP5il1",
    "phoneNum": "手機號",
    "username": null,
    "avatarUrl": null,
    "coverUrl": null,
    "gender": 0,
    "vipType": 256,
    "vipPastDueTime": 0,
    "vipLabelLevel": 3,
    "vipLabel": "元老使用者",
    "createTime": 1693635001297,
    "updateTime": 1693635001297,
    "vitalityVipPastDueTime":253392455349 ,
    "accountSign": null,
    "webBackground": null,
    "unionId": null,
    "age": 0,
    "category": null,
    "isVirtual": 0,
    "qqUnionId": null,
    "pcVipType": 256,
    "pcVipPastDueTime": 253392455349,
    "vitalityPcVipPastDueTime": 253392455349,
    "token": "賬號token"
  },
  "error_msg": null
}

image.png

使用小黃鳥開啟抓包
image.png
關鍵請求資料包如下,使用過濾功能過濾關鍵字token即可定位。
image.png
對目標資料包進行重寫
image.png
將資料包的資料載荷部分進行修改儲存
image.png
選擇線上編輯,將要固定的資料修改儲存即可

image.png
在外掛管理器中開啟外掛,同時開啟抓包即可。再次開啟目標APP即可發現成功開通VIP
image.png

以上內容僅作學習記錄,如有錯誤或瑕疵,歡迎批評指正,感謝閱讀。

相關文章