宅男抖音某猫协议分析及应用破解
“ 分析传说中的快x,顺便提供破VIP线路及去启动广告方法。”
在当今这个由应用市场主导的网络上,流传着一批应用,它们低调又神秘,依赖口碑与独立网站在地下渠道传播,应用市场中从来都找不到它们的身影。这类应用,一般行走在社会的边缘地带,但是,却满着了一部分人群的隐秘需求。当然,这些应用产生着大量值得协议分析人员去分析的流量。
本文将介绍一个从18年初开始火热,近期火热程度再上一层楼,并在各个应用市场上出现了不少山寨品的地下应用。它就是传说中的宅男抖音,天生的缺陷导致无法在应用市场上架——快x。
首先从它近期的百度指数来感受一下它的热度:
再来看看某应用市场上挂它的名字的应用,轻松获得几十万下载,不知下载这些山寨快x的兄弟一切可安好:
作为一篇协议分析的专业文章,本文将先对这个应用产生的流量进行分析,接着介绍去除这款应用讨厌的启动广告和破解它的VIP线路功能的方法,提高使用效率。
01
—
协议分析
本章对快x的网络传输协议进行分析,并逆向其数据加密算法。
首先使用wireshark对应用启动及部分使用过程进行抓包:
可以看到它的数据是使用http传输的,但请求体和响应体内的数据是被加密和编码的,需要解析的话,就需要从应用的APK包中去寻找答案了,常规流程,使用android killer或jeb,就看个人喜好了,我是两个一起用。
这个软件很简单,无任何混淆和加固,逻辑也很清晰明了。直接搜索url内的关键字,很快就能定位到加密算法部分:
再往里,加密算法实现部分:
就是简单的AES/CBC/PKCS5Padding加密,key和iv都是固定的,加密后的十六进制直接hex编码,请求体中,data字段是加密的,响应体部分则全部是加密的。
直接将报文内的加密数据取出来进行解密,很容易就得到了原始数据,在算法上,这款软件不愧为良心软件,程序员不为难程序员的典范:
这款软件的网络流量数据分析,我就看了这么多,别的没看,后续还有些数据疑似是采用别的密钥加密的,有兴趣的伙伴们可以深入分析下。
02
—
应用修改
既然拿到了这个应用,当然要使用一番,内容确实是为宅男量身定制,火爆而直接,部分为霓虹国表演艺术家的作品,当然也有本国劳动人民的放飞自我的作品。
但是,这款软件的启动页面实在是讨厌,一张简单直接的图片,展示十秒之久,只要轻轻一碰,就要跳转到浏览器去访问一些下载页面,严重影响用户体验。
另外,注册登陆后,会有VIP线路可供选择,当然这是VIP账户才拥有的特权。很无奈,码农都穷啊,看见VIP只能空流泪,但码农都有一分积极向上不畏艰难的心,对不对?所以也想尝尝VIP待遇是什么味道。
基于这两点,本码农决定对这款应用做下小小的修改,改善启动体验以及尝试自由选择VIP线路,这里,我们需要用到Android killer,另外使用jeb作为辅助,都很简单,之前有计划写些文章对它们的使用进行介绍,但目前仍未动手,很是抱歉,大家可以自行上网搜索使用教程。
首先是启动广告,直接找到启动的入口activity,现在需要在smali中找到控制启动页图片的地方,这一步使用jeb会方便点。很快就定位到了控制启动页面的显示时间的地方:
看见这些大数字10000(0x2710)了吗?确实和我们的使用体验相符,大概十秒左右,在android killer中,找到这块,把数字无脑修改小,修改为 1000(0x03e8),保存,多搜索,大概有三处需要改下,都在这个activity内,顺便把加载启动图片的语句一块干掉。
这样,很简单地,启动页显示时间就修改好了,并且这个软件在报文层面,基本与原始软件保持了一致。这个启动页其实没啥内容,主要就是广告,大家可以尝试修改一些地方,直接将这个启动页跳过,很简单,方法在这里就不详细展开了。
接下来要解决VIP线路切换的问题,以提高码农生活质量。在没有切换权限时进行切换,会有提示“xxx VIP xxx”这个字符串,中文的,使用Android killer不太好搜,需要转unicode,我喜欢无脑操作流,于是直接搜“VIP”,出来的东西多点,一个个点就是了,大家根据个人喜好操作即可。很快定位到这个弹框的地方,再看看上下文,有一个很明显的判断是否为VIP账号的函数:
再搜索下这个函数,发现在启动时还会进行一次判断:
看下判断相关的smali:
可以直接对getIs_vip()函数进行修改,也可以在调用后的判断分支上进行修改,修改完,保存。
都修改完了,那接下来就是将应用打包了,这个应用,直接打包即可,后面一路畅通。然后,就尽情去体验这个应用吧。
VIP线路质量并没比普通线路优越呀,是不是改的人太多了?或者买VIP的人太多了?
03
—
结尾
这里纯粹是分析技术问题,没有原始应用的分享,也没有修改后应用的分享,更没有应用内容的分享,大家如有需要,自行去探索,提高自身能力是最紧要的。如有协议分析技术探讨,可联系我,共同进步。
只有持续学习,不断进步,达到顶尖水平,才有资格和实力对抗996,对不对呀?
否则,就只有996.icu的份了。
长按进行关注。
相关文章:

