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


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

     一、firda 的安装

    1. 国内下载很慢:pip后面加上 -i https://pypi.tuna.tsinghua.edu.cn/simple
    2. Frida python 依赖包安装,frida-tools跟frida版本跨院太大回报错注意对应版本
    3. 工具包 --> pip install frida-tools===12.0.2
    4. 服务 --> pip install frida==16.0.3
    5. 脱壳服务 --> 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也要对应版本

    d829e8950544449a8f1f5797c67b5bf1.png

    5e085ab2749d479db6979959c3a9fcad.png

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

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

    845b3071136f4ebd960ca98eeb7f29bd.png

    3.给frida最高权限

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

    a765a212cc304d939384e573bdbe792c.png

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

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

    a59f9cba8f2a4e6895ee044e9c8d1176.png

    三、脱壳

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

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

    ced44ac84cb5458cad8f68892dfc97db.png

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

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

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

    ab177c6d5be34dbc8ac93216c37866da.png

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

    其它异常百度

    15bd294ba2ad4129a8d588937c83f167.png

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

    9a1f8038b9284719a2b27fb3bc738362.png

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

    3267a3a2a3f54b5c8cc0b3acd1e50d94.png

     四、dex分析

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

    22ad248a40e546d4a2f154c392ab267e.png

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

    8228b3a6a73d432ca3012416c7d63fff.png

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

    ffd4d647611949bfa453662b2e0ddf70.png

     五、还原结果附源码

    2bd2d08358034360a4e73a4b886c9ee0.png

    1. import time
    2. import requests
    3. from hashlib import md5
    4. # 请求数据
    5. data = {
    6. "phone": "13471392714",
    7. "type": "6",
    8. }
    9. # 加密数据、如果有TOKEN加上
    10. sign_data = {**{
    11. "requesttime": str(int(time.time() * 1000)),
    12. }, **data}
    13. sign = '&'.join((map(lambda x: '='.join(x), sorted(sign_data.items())))) + "&appkey=dongdongdev"
    14. print(f"加密字符串 --> {sign}")
    15. sign = md5(sign.encode()).hexdigest().upper()
    16. print(f"加密结果 --> {sign}")
    17. headers = {
    18. 'sign': sign,
    19. 'User-Agent': 'okhttp/3.12.0',
    20. 'requesttime': sign_data['requesttime']
    21. }
    22. url = "https://dd.shengwu315.com/v3/user/send-code"
    23. print(requests.post(url=url, data=data, headers=headers).json())

  • 相关阅读:
    Python常用类库:提升编程效率的利器
    【C++笔试强训】第二十七天
    Golang学习之路4-函数/导入包/命令行参数/defer等
    C:枚举的优缺
    【Linux】生产者消费者模型
    实验4、黑盒测试:因果图法及测试用例设计
    Fiddler(七) - Composer(组合器)克隆或者修改请求
    去雨去雪去雾算法之本地与服务器的TensorBoard使用教程
    Linux 中常见目录的作用
    为了进大厂,我啃透这份400页的Java架构知识点笔记,已从13K涨到25K
  • 原文地址:https://blog.csdn.net/weixin_47115747/article/details/128036619