1. 概述
5年经验的java后端开发,目标是把抖快小的所有算法都搞定,先搞unidbg在搞纯算,js技术壁垒没有app高,博主java技术在逆向领域也算半个精通了,所以打算主攻app。(仅作用于技术交流)
需要源码或者其他需求的私聊
2.前言
2.1 准备工具
- app版本8.69
- frida (用于hook)
- 反编译工具jadx
- Charles (用于抓包)
- unidbg0.9.8(用于模拟so文件执行)github地址
- 一台root过的安卓手机 (模拟器hook啥的会问问题强烈建议大家用真机,因为大部分模拟器是x86架构,正常手机是arm64架构,在底层so层文件会有一些区别。博主比较穷先用模拟器~~)
2.2 演示
shleId的教程也算烂大街了,也是比较简单的so逆向,用来做第一期最合适不过了
第二期打算做8.69版本的x-mini-mua设备指纹系列,这玩意卡了我很久,最近才弄出来,有大佬欢迎一起交流
3.大概流程
抓包APP,发现有shield参数
hookAPP定位到算法位置
找到具体的so文件
unidbg模拟执行
3.1 抓包
- 手机需要root并配置系统级别的ssl证书,抓包到发送验证码接口
- copy到apifox,发现只需要shield这个算法也能请求
3.2 算法位置
通过frida hook okhttp的拦截器,就能发现他在哪里加密的,这个教程很多,直接说在com.xxxx.shield.http.xxxHttpInterceptor类加密的
3.3 找到具体的so文件
也是通过frida hook jni动态注册的函数,找到具体的so文件(这里有个坑就是模拟器会有问题,还得是真机),so文件就是libxyass.so
3.4 unidbg模拟执行
1.先看看初始化步骤,先执行静态块-》构造方法-》拦截器方法
- 静态块
- 构造方法
- 拦截器方法
2. 咱们unidbg也要按照这个逻辑执行,ok开始补java环境
mainHmac和deviceId是需要hook app定位具体位置看他是怎么生成的
正常他是直接调用okhttp请求了,返回的是响应body,而shield是在添加请求头的时候就生成了,可以在这里断开就可以只拿shield不请求
ok,大功告成这些流程整理到一起就是之前演示的效果了。