App逆向之frida-dexdump脱壳分析某肿瘤sign

声明:本文仅限学习交流使用,禁止用于非法用途、商业活动等。否则后果自负。如有侵权,请告知删除,谢谢!本教程也没有专门针对某个网站而编写,单纯的技术研究

 一、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也要对应版本

App逆向之frida-dexdump脱壳分析某肿瘤sign_第1张图片

 2.将frida服务推送的模拟器

推送命令:adb push 你的frida服务 手机文件路径

3.给frida最高权限

adb shell 进入手机终端
ls 列出当前路径所有文件名
chmod 777 赋予权限
ls -l 查看文件及其权限
mv 移动文件并修改名称
exit 退出手机终端

App逆向之frida-dexdump脱壳分析某肿瘤sign_第2张图片

 4.启动friday服务命令:adb shell frida文件所在绝对路径

启动之后不要关闭终端不然服务会关闭 

 三、脱壳

工具介绍:BlackDex64、BlackDex32、firda-dexdump、Fdex2等,这些都是我自己常用的脱壳工具

 1.登录接口分析,sign加密

App逆向之frida-dexdump脱壳分析某肿瘤sign_第3张图片

2.本期App:5ZKa5ZKa6IK/55ik56eRLmFwaw==

App有360(drizzleDumper)的壳,查壳推荐:apk查壳.exe

不过查壳工具这个检测不到自行百度

App逆向之frida-dexdump脱壳分析某肿瘤sign_第4张图片

 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 恭喜你版本不配对重新安装吧

其它异常百度

App逆向之frida-dexdump脱壳分析某肿瘤sign_第5张图片

 4.开始脱壳命令:frida-dexdump -U -f com.shengwu315.patient 默认输出当前目录下com.shengwu315.patient文件, -o 可以指定输出目录

App逆向之frida-dexdump脱壳分析某肿瘤sign_第6张图片

5.脱完壳就可以使用jadx-gui-1.2.0分析了

App逆向之frida-dexdump脱壳分析某肿瘤sign_第7张图片

 四、dex分析

1.我这里随机分析classes02.dex,运气不错一发入魂

 2.简单分析一下,拿了token不为空添加 hashMap,请求表单,requesttime时间戳

App逆向之frida-dexdump脱壳分析某肿瘤sign_第8张图片

 3.对 hashMap 排序,最后添加一个appkey,md5加密一下

App逆向之frida-dexdump脱壳分析某肿瘤sign_第9张图片

 五、还原结果附源码

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())

你可能感兴趣的:(python,APP逆向入门到入狱,APP逆向,python,开发语言)