某K字头运动软件逆向分析-课程精讲

本篇承接上一篇某K字头运动软件逆向分析-登录时非法的请求

在跟随视频训练时,很可能有些细节自己注意不到,以至于一些动作不规范,练习新动作时看一下讲解还是有必要的。

许多课程都是前面一两节可以免费观看讲解,后面的就需要开通会员才能查看了,比如我搜了个训练腹肌的课程,在课程内容中选择一节查看讲解

某K字头运动软件逆向分析-课程精讲_第1张图片

某K字头运动软件逆向分析-课程精讲_第2张图片

此时会弹出一个弹窗,在非会员的情况下只能看到大图模式下的重复动作,点击左上角的“查看精讲”按钮会跳转到一个h5页面,精讲内容列表中只有前两节是可以免费试看的,后边内容都是加锁的。

某K字头运动软件逆向分析-课程精讲_第3张图片

adb命令查看下页面activity,是一个WebViewActivity

adb shell dumpsys activity top

从反编译代码中可以看出使用的自定义WebView进行的页面加载,对其相关方法尽心hook,发现请求的是远程url

浏览器打开该url确认和app中看到的是同一个页面,但是控制动态下发的页面显然比较困难,如果能和java层有些联系或许还有办法,能产生联系的点能有什么呢?想到了两个:

1、桥调用

2、网络请求

分别看下能不能找出什么端倪。

桥调用

在其自定义WebView(K***WebView)中,包含了许多桥方法,是通过a方法进行调用的,其中包括播放视频桥,不过需要在h5上调用后才能走到,好像并不能满足我们的需求

某K字头运动软件逆向分析-课程精讲_第4张图片

某K字头运动软件逆向分析-课程精讲_第5张图片

网络请求

某K字头运动软件逆向分析-课程精讲_第6张图片

首先在接口中发现是否可以播放仅仅是通过一个preview字段进行控制的,使用mock数据改成preview: true就可以进行播放了,虽然能播放了,但是这太不方便了,显然不能每次看精讲时都用代理改数据,我们尝试在jeb中搜索,看看java层会不会有相关字段的解析逻辑,全局搜preview字符串,但是太多了,尝试搜一下上一级字段videoInfos,jeb中只搜到了三个,并且都和VideoInfosBean有关,那我们就看下这个类

某K字头运动软件逆向分析-课程精讲_第7张图片

里面只有上面接口返回的播放参数,没有我要找到preview,看起来这个Bean可能不是上面接口使用的bean,有点失望。。。,不过可以确定的是这个Bean一定和某处的视频播放有关。

上下翻找时看到了同文件中的另一个类PermissionBean某K字头运动软件逆向分析-课程精讲_第8张图片

这个很明显是用来判断是否是会员的啊,用hook的方式将a()、b()方法返回值全部修改为true,看看有什么效果。

“查看精讲”按钮没有了,在弹层页面直接播放了精讲内容,踏破铁鞋无觅处啊。。。

某K字头运动软件逆向分析-课程精讲_第9张图片

修改源码,将WorkoutCourseIntroData$PermissionBean.smali文件中的方法部分替换成

# virtual methods
.method public final a()Z
    .registers 2
​
    .prologue
    .line 9
    const/4 v0, 0x1
​
    return v0
.end method
​
.method public final b()Z
    .registers 2
​
    .prologue
    .line 13
    const/4 v0, 0x1
​
    return v0
.end method

重新打包测试,可以正常播放,效果和hook一致。

不以学习为目的逆向就是耍流氓,建议支持正版。

                                                                  欢迎关注公众号:从技术到艺术

                                                      

你可能感兴趣的:(逆向之路)