反向编译了子弹短信的 APK,核心功能为整合网易云信 SDK

9,802 阅读5分钟

坚果 Pro2s 京东开卖两周,评论仅1.1万。TNT 预定数量不足100台。但是8月20日锤子科技的产品发布会上,「子弹短信」火了。

但是这个子弹短信到底好不好用呢?正所谓没有调查就没有发言权,作者特意去应用宝下载了子弹短信并重度使用了四天。

界面略显过时且 BUG 较多

拟物风格略显过时

首先是子弹短信的界面,锤子 os 的拟物化是一贯的标志,而子弹短信的状态栏是纯黑的,未经过处理和定义,和 Android4.4(api<19)之前一样,,与 app 整体颜色差别极大。权限还是一次性获取(target<22)。主页选项卡可能是用上古时代的 tabhost 做的以至于切换特别生硬,并且每次切换顶部还会出现大白条,结合着2013年的拟物化风格,在 Android 已经升级为 api28 的2018年显得格格不入。

无处不在的 bug。

例如注册时输错手机号,已经按出发送验证码的情况下,删除一位号码重新输入,验证码倒计时继续,但是 Button 的响应事件却做了恢复,在作者的连续点击下,几秒后收到一连串的短信。

再例如用户分享的群码,在群没满员二维码没过期的状态下,经常失效,使得本来为数不多的加好友方式变得更加困难。

再例如消息通知的 bug,每一个人一个群发送的消息,都在通知栏单条显示,早上起来锤友群的56条通知栏消息着实令我惊讶。

再例如接口的暴露,经网友抓取网络接口,发现子弹短信接口暴露以至于泄露用户信息。 还有各种不经意的闪退小问题暂且不表。

子弹短信的使用场景有限。

除了去锤科论坛的锤友间互相加好友取乐(二维码还经常失效),很难找到第二种使用场景。而添加好友形式的单一导致往往打开软件想找个人聊聊天都找不到,即使强大的熟人社交 app 如微信 QQ,也有发现功能,争取用户的留存。而子弹短信却只有输入 id 或者手机号这两种方式才能加到新好友,并没有模糊搜索功能。

用户信息泄漏,存在色情骚扰

而与此同时由于接口的暴露,导致用户信息曝光,经常骗子老鸨之流骚扰用户,卖药卖春,搞得用户很头疼。

聊天功能异常流畅,缘于整合网易云信 SDK

但是在各种不厌其烦的功能 bug 和令人窒息的操作手感下,作者发现子弹短信的通信却做得异常流畅,即时通信想要做到如此,所需要的难度及技术积累颇多。而锤子科技作为一个小规模软件团队,是怎么将通信内核做的如此流畅的呢?

带着这些疑问,我逆向拆解了子弹短信 APP:

打开apk,没有问题,我们看到了 okhttp,锤子科技作为一家方案整合公司,没有自己的网络框架而采取 okhttp 网络框架也是很正常的,我们用 dex2jar打开代码看看:

这下就麻烦了,我看到了 com.tencent.StubShell.TxAppEntry,锤子科技上传应用宝,经过了腾讯云的加固,这使得破解工作变得繁琐了一些,正在作者准备大张旗鼓暴力脱壳的时候,突然想到平时研(ctrl)究(c)代码惯了,连常识都忘了,于是作者用 AXMLPrinter 打开了子弹短信 apk 的 AndroidMainFest.xml,果然,发现了一些玄机:

子弹短信的 AndroidMainfest.xml

经作者搜索发现,这是网易云信 sdk 的 appid 设定代码

link.zhihu.com/?target=htt…

dev.yunxin.163.com/docs/produc…

没错,就是网易云信 sdk。

子弹短信对外公布融资1.5个亿,估值20亿,Appstore 第一,核心功能原来是基于网易云信 sdk demo 进行的修改与再创作。

部分页面包含 netease 字段,怀疑是直接采用的网易云信 demo 代码。

大家可能不太理解这个意义,一般情况下,选择调用即时通信 sdk 的 app,聊天都是其附加功能,比如蜻蜓 fm 的主要功能是音频系统。顺风,主要功能是送快递。智联招聘,主要功能是人才市场的大数据分类等等,它们的聊天只是一个附加的小功能,而开发即时通讯费财费力,调用即时通讯 sdk 都是很正常的。

而子弹短信,它作为一款专门定义为社交聊天的 app,核心的即时通信功能也是调用即时通信 sdk。并且在短时间内获取了1.5个亿的融资。

结论

子弹短信核心功能调用网易云信 SDK,体验流畅。证明网易云信的服务还是很不错的。子弹短信本身在如此短时间聚集极高热度,除了老罗个人的品牌,产品本身也还算有几分新意吧。

但是 BUG、黄色信息的问题不解决,子弹短信终归昙花一现。