个人可以备案网站的内容,wordpress交互插件,主流的网站建设的软件,公司广告设计图片声明#xff1a;本文仅限学习交流使用#xff0c;禁止用于非法用途、商业活动等。否则后果自负。如有侵权#xff0c;请告知删除#xff0c;谢谢#xff01;本教程也没有专门针对某个网站而编写#xff0c;单纯的技术研究 目录 案例分析技术依赖参数分析效果展示代码分享… 声明本文仅限学习交流使用禁止用于非法用途、商业活动等。否则后果自负。如有侵权请告知删除谢谢本教程也没有专门针对某个网站而编写单纯的技术研究 目录 案例分析技术依赖参数分析效果展示代码分享 案例分析 aHR0cHM6Ly9kZWFsZXJjbG91ZGFwaS5jaGUxNjguY29tL3RyYWRlcmNsb3VkL3NlYWxlZC9sb2dpbi9sb2dpbi5hc2h4 对应接口和难点
技术依赖
电脑需要的依赖 python 版本3.8 frida—14.2.18 frida-tools —9.2.5 我这边用的真机,所以真机的依赖也需要装证书我们上一期都已经说了不知道的可以看 https://blog.csdn.net/w62181310/article/details/134162716 frida-server 安装因为我市真机所以对应是不同的如果使用其他模拟器什么的要下载对应的并且要跟frida版本对应 frida要装在手机的/data/local/tmp/下
需要加权限我这边是已经加了就不演示了
chmod 777 frida-server-14.2.18-android-arm64那么我们可以启动frida这样是已经启动了 启动了frida还需要转发端口
adb forward tcp:27042 tcp:27042
adb forward tcp:27043 tcp:27043frida不懂可以百度下还要准备jadx 这个可以网上下载哈同样需要java环境我这边是1.8的版本如果打不开可能是java版本不匹配 我们环境都准备好了那么可以开始了
参数分析
我们通过jadx打开这个app的apk还记得之前搞web的搜索大法嘛这个同样适用 点进去查看发现有点像但是不确定那么我们可以借助frida进行hook在hook之前要查到他对应的包名我使用的是python的方法
import frida# 获取设备信息
rdev frida.get_remote_device()
# 获取在前台运行的APP
front_app rdev.get_frontmost_application()
print(front_app)效果 我们知道了包名就可以使用frida进行hook了 1.js就是我们些的hook脚本 通过搜索md5可以找到这里是最像的进去之后进入md5我们对md5进行hook hook他查看入参 结果我们看到一个md5hook出来两个参数美滋滋密码就是输入的另一个是拼接的 我们来看sign的解密参数里面有包含udid我们可以发现udid后半段是会变的其他都是固定的那么我们还需要在hook下udid看看什么情况 通过抓包可以看到他是进行的3Des 到这里整体的加密就全部知道了那么我们用python还原一下就行中间的一些值就自行hook下 整体来说很简单frida等于web的动态调试只是需要找找位置 其他位置可以自己写下试试hook代码下面有分享 我们下期再见
效果展示 代码分享
1.DES3的分享
import base64from Crypto.Cipher import DES3def getDES3Token(text):# PKCS5Padding# 字符串长度需要是8的倍数BS 8pad lambda s: s (BS - len(s) % BS) * chr(BS - len(s) % BS).encode()unpad lambda s: s[0:-ord(s[-1])]# 后端给的key是 YcwjZGpmZZhpAmtsbW5qcHFyc3R1pnd4 长度位32位# 注意3DES的MODE_CBC模式下只有前24位有意义# key和iv都需要是bytearraykey bappapiche168comappapicheiv bappapich# text也需要encode成bytearrayplaintext pad(text.encode())# 使用MODE_CBC创建ciphercipher DES3.new(key, DES3.MODE_CBC, iv)# 加密result cipher.encrypt(plaintext)# base64 encoderesult base64.b64encode(result)return str(result, encodingutf-8).replace(\n, )2.hook代码分享
Java.perform(function () {console.log(--------------------- hook start ---------------------------)let wb Java.use(com.autohome.ahview.utils.AHViewUtils);wb.encodeMD5.implementation function (str){console.log()console.log(str)let res this.encodeMD5(str);console.log(加密结果 res);return res;}
})