最近想逆向分析一下三大运营APP的各个加密方式,看看孰优孰劣。这篇就先来分析一下联通的加密请求协议,开启抓包工具(我比较喜欢用burp),打开联通APP,进入短信验证登录页面,输入手机号、验证码。点击登录抓包


可以看到,整个请求体是由各个参数拼接而成的,其中只有mobile和password是加密状态,那我们将app直接拖到jadx反编译看看里面到底干了什么


因为APP是采用梆梆企业版加固,采取整体加固的方式。那我们就对APP进行脱壳(我这里采用的是定制系统脱壳的,整体加固还是比较好脱的,各位可以在github上搜搜相关的),将脱取的dex放入jadx中,搜索mobile和password字段出现的匹配太多了,一个个查看肯定不现实。我这里是直接搜索请求URL里的radomLogin.htm字段,只匹配到了一个,点进去查看哪些函数调用了getRandomLoginURL方法

有两个类调用了它,经过一番查看最后确定参数是由com.sinovatech.unicom.basic.ui.activity.LoginActivity类里面的方法生成的

通过分析源码最后查看到是由prepareLogin方法对mobile和password进行加密处理的,代码如下
可以看到mobile和password都是通过手机号或验证码后加6位随机数进行RSA加密发送至服务端的,所以我们只需要找到RSA的公钥即可,这里有两种方法,我依次说一下

传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!!