跟我一起来学习破解贝瓦儿歌
本帖最后由 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:} 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 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 学到了,非常感谢楼主,下载去试下 贝瓦要刀币了,没人买了,呵呵 谢谢分享 一起学习,共同进步 一起学习,共同进步哈 谢谢楼主 谢谢分享,通俗简单易懂暴力……哈哈 这个值得下载一试,谢谢啦 通俗易懂,谢谢