iT邦幫忙

2025 iThome 鐵人賽

DAY 27
0

我們可以先簡單看一下混淆程式碼 follow 特定方法調用 尋找敏感的資料
以下是透過R8 混淆的Java Code
這段Code 是在MainActivity 中發現 看的出來 click 就會觸發執行的事件 我們就能找一下有沒有可以點的功能
https://ithelp.ithome.com.tw/upload/images/20251010/2014945905YF09wa8p.jpg

確實在MainActivity 中有一個 Button 可以點
https://ithelp.ithome.com.tw/upload/images/20251010/20149459IDik8kSTJ5.jpg

看的出來方法與類別名都被縮短

d(mainActivity, mainActivity.M).a();

這試鍊式方法調用 d function 傳入兩個參數 猜測是minaActivity 的實例 其中第二個參數帶了field (也就是object變數) 在d 結束後回傳物件 在調用 d 的實例方法 a

所以可以去檢查一下 mainActivity.M 被Assign 什麼值 Double Click -> new z5()
https://ithelp.ithome.com.tw/upload/images/20251010/20149459cwLO2df9Mr.jpg

看起來像API的Strings
https://ithelp.ithome.com.tw/upload/images/20251010/20149459l1ZUH4HzvP.jpg

我們已經知道 d() 被傳入 這串strings 可以點開來分析一下 d{} 因為d public d 明顯的構造函數 並且沒有返回類型 並且一個a實例 賦值給 b 所以在調用d.a() 就會跑以下這行
https://ithelp.ithome.com.tw/upload/images/20251010/20149459aeTSpBvlZq.jpg

this.b.a(this.f1831a, new a());

可以再點進去a() 這個傳入的實例 查看邏輯 在C() 存在一個端點 並且會把API key 儲存在HashMap 中

https://ithelp.ithome.com.tw/upload/images/20251010/20149459i9JdlPuVjP.jpg

看的出來j1.a() 會還傳 API Key
https://ithelp.ithome.com.tw/upload/images/20251010/20149459nmJbyxnqaQ.jpg
z5 其實就是我們剛在Actvity 中看到的很像API key 的東西

https://ithelp.ithome.com.tw/upload/images/20251010/20149459FmeJZyl3sf.jpg

在這裡我們就成功分析了一個 R8混淆Code 並找到端點正在使用這個Hard code 的API key 不安全實作


上一篇
DAY 26 靜態分析 - 混淆程式分析 上
下一篇
Day 28 靜態分析 反混淆 上
系列文
我是不可能一直學Android 絕對不會29
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言