AdminLTE的使用
官方文档link1.AdminLTE的必要配置文件<!-- Tell the browser to be responsive to screen width --> <meta content"widthdevice-width, initial-scale1, maximum-scale1, user-scalableno" name"viewport"> <!-- Bootstrap 3.3.5 --> …

Linux sendmail发送邮件失败诊断案例(一)
在新服务器上测试sendmail发送邮件时,发现邮件发送不成功,检查日志文件发现如下错误(Notice:由于涉及公司服务器,邮箱等,故下面hostname、邮箱地址等信息使用xxx代替) tail -40 /var/log/maill…

CentOS 安装Python3
# 基于Linux的 Python3 环境的安装 最近买了一台centOS 阿里云轻量级服务器 自带Python2 准备安装Python3.6 版本的 ## Step * 1 查看当前版本python 的路径 使用以下命令,以便后面安装完毕 建立软链接 > which python 正常情况下会显示python 路径,例如…

某米浏览器黑名单文件破解
“粗粮系统自带浏览器的网址黑名单提取。”某米手机作为高性价比的代表,比起菊厂及OV厂妹风手机,向来被我高看一眼,毕竟雷布斯也是我等码农的典范,以至于我都买过好几件粗粮的产品。虽然它的各个应用,包括系统…

函数的四种调用模式.上下文调用.call.apply
闭包:函数就是一个闭包,一个封闭的作用域; 返回函数,要返回多个函数就用一个对象封装一下,立即执行函数return回调函数JS动态创建的DOM,不会被搜索引擎抓取,对SEO不友好./*window的name属性*/function fn(){ console.log(this.name);} fn.call({name:"zhangsan"});//…

IOC和DI(转)
1、IoC(Inversion of Control)控制反转和 DI(Dependency Injection)依赖注入 首先想说说IoC(Inversion of Control,控制倒转)。这是spring的核心,贯穿始终。所谓IoC,对于spring框架来说,就是由spring来负责…

生成公钥链接github
# 生成公钥 连接Git### 1 检查本机是否有公钥 > cd ~/.ssh### 2 如果有的话 直接使用 不要随便删除电脑公钥 没有的话进行生成 生成如下 id_rsa 是 私钥 id_rsa.pub 是公钥 ### 3 生成公钥命令如下 邮箱是你的邮箱地址 终端会提示输入密码 可以以回车带过 如果设置密码…

精确哈克,以贪婪为基础的欺诈式引流法
“ 一种seo手段探讨。”前一段时间,有朋友在后台留言,让我测评一个网站上的信用卡号码生成器:我兴致勃勃,以为是什么黑科技出现了。打开网站,一股熟悉的wordpress风迎面飘来,伴随着风骚的黑色风味。多点击几…

HTML 基础知识(特殊字符的转义)
1. body、head(meta) <body></body>标签的常见属性: bgcolor:整个页面的背景;text:设置文本颜色link:设置连接颜色(),vlink:已经访问…

1 组件化的了解
组件化 概念:讲一个单一的工程的项目,分解成为各个独立的组件,然后按照某一种方式,任意的组织成一个拥有完整业务逻辑的工程 优势 组件的独立–> 独立编写,独立编译,独立运行,独立测试资源的重用–&g…

WebView通过loadDataWithBaseURL加载本地页面卡死
最近开发遇到一个使用 Android WebView加载本地页面进度条始终卡在20%左右不动的情况。打 Log、抓包发现卡在 WebView对象调用 loadDataWithBaseURL方法。 去网上搜了一下解决方案,stackoverflow上有人说是因为 JELLY_BEAN以上版本没有设置 WebView访问文件的权限导…

微信出现“已停止访问该网页”或“关于潜在的违法或违规内容”怎么办?如何获取被屏蔽的网页的网址?...
点击上方↑↑↑蓝字[协议分析与还原]关注我们今天介绍一个微信使用技巧。微信出现“已停止访问该网页”或“关于潜在的违法或违规内容”怎么办?如何获取被屏蔽的网页的网址?由于微信严格的管控措施,经常会导致一些分享的网址被微信屏蔽&#…

self.navigationController push到指定控制器
1 返回到当前页面上面第三级控制器int idx (int)[[self.navigationController viewControllers]indexOfObject:self]; [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:(idx -3)] animated:YES];2 //遍…

