zoukankan      html  css  js  c++  java
  • 宅男抖音某猫协议分析及应用破解

     分析传说中的快x,顺便提供破VIP线路及去启动广告方法。


    在当今这个由应用市场主导的网络上,流传着一批应用,它们低调又神秘,依赖口碑与独立网站在地下渠道传播,应用市场中从来都找不到它们的身影。这类应用,一般行走在社会的边缘地带,但是,却满着了一部分人群的隐秘需求。当然,这些应用产生着大量值得协议分析人员去分析的流量。


    本文将介绍一个从18年初开始火热,近期火热程度再上一层楼,并在各个应用市场上出现了不少山寨品的地下应用。它就是传说中的宅男抖音,天生的缺陷导致无法在应用市场上架——快x。


    首先从它近期的百度指数来感受一下它的热度:

    640?wx_fmt=png


    再来看看某应用市场上挂它的名字的应用,轻松获得几十万下载,不知下载这些山寨快x的兄弟一切可安好:

    640?wx_fmt=png


    作为一篇协议分析的专业文章,本文将先对这个应用产生的流量进行分析,接着介绍去除这款应用讨厌的启动广告和破解它的VIP线路功能的方法,提高使用效率。


    01

    协议分析


    本章对快x的网络传输协议进行分析,并逆向其数据加密算法。


    首先使用wireshark对应用启动及部分使用过程进行抓包:

    640?wx_fmt=png


    可以看到它的数据是使用http传输的,但请求体和响应体内的数据是被加密和编码的,需要解析的话,就需要从应用的APK包中去寻找答案了,常规流程,使用android killer或jeb,就看个人喜好了,我是两个一起用。


    这个软件很简单,无任何混淆和加固,逻辑也很清晰明了。直接搜索url内的关键字,很快就能定位到加密算法部分:

    640?wx_fmt=png


    再往里,加密算法实现部分:

    640?wx_fmt=png


    就是简单的AES/CBC/PKCS5Padding加密,key和iv都是固定的,加密后的十六进制直接hex编码,请求体中,data字段是加密的,响应体部分则全部是加密的。


    直接将报文内的加密数据取出来进行解密,很容易就得到了原始数据,在算法上,这款软件不愧为良心软件,程序员不为难程序员的典范:

    640?wx_fmt=png



    这款软件的网络流量数据分析,我就看了这么多,别的没看,后续还有些数据疑似是采用别的密钥加密的,有兴趣的伙伴们可以深入分析下。


    02


    应用修改


    既然拿到了这个应用,当然要使用一番,内容确实是为宅男量身定制,火爆而直接,部分为霓虹国表演艺术家的作品,当然也有本国劳动人民的放飞自我的作品。


    但是,这款软件的启动页面实在是讨厌,一张简单直接的图片,展示十秒之久,只要轻轻一碰,就要跳转到浏览器去访问一些下载页面,严重影响用户体验。


    另外,注册登陆后,会有VIP线路可供选择,当然这是VIP账户才拥有的特权。很无奈,码农都穷啊,看见VIP只能空流泪,但码农都有一分积极向上不畏艰难的心,对不对?所以也想尝尝VIP待遇是什么味道。


    基于这两点,本码农决定对这款应用做下小小的修改,改善启动体验以及尝试自由选择VIP线路,这里,我们需要用到Android killer,另外使用jeb作为辅助,都很简单,之前有计划写些文章对它们的使用进行介绍,但目前仍未动手,很是抱歉,大家可以自行上网搜索使用教程。


    首先是启动广告,直接找到启动的入口activity,现在需要在smali中找到控制启动页图片的地方,这一步使用jeb会方便点。很快就定位到了控制启动页面的显示时间的地方:

    640?wx_fmt=png


    640?wx_fmt=png

    看见这些大数字10000(0x2710)了吗?确实和我们的使用体验相符,大概十秒左右,在android killer中,找到这块,把数字无脑修改小,修改为        1000(0x03e8),保存,多搜索,大概有三处需要改下,都在这个activity内,顺便把加载启动图片的语句一块干掉。

    640?wx_fmt=png


    这样,很简单地,启动页显示时间就修改好了,并且这个软件在报文层面,基本与原始软件保持了一致。这个启动页其实没啥内容,主要就是广告,大家可以尝试修改一些地方,直接将这个启动页跳过,很简单,方法在这里就不详细展开了。


    接下来要解决VIP线路切换的问题,以提高码农生活质量。在没有切换权限时进行切换,会有提示“xxx VIP xxx”这个字符串,中文的,使用Android killer不太好搜,需要转unicode,我喜欢无脑操作流,于是直接搜“VIP”,出来的东西多点,一个个点就是了,大家根据个人喜好操作即可。很快定位到这个弹框的地方,再看看上下文,有一个很明显的判断是否为VIP账号的函数:

    640?wx_fmt=png


    再搜索下这个函数,发现在启动时还会进行一次判断:

    640?wx_fmt=png


    看下判断相关的smali:

    640?wx_fmt=png


    可以直接对getIs_vip()函数进行修改,也可以在调用后的判断分支上进行修改,修改完,保存。


    都修改完了,那接下来就是将应用打包了,这个应用,直接打包即可,后面一路畅通。然后,就尽情去体验这个应用吧。

    640?wx_fmt=png

    640?wx_fmt=png


    VIP线路质量并没比普通线路优越呀,是不是改的人太多了?或者买VIP的人太多了?


    03


    结尾


    这里纯粹是分析技术问题,没有原始应用的分享,也没有修改后应用的分享,更没有应用内容的分享,大家如有需要,自行去探索,提高自身能力是最紧要的。如有协议分析技术探讨,可联系我,共同进步。


    只有持续学习,不断进步,达到顶尖水平,才有资格和实力对抗996,对不对呀?


    否则,就只有996.icu的份了。

    640?wx_fmt=jpeg

    长按进行关注。





  • 相关阅读:
    bootstrap 模态框日期控件datepicker被遮住问题的解决
    (转)Jetty实战之 安装 运行 部署
    (转)Redis研究(一)—简介
    在jboss上部署web应用
    webSphere
    Weblogic部署项目三种方式
    js构造函数详解
    范仁义js课程---51、作用域实例
    javascript疑难问题---7、使用var和不使用var声明变量的区别
    范仁义js课程---50、函数作用域
  • 原文地址:https://www.cnblogs.com/protosec/p/11673324.html
Copyright © 2011-2022 走看看