cxp521 发表于 2019-2-16 00:20

跟我一起来学习破解贝瓦儿歌

本帖最后由 cxp521 于 2019-2-16 00:22 编辑

新手,不足或错误之处各位多多指教
过程有点繁琐,主要是为了让和我一样的菜鸟朋友能看懂
工具准备
1:AndroidKiller
2:安卓模拟器(我用的雷电)
3:计算器
下面开工
把贝瓦儿歌安装到模拟器打开任意一个vip视频提示如下

点击下载视频提示如下


记录第一关键字“该歌曲是VIP专享,” 打开AndroidKiller,拖入贝瓦儿歌来反编译,搜索我们记录的关键字
双击击我们搜索到的第一行关键字,记录下第二关键字“video_download_fail_vip”


搜索关键字“video_download_fail_vip”,双击搜索到的第一条结果,记录下id “0x7f0902a1”


搜索id “0x7f0902a1”,搜索到的结果如下图,点击进入播放器管理的对应smali代码里来





点击转换到java伪代码去看下,打开计算器,把我们刚才记录的id “0x7f0902a1”这个是十六进制
0x7f0902a1转换的十进制结果是 2131296929



在jd-gui里Ctrl+F搜索 2131296929 结果如下图,搜索到我们要关注的关键点 isLogined()isVip()



我们先来看看vip的代码,点击 isVip() 进入判断是否vip代码


从java伪代码可以看出比较的是俩个东西,一个是把getIs_vip()和“Y”来比较是否一致
另一个是把getEnd_time() 和当前时间戳来比较
那就继续点击getIs_vip进去看看


从上图就可以很清晰的看到了,我们只要把这俩个的返回值给改了,就可以达到vip的效果了
在AndroidKiller定位到当前smali代码,路径 Lcom/beva/BevaVideo/Bean/VIPInfoBean,搜索


进入到搜索到的samli代码来

getEnd_time()源代码如下

.method public getEnd_time()I
    .locals 1


    .prologue
    .line 45
    iget v0, p0, Lcom/beva/BevaVideo/Bean/VIPInfoBean;->end_time:I


    return v0
.end method
找一个在线现行时间戳的网站来弄个时间戳,在转换成16进制即可,我这弄的时间戳是这样的

1644929959转换成十六进制就是620BA3A7
所以getEnd_time()代码更改如下,记得保存代码


下面再来更改getIs_vip(),上面我们分析的getIs_vip()是和“Y”比较是否一致的,所以更改如下面,记得保存更改!!


至此如果我们不需要免登陆观看vip和下载vip歌曲的朋友就可以编译打包就算是完成破解了
如果需要的,下面就再来搞免登陆的
转到我们上面在jd-gui搜索id的十进制2131296929的地方来


点击isLogined()进入isLogined()代码段来找到代码,并在AndroidKiller搜索定位
路径 Lcom/beva/BevaVideo/Utils/UserInfoUtils
找到isVip()代码处修改如下,记得保存修改!!!



编译
至此免登陆播放vip视频破解完成
效果图



如有什么问题可以留言交流,下面附上未破解和已破解的程序供大家练手
https://www.lanzouj.com/b593319/
密码:5i9b
收工睡觉了,感谢支持,大家别忘记免费评分啊!{:1_918:}

zhu0574 发表于 2019-3-6 23:27

cxp521 发表于 2019-3-6 14:59
:cond_0
    const/4 v1, 0x0



我尝试了一下,只改ISVIP()那里后,还是提示要登录;
后来我把videopalyermanager.smali的2873-2877行注释掉,这样可以免登陆下载了
还是非常感谢!
#invoke-static {}, Lcom/beva/BevaVideo/Utils/UserInfoUtils;->isLogined()Z
#move-result v5
   # if-eqz v5, :cond_9

zhu0574 发表于 2019-3-6 13:08

cxp521 发表于 2019-3-5 10:23
isLogined()这个方法有个逻辑返回值 返回的结果在isvip()的地方所以就在这个地方把这个逻辑值直接改成 ...

大哥,能再解释详细一点么? isLogined()方法怎么看出来和isvip()有关啊
public static boolean isLogined()
{
    if (DataBaseManager.getInstansce().getUserInfo() != null) {}
    for (boolean bool = true;; bool = false) {
      return bool;
    }
}

.method public static isLogined()Z
    .locals 2

    .prologue
    .line 44
    invoke-static {}, Lcom/beva/BevaVideo/DB/DataBaseManager;->getInstansce()Lcom/beva/BevaVideo/DB/DataBaseManager;

    move-result-object v1

    invoke-virtual {v1}, Lcom/beva/BevaVideo/DB/DataBaseManager;->getUserInfo()Lcom/beva/BevaVideo/Bean/UserInfoDataBean;

    move-result-object v0

    .line 45
    .local v0, "userInfo":Lcom/beva/BevaVideo/Bean/UserInfoDataBean;
    if-eqz v0, :cond_0

    const/4 v1, 0x1

    :goto_0
    return v1

    :cond_0
    const/4 v1, 0x0

    goto :goto_0
.end method

飞天蜗牛 发表于 2019-2-16 00:34

学到了,非常感谢楼主,下载去试下

57114863 发表于 2019-2-16 00:43

贝瓦要刀币了,没人买了,呵呵

尕嘟嘟 发表于 2019-2-16 01:35

谢谢分享

陈世界 发表于 2019-2-16 01:42

一起学习,共同进步

xuwenyi 发表于 2019-2-16 01:46

一起学习,共同进步哈

老股民 发表于 2019-2-16 01:52

谢谢楼主

qaz003 发表于 2019-2-16 01:59

谢谢分享,通俗简单易懂暴力……哈哈

byh3025 发表于 2019-2-16 07:26

这个值得下载一试,谢谢啦

klts 发表于 2019-2-16 07:45

通俗易懂,谢谢
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 跟我一起来学习破解贝瓦儿歌