目標APP:某一短視頻
之前發過一篇文章,app升級算法之後還沒來得及更新,文章就被舉報404了,悲哀,今天更新寫一下新版,這裏就不貼源碼了,文章最後放github,需要自取,我看老六還怎麼舉報。
工具準備
- HTTP Debugger Professional v9.11
- 雷電模擬器9綠色去廣告版
- 算法助手(通用hook插件)
用到的工具及配置好的雷電模擬器系統備份在release頁面下載
PS. 直接使用備份的系統,環境都配置好了,打開frida轉發端口就能用。
自行配置步驟:模擬器設置system可寫並開啓root,用MagiskDelta刷面具,刪除自帶的su文件,刷入LSPosed,安裝算法助手插件,用FridaHooker安裝Frida。算法助手中打開總開關和算法分析的3個開關,開啓Frida,通過adb轉發端口,打開HTTP Debugger Pro抓包(需安裝證書到系統分區)
分析過程
工具都配置好後,打開目標APP,直到成功綁定邀請碼。
(我測試過程中裝完證書直接就可以正常抓包,説抓不到的可以試試在算法助手裏打開JustTrustMe)
返回算法助手查看,發現沒有aes加密,竟然和以前加密方式不同了
不過回算法助手可以看到sign還是有的,依然是老方法,sha256+md5
apk拖到GDA中,定位到算法助手中sign的調用堆棧位置,很容易發現加密點
按x查看交叉引用,最終定位到了sojm.so
package com.qq.lib.EncryptUtil;
import java.lang.System;
import java.lang.String;
import java.lang.Object;
public class EncryptUtil // class@000900
{
static {
System.loadLibrary("sojm");
}
public void EncryptUtil(){
super();
}
public static native String decrypt(String p0,String p1);
public static native String decryptHls(String p0,String p1);
public static native byte[] decryptImg(byte[] p0,int p1,String p2);
public static native byte[] decryptImg2(byte[] p0,int p1,String p2);
public static native String encrypt(String p0,String p1);
}
由於不會分析so,嘗試一番後無果,且模擬器frida無法hook到第三方APP的so,手上又沒有真機,遂放棄
改用frida-rpc,供python程序直接調用加密方法,除了使用過程比較麻煩,貌似也沒什麼大問題
學習了一番frida,直接開始改代碼,還是之前的源碼,只是改一改加密解密方法
最終hook到com.qq.lib.EncryptUtil這裏就行,不用到so裏面,反正只是外部調用而已
Python源碼
https://github.com/erma0/test/blob/main/91/frida91.py