声明:本文仅限学习交流使用,禁止用于非法用途、商业活动等。否则后果自负。如有侵权,请告知删除,谢谢!本教程也没有专门针对某个网站而编写,单纯的技术研究
一、firda 的安装
国内下载很慢:pip后面加上 -i https://pypi.tuna.tsinghua.edu.cn/simple
Frida python 依赖包安装,frida-tools跟frida版本跨院太大回报错注意对应版本
工具包 --> pip install frida-tools===12.0.2
服务 --> pip install frida==16.0.3
脱壳服务 --> pip install frida-dexdump==2.0.1
二、firda服务插件下载
1.下载网址: https://github.com/frida/frida/releases 下载下来记得解压
adb连接手机(我的是模拟器)查看系统:adb shell getprop ro.product.cpu.abi
我的系统是x86_64的所以下载的firda也要对应版本
2.将frida服务推送的模拟器
推送命令:adb push 你的frida服务 手机文件路径
3.给frida最高权限
adb shell | 进入手机终端 |
ls | 列出当前路径所有文件名 |
chmod 777 | 赋予权限 |
ls -l | 查看文件及其权限 |
mv | 移动文件并修改名称 |
exit | 退出手机终端 |
4.启动friday服务命令:adb shell frida文件所在绝对路径
启动之后不要关闭终端不然服务会关闭
三、脱壳
工具介绍:BlackDex64、BlackDex32、firda-dexdump、Fdex2等,这些都是我自己常用的脱壳工具
1.登录接口分析,sign加密
2.本期App:5ZKa5ZKa6IK/55ik56eRLmFwaw==
App有360(drizzleDumper)的壳,查壳推荐:apk查壳.exe
不过查壳工具这个检测不到自行百度
3.打开app,查看手机进程命令:frida-ps -U -a
(进程ID,进程名,包名)
如果报错把端口转发
adb forward tcp:27042 tcp:27042
adb forward tcp:27043 tcp:27043
如果异常为:Failed to spawn: unable to handle 64-bit processes due to build configuration 恭喜你版本不配对重新安装吧
其它异常百度
4.开始脱壳命令:frida-dexdump -U -f com.shengwu315.patient 默认输出当前目录下com.shengwu315.patient文件, -o 可以指定输出目录
5.脱完壳就可以使用jadx-gui-1.2.0分析了
四、dex分析
1.我这里随机分析classes02.dex,运气不错一发入魂
2.简单分析一下,拿了token不为空添加 hashMap,请求表单,requesttime时间戳
3.对 hashMap 排序,最后添加一个appkey,md5加密一下
五、还原结果附源码
import time
import requests
from hashlib import md5
# 请求数据
data = {
"phone": "13471392714",
"type": "6",
}
# 加密数据、如果有TOKEN加上
sign_data = {**{
"requesttime": str(int(time.time() * 1000)),
}, **data}
sign = '&'.join((map(lambda x: '='.join(x), sorted(sign_data.items())))) + "&appkey=dongdongdev"
print(f"加密字符串 --> {sign}")
sign = md5(sign.encode()).hexdigest().upper()
print(f"加密结果 --> {sign}")
headers = {
'sign': sign,
'User-Agent': 'okhttp/3.12.0',
'requesttime': sign_data['requesttime']
}
url = "https://dd.shengwu315.com/v3/user/send-code"
print(requests.post(url=url, data=data, headers=headers).json())