Google搜索的常用技巧
个人搜索方案 1、选择合适的搜索词,一些行业术语或专家名字可以带来更加高质量的结果。 2、搜索词手动使用空格分隔,先进行第一次搜索,看搜索结果标题是否满足预期,如果不满足,采用更换关键词,添加关键词&a…
hdu 1085 Holding Bin-Laden Captive!
Description We all know that Bin-Laden is a notorious terrorist, and he has disappeared for a long time. But recently, it is reported that he hides in Hang Zhou of China! “Oh, God! How terrible! ” Don’t be so afraid, guys. Although he hides in a cave of…

GPS NMEA-0183协议常用报文数据格式
点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 整理的GPS有关的协议分析资料。”之前分析一些车载设备的流量时,有部分经验,在这里和大家分享。产生这些流量的设备通常是实体终端设备,里面装有处理芯片,与GPS通信,也通…

【tyvj1052】【树状dp】没有上司的舞会
描述 Ural大学有N个职员,编号为1~N。他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。每个职员有一个快乐指数。现在有个周年庆宴会,要求与会职员的快乐指数最大。但是,没有职员…

java中memcached
http://www.oschina.net/code/snippet_250396_9181 转载于:https://www.cnblogs.com/suifengbingzhu/p/3737053.html

01内存管理-概述
内存管理 内存消耗内存管理模型语言架构减少内存使用的实践 1 内存消耗 栈大小 每一个线程都有专有的栈空间,栈内存在线程存在期间自由使用。 每一个函数都有其自己的栈帧,所有的变量都会载入到方法的栈帧中,并且消耗一定的内存。 &…

linux下unzip解压报错“symlink error: File name too long”怎么办?提供解决方案。
点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 分享unzip工具的一个bug。”最近在研究菠菜站,中间用到了Spidermonkey,碰到一些小波折,在这里分享出来,以便大家快速跳坑。从全球最大的男性交友网站GitHub上把Spidermonkey-master…

EF-Linq将查询结果转换为Liststring
List<int> id_list new List<int>() { 1 };//测试数据...List<string> guid_list (from uinfo in db.UserInfowhere id_list.Contains(uinfo.ID)select new{uid uinfo.Guid}).ToList().Select(u > u.uid).ToList<string>(); 转载于:https://www.c…

hdu 2594 kmp
这个题和kmp算法的共同点,也就是可以用kmp解的原因,在于当前缀所在串(kmp中的模式串)字符pj≠后缀所在串(kmp中文本串)字符tj时,应使前缀串(kmp中模式串)尽量往右移动最大位移,而暴力算法则是每次移动位移为…

途游斗地主加密协议分析及破解
点击上方↑↑↑蓝字[协议分析与还原]关注我们“ 分析途游斗地主的加密协议。”作为一个手机棋牌游戏厂商,途游是排得上号的,它的途游斗地主一直很火热,隐约记得,这个厂商一直在搞斗地主的全国竞技赛事,并蹭上了体育总局…

URI、URL以及URN的区别
首先,URI,是uniform resource identifier,统一资源标识符,用来唯一的标识一个资源。而URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,…

[转]使用设计模式改善程序结构(二)
使用设计模式改善程序结构(二) 在本系列的 第一篇文章中,描述了如何通过设计模式来指导我们的程序重构过程,并且着重介绍了设计模式意图、动机的重要性。在本文中我们将继续上篇文章进行讨论,这次主要着重于设计模式的…

iOS arm 64 的了解
ARM 简介:ARM处理器是英国Acorn有限公司设计的低功耗成本的第一款RISC微处理器。全称为Advanced RISC Machine。百度介绍 iOS设备中的处理器都是基于ARM架构的。 arm设备真机i386(iphone5,iphone5s以下的模拟器)x86_64(iphone6以上的模拟器…
wireshark和tcpdump抓包TCP乱序和重传怎么办?PCAP TCP排序工具分享
点击上方↑↑↑蓝字[协议分析与还原]关注我们 “ 介绍TCP排序方法,分享一个Windows版的TCP排序工具。” 在分析协议的过程中,不可避免地需要抓包。 无论抓包条件如何优越,无论Windows下使用wireshark还是Linux下使用tcpdump,无论是…

USACO JANUARY——矩形[rects]
Description 给出N个矩形(1≤N≤100)和它的长和宽(不超过1000),写一个程序找出最大的K,使得有K个矩形满足层层包含的关系,即里层的矩形被所有外层的矩形包含.一个矩形P1包含另一个矩形P2,则P2的一边小于P1的一边&#…

ORACLE分页SQL
ORACLE分页SQL 1,使用rownum SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM < 40 ) WHERE RN > 21 2,使用between SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A ) W…

01-基本概念
GCD 1 基本概念 概念: 是 Apple 开发的一个多核编程的较新的解决方法。它主要用于优化应用程序以支持多核处理器以及其他对称多处理系统。它是一个在线程池模式的基础上执行的并发任务 优点 多核并行运算不需要手动管理线程生命周期自动利用CPU的内核 两个基本点…