安卓逆向騰訊動(dòng)漫app返回?cái)?shù)據(jù)加密分析案例分享
前言
騰訊動(dòng)漫app v8.1.6 工具:jadx、frida、pixel3 安卓10
提示:以下是本篇文章正文內(nèi)容,案例可供參考
一、問題
1.1抓包返回加密數(shù)據(jù)

1.2查殼
未發(fā)現(xiàn)加殼 直接打開jadx分析

二、分析
1.1 jadx-gui
打開jadx-gui把a(bǔ)pk文件拖進(jìn)去等待片刻, 首先先找到包名package=“com.qq.ac.android” 為hook做準(zhǔn)備。

1.2 全局搜索加密函數(shù)
在分析加密方法的時(shí)候憑借經(jīng)驗(yàn)找出最可能是的地方,根據(jù)這個(gè)案例大概能看出來是AES加密的數(shù)據(jù),搜索關(guān)鍵詞encrypt 。

結(jié)果如上, 看搜索出來的包名類com.qq.ac.android.library.util.CryptUtils比較像,點(diǎn)進(jìn)去看下。
1.3 疑似方法分析
decodeHttpRequest()
encodeHttpRespone()
先不管了上frida hook看看

三、Frida
1.1 反編譯代碼分析
代碼如下:
public String decodeHttpRequest(byte[] bArr, int i) {
return ees3DecodeECB2Str(encryptKey(), bArr);
}
public String encodeHttpRespone(byte[] bArr, int i) {
return ees3EncodeECB2Str(encryptKey(), bArr);
}

ees3DecodeECB2Str()方法傳入了兩個(gè)參數(shù), 參數(shù)1:encryptKey(),bArr.
1.2 hook看下結(jié)果:

encryptKey() ⇒ 就是秘鑰啦 bytes就是對(duì)應(yīng)加密的響應(yīng)數(shù)據(jù)。
1.3算法還原
public static byte[] des3EncodeECB(byte[] bArr, byte[] bArr2) {
SecretKey generateSecret = SecretKeyFactory.getInstance("desede").generateSecret(new DESedeKeySpec(bArr));
Cipher instance = Cipher.getInstance("desede/ECB/PKCS5Padding");
instance.init(1, generateSecret);
return instance.doFinal(bArr2);
}
public static String ees3EncodeECB2Str(byte[] bArr, byte[] bArr2) {
byte[] bArr3 = new byte[0];
try {
return Base64.encodeToString(des3EncodeECB(bArr, bArr2), 2);
} catch (Exception unused) {
return "";
}
}
public static byte[] ees3DecodeECB(byte[] bArr, byte[] bArr2) {
SecretKey generateSecret = SecretKeyFactory.getInstance("desede").generateSecret(new DESedeKeySpec(bArr));
Cipher instance = Cipher.getInstance("desede/ECB/PKCS5Padding");
instance.init(2, generateSecret);
return instance.doFinal(bArr2);
}
3DES(或稱為Triple DES)是三重?cái)?shù)據(jù)加密算法(TDEA,Triple Data Encryption Algorithm)塊密碼的通稱。它相當(dāng)于是對(duì)每個(gè)數(shù)據(jù)塊應(yīng)用三次DES加密算法。
能看出來是3DES對(duì)稱加密 沒有魔改的地方。
1.4 Python還原

總結(jié)
內(nèi)容敏感關(guān)鍵部分就不發(fā)了,小伙伴跟著做一遍問題不大。
以上就是騰訊動(dòng)漫app返回?cái)?shù)據(jù)加密分析的詳細(xì)內(nèi)容,更多關(guān)于返回?cái)?shù)據(jù)加密分析騰訊動(dòng)漫的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android的ListView多選刪除操作實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了Android的ListView多選刪除操作實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05
Android控件之AnalogClock與DigitalClock用法實(shí)例分析
這篇文章主要介紹了Android控件之AnalogClock與DigitalClock用法,以實(shí)例形式分析了Android時(shí)鐘控件AnalogClock和DigitalClock用于顯示時(shí)間的具體使用技巧,需要的朋友可以參考下2015-09-09
Android?實(shí)現(xiàn)卡片堆疊錢包管理動(dòng)畫效果
這篇文章主要介紹了Android?實(shí)現(xiàn)卡片堆疊錢包管理動(dòng)畫效果,實(shí)現(xiàn)思路是在動(dòng)畫回調(diào)中requestLayout?實(shí)現(xiàn)動(dòng)畫效果,用Bounds?對(duì)象記錄每一個(gè)CardView?對(duì)象的初始位置,當(dāng)前位置,運(yùn)動(dòng)目標(biāo)位置,需要的朋友可以參考下2022-07-07
flutter InkWell實(shí)現(xiàn)水波紋點(diǎn)擊效果
這篇文章主要為大家詳細(xì)介紹了flutter InkWell實(shí)現(xiàn)水波紋點(diǎn)擊效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07
android底部菜單欄實(shí)現(xiàn)原理與代碼
底部菜單欄很重要,我看了一下很多應(yīng)用軟件都是用了底部菜單欄做,我這里使用了tabhost做了一種通用的(就是可以像微信那樣顯示未讀消息數(shù)量的,雖然之前也做過但是layout下的xml寫的太臃腫,這里去掉了很多不必要的層,個(gè)人看起來還是不錯(cuò)的,所以貼出來方便以后使用2013-01-01
Android 圖片存儲(chǔ)到指定路徑和相冊(cè)的方法
本篇文章主要介紹了Android 圖片存儲(chǔ)到指定路徑和相冊(cè)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07

