資料采集教程,一例APK脫殼反編譯尋找AES密鑰程序記錄
應客戶需求對一款名為“**主治醫師總題庫”包名為com.zitibaohe.zhuzhiyishierke)的APP進行采集可行性分析,
這款APP和服務器的通信使用的是HTTP協議,很容易抓到資料包,可惜回傳的資料是加密的,如下圖所示,
根據以往經驗,內容應該是被AES加密了,要想還原出明文,必須要反編譯拿到KEY才行,
下載APK檔案,用JADX對其進行反編譯,發現被加殼了,使用的是360的加殼工具,如下圖所示,
必須先脫殼才能反編譯到真實的APK原始碼,脫殼我們使用Xposed + FDex2插件(PS:如果你對Xposed還不熟悉,建議先閱讀Xposed相關文章),
安裝好FDex2插件(不要忘了重啟系統),啟動插件,點選要脫殼的APP,如下圖所示,
然后啟動目標APP(兒科主治醫師總題庫),使用Root Explorer瀏覽到APP的資料目錄(/data/data/com.zitibaohe.zhuzhiyishierke/)下,如果看到多個dex檔案(原本該目錄下沒有這些檔案,如下圖所示),說明脫殼成功了,
將這幾個dex檔案pull下來,然后依次用JADX對其進行反編譯,由于有多個dex,怎么快速定位我們關注的代碼在哪一個里呢?我們可以搜一些特征字串,比如前面抓包看到的請求URL中的個“questions”,如果找到了,說明八成就是這個dex檔案(如下圖所示),
然后我們再搜索AES相關的關鍵詞比如“AES/”,"SecretKeySpec"或“IvParameterSpec”,最終成功定位(如下圖所示),其使用了"AES/CBC/NoPadding"加密演算法,對應的KEY和IV都是明文的,
我們來驗證下KEY和IV是否正確,借助“AES Online”(http://aes.online-domain-tools.com/)這個在線工具,選擇對應的加密演算法,輸入密文、KEY、IV(如下圖所示),
然后點擊"Decrypt",成功還原出明文(如下圖所示),點擊“[Download as a binary file]”下載解密后的資料檔案,發現內容是JSON格式的,決議之后如下圖所示,
至此,目標實作,
除了上述通過反編譯原始碼來獲取秘鑰外(程序很繁瑣),我們還可以利用Xposed的方式(你需要先了解Xposed相關知識),通過HOOK javax.crypto.spec.SecretKeySpec和javax.crypto.spec.IvParameterSpec類來截獲KEY和IV,操作程序簡單,下面介紹兩個相關插件,
1.使用Inspeckage(https://github.com/ac-pm/Inspeckage)這個Android動態分析工具,如下圖所示是Inspeckage截獲到的AES的KEY,與我們上面通過原始碼獲取到的一致(不過沒有獲取的IV,原因未知),
2.我還測了一個叫做CryptoFucker的Xposed插件(https://github.com/Chenyuxin/CryptoFucker),用起來雖然沒有Inspeckage方便(沒有UI),不過,效果很好,成功獲取到了KEY和IV,如下圖所示(HEX形式顯示),
更多抖音,快手,小紅書資料實時采集介面,請查看檔案: TiToData
免責宣告:本檔案僅供學習與參考,請勿用于非法用途!否則一切后果自負,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/240834.html
標籤:其他
