陌陌apk破解小结
大约 3 分钟
陌陌apk破解小结
尝试对陌陌通信数据进行解密,其它未做研究
一、结果
试图对陌陌通信数据进行解密,但未成功
二、暂时未有进展情况分析,尚需努力
通信信息使用了aes加密,且iv从底层so库获取,尚未做过尝试,破解难度较大;签名做了服务端校验,不太好绕过;
三、反编译操作流程
正常反编译操作
观察通信数据及接口
下载apk 安装 打开charles代理观察接口请求及返回数据,除正常的URLEncode base64处理外,进行了加密
采用多个工具进行了 (apk解压->dex文件->jar文件->java文件)流程处理
- smali2Java直接打开apk观察代码
- 解压,dex2jar工具 转换dex文件为jar
- 使用google的enjarify工具,转换多个dex到一个jar
- 采用procyon对jar包解压,省去合并dex文件。采用idea打开,方便搜索及查看代码调用情况
- root手机查看数据库
正常代码观察
使用了腾讯的tinker热修复技术
DBContentProvider对外提供数据访问
网络package: com.immomo.d com.immomo.protocol
- com.immomo.d: 网络域名dns处理等
- com.immomo.protocol: 具体请求及返回数据封装
ip信息来源包:com.immomo.d.b.e
变量 | ip数组 |
---|---|
a | "58.83.184.37";"58.83.184.38";"58.83.184.39"; |
b | 58.83.184.30 |
c | 58.83.184.33 |
d | 58.83.184.29,211.151.23.140 |
e | 58.83.184.37,58.83.184.38,58.83.184.39 |
f | 58.83.184.34 |
g | 211.151.22.12,211.151.22.11,58.83.179.13 |
h | 58.83.207.11 |
i | 58.83.184.35,58.83.184.36 |
j | 58.83.184.26 |
k | imgws.wemomo.com,imgdnion.wemomo.com,mom-img.qiniucdn.com,7sz8t4.com1.z1.glb.clouddn.com |
l | momo-cdnst.qiniucdn.com,cdnstalicdn.wemomo.com,211.152.99.33,58.83.184.143 |
m | 211.151.23.149,58.83.184.27 |
n | 58.83.184.31,58.83.184.32 |
o | "103.235.221.12 |
p | 103.235.221.12 |
相关解密类简单分析
得到信息如下:请求信息gzip压缩且加密,没有使用加固技术,代码混淆做的很好
com.immomo.momo.util.cg 得到一个公钥信息,授权用的hRPublicKey= AhPSLpY/T5MWXyt/QuWB7SM=
请求类:com.immomo.momo.protocol.a.a.b 该类为请求封装类,从异常信息看得出,信息采用了AES加解密,加密类也在相关utils包名中找到
解密需要知道:秘钥长度,秘钥,IV值,加密模式,PADDING方式
观察发现:IV值的获取是在libmjni.so库中取的
解决方法有二:
- 反编译libmjni.so 还得研究下elf文件的反编译
- 在调用iv代码的地方,插入打印日志或弹出提示代码,重新打包签名看是否可以得到iv信息
方法二尝试:
- 重新签名后提示apk为盗版,显然做了签名校验,连接wifi但不联网不提示盗版,显然是做了服务端校验,具体的获取本地签名的代码还没找到
- 绕过获取签名的代码
四、破解感悟
android端的主要研究方向是对单个手机做一些事情,破解通信的初步目的是模拟网络请求,但该行为会受到服务端的监控,纯粹的通过客户端获取所有端(所有陌陌用户)的信息应该可能性不大,但可以做为其它破解方向(比如服务器攻击等)的辅助