一 数据包抓取
1.1 抓包工具选择
1 | # Wireshark:Wireshark 是一个开源的网络抓包工具,可以在多个平台上运行,支持多种协议的抓取和分析。 |
1.2 charles安装和配置
1.2.1 mac安装配置
1 | # 1 下载软件:Charles_4.5.6_xclient.info.dmg |
1.2.2 win安装配置
1 | # 1 下载软件:charles-proxy-4.5.6-win64.msi |
1.2.3 sn账号
1 | Name: Just For Testing |
1.3 使用charles抓取手机http包
1 | # 配置步骤 |
1.3.1 配置模拟器抓包
1 | # 1 打开charles,点击:proxy--》proxy Settings---》如下图1 |
1.3.2 配置真机抓包
1 | # 1 打开charles,点击:proxy--》proxy Settings---》如下图1 |
1.3.3 抓取http包案例(爱学生app)
1 | import requests |
1.4 使用charles抓取手机https包(手机需要root)
1.4.1 模拟器安装charles证书
1 | 手机或模拟器只能抓取http请求的数据包,https无法抓取。 |
1 | ###### 模拟器安装(模拟器版本低于7,不需要做证书迁移) ###### |
1.4.2 真机安装charles证书
1 | # 1 真机配置好代理后 |
1.4.3 用户证书和系统证书解释
1 | 在 Android 系统中,有两种类型的证书:用户证书(User Certificates)和系统证书(System Certificates)。 |
1.4.4 把用户证书转成系统证书
1 | # 1 将move cert压缩包传到手机(任意好找的一个目录 `/sdcard/Download/`) |
1.4.5 案例:抓取https包(今日南川app)
1 | import requests |
二 反编译工具
2.1 常见反编译工具
1 | 常见的反编译工具:jadx(推荐)、jeb、GDA |
2.2 JDK环境安装
1 | # 官方地址:(需要注册-最新java 21) |
2.2.1 win平台安装
1 | # 1 下载jdk-8u371-windows-x64.exe |
2.2.2 mac平台安装
1 | # 1 下载jdk-8u371-macosx-x64.dmg |
2.2.3 验证是否安装成功
1 | java -version # 看到打印安装成功 |
2.3 jdax安装
2.3.1 下载地址
1 | # 1 官网 |
2.3.2 安装
1 | # 下载直接解压即可(注意不要放在有中文的路径) |
三 反编译后代码定位
3.1 抓包
1 | # 打开app,运行,使用抓包工具抓包,发现密码是加密的 |
3.2 反编译定位位置
1 | # 通过:URL网址 或 参数关键字 `pwd` `"pwd"` put("pwd 等关键字搜索 |
1 | # 我们发现,定位到代码,但是读不懂什么意思,只能靠猜测和比较 |
四 hook框架frida
1 | Hook 框架是一种技术,用于在运行时拦截和修改应用程序的行为。 |
4.1 下载安装
1 | # 注意:需要电脑端[电脑端要安装python解释器环境]和手机端同时安装,版本必须对应 |
4.1.1 电脑端安装
1 | # 指定版本安装 |
4.1.2 手机端安装frida-server
1 | # 1 先查看手机架构 |
4.2 启动并hook应用
4.2.1 手机端启动frida服务端
1 | # 切换到手机的/data/local/tmp目录下 |
报错解决
1 | 方案一:重启手机 |
4.2.2 电脑端配置
4.2.2.1 配置端口转发
1 | # 方式一:命令行中敲 |
4.2.2.2 编写python代码,打印手机中的进程
1 | # 枚举手机上的所有进程 & 前台进程 |
错误
1 | # 没有配置端口转发 |
4.3 hook 某智赢的加密算法encodeMD5
1 | # 下载地址:https://appdownload.che168.com/usedcar/csy/index.html?pvareaid=106101 |
1 | import frida |
4.4 Python Hook方式
1 | # Spawn 方式适应场景:Spawn 方式是在目标应用程序启动时直接注入 Frida 的 Agent 代码 |
4.4.1 attach方式(手动操作)
1 | import frida |
4.4.2 spawn方式(自动重启app,适用于在应用程序启动的早期阶段进行)
1 | import frida |
4.5 js Hook方式javaScript+终端
1 | # 代码 hook.js |
4.5.1 attach,先启动app,然后再在终端执行:
1 | frida -UF -l hook.js |
4.5.2 spwan,脚本自动重启APP并进行Hook
1 | frida -U -f com.che168.autotradercloud -l hook.js |
五 使用python还原算法
1 | # 加密分类 |
5.1 md5
1 | import hashlib |
5.2 sha
1 | import hashlib |
5.3 DES加密
1 | # pip3 install pycryptodomex -i https://pypi.douban.com/simple |
5.4 非对称加密算法-RSA
1 | # 安装模块 |
5.5 base64
1 | import base64 |
__END__