0x01

测试一个APP时,如果传输数据包被加密,如何去寻找APP的加解密算法,对传输数据包进行解密?

如果这个APP是原生APP,那数据包加密使用的算法就应该是在java层或者so层。

如果这个APP是H5 APP,那数据包加密使用的算法就应该是在js代码中,如何寻找js代码一般有两种情况,一种情况是已将js已经打包在apk的资源文件目录中;另一种情况就是首次运行APP的时候,通过网络请求加载js文件(如果确认是H5 app,没抓到js文件的请求包,可以清空当前缓存再运行APP即可)。

本次演示的APP,为js代码运行时加载的H5 APP

0x02

抓取APP登陆请求数据包,发现传输数据已进行加密处理,如下:

第一次启动时,可看到APP请求的大量js等资源文件,如下:

如何找到加解密算法相关的代码位置,如果js代码没有混淆加密的话,可以尝试搜索encrypt,decrypt,aes,des,padding等加解密相关的关键字,或者数据包中出现的相关字符串,如此处的Authorization、Basic,还有请求的接口名称:app/appLogin等等,还有就是找到相关登陆功能处的代码,一步步调试跟踪到加解密算法。

0x03

google chrome浏览器
xposed
xposed插件:WebViewDebugHook( [https://github.com/feix760/WebViewDebugHook/blob/master/app/release/app-release.apk](https://github.com/feix760/WebViewDebugHook/blob/master/app/release/app-release.apk) )

确认WebViewDebugHook 安装激活后,手机usb连上PC,同时需要将“正在为此设备充电”改为“传输文件模式”

打开chrome浏览器,在浏览器地址栏输入: chrome://inspect/#devices,如果环境配置正常,可看到如下效果:

点击inspect即可附加上目标APP,如下:



根据相关特征,使用Ctrl+B在意思加密算法调用的地方打上断点。

打上断点后,执行登陆操作,如果我们打上断点的地方被登陆过程调用了,代码将在断点处暂停运行,

经过分析,此处就是APP数据包中调用的加密算法所在,查看代码,即可获取加密算法相关信息对数据包中的加密数据进行界面

使用分析出的加密算法相关参数,对数据包中加密数据进行解密。