摘要
前文《 Android APK 反编译浅入浅出:apktool 、dex2jar 、jd-gui 》介绍了如何通过反编译 APK 去破解参数加密;但 APK 的源码通常会被混淆,想从源码中研究出参数加密的方式,大部分情况下是一件非常不易的事情。
本文换了一个新的角度,不再从源码的角度出发,而是关心数据流及其在传输过程中的各种转换。
准备
Charles:抓包工具
Xposed:Xposed 框架(Xposed Framework)是一套开源的、在 Android 高权限模式下运行的框架服务,可以在不修改 APK 文件的情况下影响程序运行(修改系统)的框架服务
Inspeckage:用来动态分析安卓 app 的 xposed 模块。功能一,获取 APP 基本信息;功能二,实时查看应用程序的行为
接口拦截
1)配置网络环境
打开 Charles,配置监听端口。
![](https://img-blog.csdnimg.cn/20201231151804317.jpg)
将手机与监听电脑连接在同一网络环境内,并按照 Charles 弹窗指示设置代理、安装 Charles 证书。
2)拦截数据接口
操作 APP,查看拦截的请求,找到用于数据传输的接口。
确认数据接口中的参数是否都可以模拟。如果都可以,那就继续后面的采集工作;否则,进入参数破解的环节。(如上图中,“securitykey” 为加密参数,需破解)
参数破解
1)安装配置 Inspeckage
![](https://img-blog.csdnimg.cn/20201231154028888.jpg)
安装 Inspeckage,并选择要破解参数的 APP
2)安装配置 Xposed
![](https://img-blog.csdnimg.cn/20201231154338366.jpg)
安装 Xposed,并激活框架。
![](https://img-blog.csdnimg.cn/20201231154643847.jpg)
将 Inspeckage 模块加入 Xposed。
3)设置手机开发者选项
![](https://img-blog.csdnimg.cn/20201231155040388.jpg)
设置手机开发者选项,“连接 USB 后启用调试模式”。
4)手机以 USB 连接监听电脑
手机以 USB 连接监听电脑后,运行 “adb devices”,查看设备是否连接成功;运行 “adb forward tcp:8008 tcp:8008”,把 PC 电脑端 TCP 端口 8008 的数据转发到与电脑通过 adb 连接的 Android 设备的 TCP 端口 8008 上。换言之,假设现在 PC 端在端口 8008 绑定,并在该端口读写数据,将会被转发到 Android 设备端的 8008。
5)监听请求
打开浏览器,输入 “http://localhost:8008/”,进入监控页
结合 Charles 拦截的数据接口,在 Inspeckage 中查找相应的数据接口。
如上图,“securitykey” 使用了 MD5 加密,加密前的文本正是其他参数的值按顺序排列,之间用 “|” 分隔,最后再加上 “rmrbsecurity$#%sut49fbb427a508bcc” 作为盐值。
结语
爬虫人,爬虫魂;爬虫成为人上人。今日爬虫不够狠,明天地位就不稳!愿所有的技术人都能在大数据环境下找到适合自己的岗位,并被它温柔以待。