Android - 逆向分析“她说APP”的加密算法
为了保证App的数据安全,一般都会在客户端上对接口数据做一层加密,然后服务端用对应的解密算法对数据进行校验,以保证数据没有被篡改,所以加解密算法是否安全不容易被破解对客户端来说意义重大。
加密固然重要,但是我们也需要掌握一般破解的思路,实际上有加密算法泄漏问题的App一抓一大把,所以就以“她说app”为例做一次简单的分析~
一般破解客户端加密算法,需要用到的工具:
1. 抓包工具(如charles)
通过抓取http接口数据,分析head或提交参数中相关加密的字段和信息。
2. 反编译工具(如jadx)
根据抓包得到的相关字段,通过反编译后得到混淆过的代码进行分析,找到java层相关的加密算法。
3. so脱壳工具(后面再出一章单独讲解)
有些app厂商会选择通过jni的方式将加密算法打包进so库中,所以就需要针对so库做逆向分析,本章不涉及。
如小红书使用的shield算法就打包在so库中,可参考小红书逆向分析
一、抓包分析
通过抓包,可以发现,每个接口都带有“accessSign”字段,从名字看应该是和加密相关的字段。
二、反编译得到加密算法
通过jadx反编译后,全局搜索“accessSign”,不出意外得到了相关的put方法,下图a方法就是其加密算法,先对提交参数拼接成字符串,然后对MD5算法做了简单的偏移再拼接。


三、建议
1.对“accessSign”字符串拆分成多个字符,如“ac”“ces”“sSi”“gn”,避免在反编译后直接通过搜索“accessSign”而定位的算法的位置;
2.将算法过程拆分成多个方法,增加代码理解的难度;
3.加解密算法通过c/c++编写,打包成so供java层调用,增加破解难度;(强烈建议!!)
四、加密算法泄漏的会导致一些黑产问题
针对“她说APP”,有以下2个问题:
1. 加密算法泄漏,可以在任意http接口修改“accessSign”的值以修改post中的参数;
2. 服务端过度信任“accessSign”算法,只校验算法合法性,但没校验真实参数的有效性;
基于以上2个问题,通过抓包修改post参数accessSign字段,可以挖掘出以下一些漏洞:
1. 购买一次vip可以给多个账号使用:如A用户购买成功的字段,给B用户通过提交小票的接口提交后B用户同样可获得vip特权;
2. 可无限次使用超级喜欢功能:修改个人主页接口,加上超级喜欢次数的字段,即可将其数量修改为任意值。