指标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 // [email protected]{ 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