app逆向篇之实战案例-某音乐app
提示!本文章仅供学习交流,严禁用于任何商业和非法用途,如有侵权,可联系本文作者删除!
前言
最近初学app逆向,该文章仅用来记录学习分析的过程,如有不对的地方,希望各位大佬能不吝指点
下载地址:apk下载
案例分析:
安装好app之后的第一件事当然是打开app,然后开始抓包,具体如何抓包这里就不多说了,直接看抓包结果,如下:
这个就是抓列的表页数据,直接将请求拿下来本地跑一下,如下:
可以看是能直接拿到数据的,接下就是对请求参数的删减,先确定一下请求头中哪些参数是必须的,测试后发现该接口对请求参数不严格,所以大家象征性的模拟下请求头的参数就行了,之后看下请求携带的参数,下面的参数就先提前给大家备注了,如下:
userid 0 #未登录状态这个是0,写死即可
area_code 1 #写死
appid 1005 #写死
dopicfull 1 #写死
page 1 #列表页页码
token #登录之后会有,这里置空
privilegefilter 0 #写死
requestid 6c95b8809382f60a7c326a0a8e580ff9_0 #多次测试会发现 "_" 后面的 "0" 代表着请求次数,这个可以写死
signature 3344d8f3b8db824a2d8e90cbf2b72fe9 #生成的加密参数
pagesize 30 #当前返回页最大数据条数
clienttime 1678353239 #10位数时间戳
sec_aggre 1 # 写死
iscorrection 1 #写死
uuid 71620acaced02a7d5fd6cfe785db0ba2 #根据设备生成的uuid
keyword 可能 #歌曲名称
mid 12804932379081176379687317521415026304 #根据uuid生成的mid
dfid 2ly9I64QC64Q2MLYrD1KrM6a #可以直接写成 "-",这个在研究网页版的时候可以知道其逻辑
clientver 11549 #写死
platform AndroidFilter #写死
tag em #写死
接下来除了写死的部分不做分析,其余的参数一一来分析一下,首先是requestid,可以看到这个参数的格式是:
xxxx_0,直接在jadx里面搜索一下,如下:
可以看到只有16个结果,然后我圈出来的部分跟其结构很相似,随便找一个点进去,然后进入下图圈出来的方法中,如下:
跳转过去之后如下:
根据这里的逻辑可以看出,它有两种情况每一种是当b2有值的时候就返回b2,b2没有值的时候就会生成a2,返回a2的值,这里直接使用firda来Hook下,生成一下b2,如下:
可以看到这里直接就拿到值了,至于这个值怎么来的还是不太清楚,然后回到前面X方法这里,仔细看一下这段逻辑就可以大致的猜出其逻辑了,一开始b2应该是一个空值,之后获取到a2,然后将a2通过一个方法保存起来,之后每次就可以通过b.a().b(126, “”)方法来获取到该值,经过测试之后是可以确认这个逻辑的,所以该值如何来的就看下a2是如何生成的,前面可以知道生成a2的逻辑如下:
String a2 = d.a(KGCommonApplication.getContext())
直接看一下d.a方法的逻辑,如下:
public static String a(Context context) {ba baVar = new ba();return baVar.a(br.l(context) + System.currentTimeMillis());
}
接下来就不一一讲解了,继续看下去可以知道baVar.a是一个md5,br.l(context)可以通过Hook来看下返回结果,
System.currentTimeMillis()是获取当前时间戳,接下来通过frida来实现一下这个过程,如下:
71620acaced02a7d5fd6cfe785db0ba2这一串字符有没有很熟悉,如果够仔细的话,可以知道这个值就是前面请求时携带的uid参数,所以到这里requestid的生成逻辑就很明确了,用python实现后来对比下结果,首先将Hook生成的包含时间戳的结果记录下,如下:
在看来看看python生成的结果,如下:
接下来分析Signature,还是一样搜索一下,如下:
发现结果很多,然后我选择了一个迂回点方式,搜索url中的参数,搜索结果如下:
可以发现圈出来的地方和请求的列表url有着相识的地方,抱着试一试的心态,之后点击跳转来到如下位置:
接下来干什么就不用多说了吧,还是使用frida来Hook,Hook啥不必多说了吧,算了,还是多说一点,看一下上图中的b4,可以发现是一个Map,这里先说一下到v.a方法的逻辑:
1.将请求时携带的参数都放进这个map中,也就是得到了这个被b4
2.将b4传进v.a方法中进行处理,b4不为空的前提下,将其所有的参数和值拼接成一个字符串
3.将拼接成的字符串传入v.c方法中
之后进入v.c方法中可以看到如下:
这部分的分析方式和前面讲的requestid的分析方式一致,先获取一下b2,然后看一下ba.c方法,简单记录一下:
b2="OIlwieks28dk2k092lksi2UIkp" 固定值
ba.c方法就是个md5
所以具体逻辑就是:
md5(b2+sr+b2)
到这里Signature的生成逻辑就分析结束了,只需要搞定v.a方法是如何将参数拼接成字符串的就行了,具体如何操作就不说了,整个过程全都可以用python直接还原出来,最后测试下结果:
欢迎关注公众号:【时光python之旅】 (在这里你能学到我的所见、所闻、所思、所学)
app逆向篇之实战案例-某音乐app相关推荐
- app逆向篇之常用命令及刷机
前言 之前刷机的时候记录的,刚好今天发一下,这篇仅用来记录学习及实践过程中的一些知识点,如有错误或不足之处,望大佬们不吝指教 ADB命令 1.连接设备adb connect 192.168.127.5 ...
- python爬虫实战案例-Python爬虫实战案例:手机APP抓包爬虫
1. items.pyclass DouyuspiderItem(scrapy.Item): name = scrapy.Field()# 存储照⽚的名字 imagesUrls = scrapy.Fi ...
- 【APP逆向-入门级】某直播APP逆向过程
原文章逆向思路 重点:先向CSDN审核客服声明一下:本文仅仅是用于技术交流,甚至可以都算不上APP逆向,文章提到的截图已经全部打码.也没有提及是什么APP,希望审核人员可以通过本文章,谢谢. 这是一篇 ...
- App逆向案例 X嘟牛 - Frida监听 WT-JS工具还原(一)
App逆向案例 X嘟牛 - Frida监听 & WT-JS工具还原(一) 提示:文章仅供参考,禁止用于非法途径: 文章目录 App逆向案例 X嘟牛 - Frida监听 & WT-JS工 ...
- Kotlin实战案例:实现RecyclerView分页查询功能(仿照主流电商APP,可切换列表)
n实战案例:带你实现RecyclerView分页查询功能(仿照主流电商APP,可切换列表和网格效果) 随着Kotlin的推广,一些国内公司的安卓项目开发,已经从Java完全切成Kotlin了.虽然Ko ...
- AXURE RP8实战手册 网站和APP原型制作案例精粹pdf
下载地址:网盘下载 编辑推荐 小楼老师继上一本畅销书后倾情打造: 从基础到实战,共166个实例完全讲解: 每个案例可实时查看演示效果: 从APP到网站,全面覆盖各个典型案例的原型讲解,助你快速掌握. ...
- 以某乎为实战案例,教你用Python爬取手机App数据
1 前言 最近爬取的数据都是网页端,今天来教大家如何爬取手机端app数据(本文以ios苹果手机为例,其实安卓跟ios差不多)! 本文将以『某乎』为实战案例,手把手教你从配置到代码一步一步的爬取App数 ...
- Axure 9 实战案例,母版的应用 1,使用母版绘制APP导航菜单
前言 Hello!欢迎来到Axure 9 实战案例教程专栏.点击了解课程简介>> 前几章我们分别讲解了Axure基本元件.动态面板.交互事件的应用,相信同学们的Axure实战能力已经有了一 ...
- 自然语言处理NLP-100例 | 第二篇:在线课程评论情感分析-本科毕设实战案例
大家好,我是K同学啊~ 春去秋来,时间就这样嘀嗒嘀嗒的过去,不知道大家的毕设做得怎么样了呢 K同学就今天和大家分享一篇关于在线课程评论情感分析的实战案例,帮助大家找找灵感. 数据用的是一份公开的在线课 ...
最新文章
- 人工智能在未来将要经历的七个阶段
- 机房收费系统=三层+设计模式
- python编程思维导图_用来梳理 Python 编程核心知识15张思维导图
- 前端vue适配不同的分辨率_浅析 React / Vue 跨端渲染原理与实现
- 《当90后遇上创业》导读
- 玩了一把WOW,贴几张图上来,当然只是私服哈!
- 【Python可视化】Windows 10系统上Pyecharts安装教程
- robot:循环遍历数据库查询结果是否满足要求
- TextView的一些高级应用(自定义字体、显示多种颜色、添加阴影)
- linux系统安装wine关关采集,在Ubuntu 20.04系统上安装和使用Wine 5的方法
- 手机端网页-微信授权登录
- html标签设计视频音量,如何在HTML5视频标签只添加音量控制
- mysql 索引间隙锁_关于mysql innodb间隙锁的一些思考
- 希望各位dalao不吝赐教
- 给我5分钟,手把手带你学会定时任务!
- jenkins安装下载
- jquery 动态添加div元素(两种方式)
- Java多线程不会的看这里,阿里第三版核心技术手册PDF全彩版
- 正则表达式在shell中使用的方法与案例
- 计算数据的经验分布函数与MATLAB作图