关于逆向工程:fridarpc实现某一短视频刷邀请

6次阅读

共计 1336 个字符,预计需要花费 4 分钟才能阅读完成。

指标 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

正文完
 0