-
-
[原创]Android逆向-爆破B站App的点赞动画
-
发表于: 2022-10-20 14:21 1938
-
背景
阳光沙滩App开发点赞功能,有同学觉得点赞需要点效果,我第一印象就是b站的点赞挺好看的,那就拿过来!

个人博客地址 fc8K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3c8W2j5Y4g2Y4L8r3W2$3k6g2)9J5k6h3y4F1i4K6u0r3j5i4u0@1K9h3y4D9k6g2)9J5c8U0R3$3z5e0x3I4x3K6l9I4x3U0t1@1x3e0l9H3y4U0f1&6x3R3`.`.
需要的环境
- Android手机root,xposed
- b站App
- ddms
- 需要把ro.debuggable设置1,这样在ddms中可以看到全部进程
- 分析trace文件
- jadx分析apk代码
- root explorer工具查看/data/下的安装数据
- 突破ddms文件trace的8mb限制
获取点赞的时候的堆栈
我们打开ddms,选择b站app的进程。
我们先找到他的包名,包名就是进程名字。打开App,随便一个页面。然后执行我们的find

包名:tv.danmaku.bili
打开ddms查看进程。

开始打开的时候,可能什么都不显示,我们需要reset adb一次。

点击之后就能看到全部进程了。

找到了主进程就行,如果同名字后面有:xxx的是子进程,这个我们不需要关注,我们的ui在主进程中。
接下来,我们打开随便一个视频,点赞一下,发现了点赞的动画显示了。我们再点赞取消它。下面开始录制堆栈。
选中进程,点击一下这个红色的录制按钮。弹出录制框。

选择下面这个,然后点击ok

点击ok之后,马上点赞一次触发动画。然后马上回来工具,点击停止录制。

一定要快,不然录制堆栈数据很多,分析起来麻烦。
ddms停止后,会显示这样的一份文件,开始分析里面的堆栈就行了。这个工具是记录运行中全部的运行记录,也就是不管他有没有加壳,什么混淆的,都记录在里面了,想跑都跑不掉,除了native的方法。

分析trace
我们通过搜索click,然后把全部堆栈一条一条看一次。

看到我头晕了,翻到差不多结尾的时候突然发现了一些端倪,这个地方创建了一个popwindow,里面有SVGAImageView??pop设置宽度,后面还有一些File的操作?
应该就是你了,验证自己的猜想。
反编译apk找动画代码
二营长,把意大利炮(jadx)抬上来。
apk丢进去jadx中,根据上面的路径,找对应的class:tv.danmaku.bili.ui.vide.widget.k.a
看到这个路径,widget?这不是常用的组件才放这个里的?
找对这个类的代码,打开看看。

代码不对,直接阅读下就好了,找对重要的地方,再验证就行了。

好家伙,看文件命名就知道跑不掉了,这里有2个版本的点赞svga文件,也就是我们找到文件就行了。
把apk改.zip解压,在搜索中过滤.svga,看看结果。

在apk中一个都没有?
可能是远程下载的文件。换个方式。我们去/sdcard/Andord/data/包名下搜索,结果也是没有的。
那就直接进入安装目录搜索吧。使用re文件管理器的搜索功能.svga

里面好几十个文件,当就快绝望的时候,翻到尽头了,熟悉的文件名啊~~~
把他复制出来,验证下是不是点赞?

打开svga的在线播放器:357K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4y4$3k6$3q4Q4x3X3g2A6L8#2)9J5c8Y4y4$3k6$3q4Q4x3X3c8H3M7X3g2$3K9h3g2%4i4K6u0W2K9s2c8E0L8l9`.`.
把他拖进去看看。

收工了~~~,三点几了

总结
1:ddms的使用
2:录制trace文件并分析
3:jadx定位代码
4:你必须有一套逆向的工具
5:xposed辅助逆向工具
6:本文是逆向入门文章,大佬轻喷
7:如果你有更好的方法,记得来评论区告诉我