度盘更新 酷安(弃坑) 阅读模式 Github反馈 ps.以后只更新【测版】版本,测试版本将包括以下全部实验性的功能
[TOC]
- 番剧页缓存限制
- 主题限制
- 去除主页的游戏中心,会员购以及多余顶栏
- 微信分享修复(普通视频小程序bug已解决)
- 跳过启动页activity(已修复后台点图标进首页问题)
- 去升级(修改版本更新地址),修改Android7以上的证书策略(抓包用)
- 直播间右下角广告
- 番剧详情页横幅广告
- 屏蔽首页视频列表的广告(仍有占位,单列正常)
- 屏蔽偶尔出现在视频详情页下的推荐列表广告
- 强制开启投屏(包括版权/转载视频)
5.9.1特别修复番剧搜索,目测应该官方原版包问题
19.09.14:修复缓存权限检测
19.06.27:修复分享到新版本手机qq的权限
12.04:特别版本_移除直播流量提示
11.10:特别版本_移除番剧和普通视频的流量播放提示
10.30:去除小米/魅族/华为等推送receiver
10.26:强制开启详情页投屏按钮,再无需全屏【鸡肋,废弃】
10.21:非会员可以添加大会员番剧或者霹雳布袋戏之类的到缓存列表【不能正常缓存】,然后就可以使用视频替换大法(详见后,繁琐)
10.18:跳过投屏权限服务器验证,本地强制开启投屏按钮,理论只要服务器不封掉投屏专用的视频api就能一直用;部分视频没有投屏源无法投屏,可能是官方cdn问题,无解
10.17:修复强制跳过启动屏后,任何时候从桌面点图标都会打开首页的问题
10.15:终于干死了新版微信分享用的小程序,这个实在没法劫持(ノ`⊿´)ノ 恢复之前网页分享样式
new:屏蔽升级地址,去除直播间右下角广告
强制跳过启动页,为什么冷启动那么慢?因为它优化的就是这么渣!启动页只是用来伪装它启动慢的事实!!
new:修改非番剧的缓存限制按钮,比如电影,非大会员添加后可能无法正常开始缓存,建议分享到bilime添加缓存。
new:去除版本更新提示,简单暴力的方法:抓包后修改升级地址。。class中搜索 x/v2/version/update 定位并修改之;本次更新后,修改了Android7以上所需的证书安全配置文件,以便大家以后能够方便的使用中间人证书进行HTTPS抓包。。具体代码查看res/xml/network_security_config.xml自行谷歌学习
new:修复搜索不出番剧问题,5.9.1版本将去除播放器截图按钮(高版本设置中可自行关闭),去除番剧的手办广告,想看广告的sorry了😂
new:修复微信分享闪退问题,通过申请微信开放平台appid,替换劫持源代码,微信支付无解,除非root破解核心
new:支持免root破解核心安装啦,在yitry修改的包(去广告大会员等侧栏,破解主题等等) 添加了离线缓存
进入大会员:个人中心点击图标 进入免流:流量进入视频详情,点击开通免流,点击激活
港澳台番剧无解,大陆ip是无法获取到数据的。。
可以尝试搜索up主 哔哩哔哩番剧出差,在视频详情页左上角获取av号 然后去bilime搜索
bilime是一个远古的小工具。。仅供备用 折腾,使用bilime需要先用哔哩哔哩缓存一个视频(暂停即可), 从bilime添加的缓存任务若无法显示,请强制(停止/重新启动)哔哩哔哩
工具:MT管理器
- 从arsc中搜索"在线",复制结果中大概是"抱歉,该剧只可在线观看" 这句的id ( 7F090269 )
- 3个class.dex里面有一个用16进制能搜索到该id,结果大概如下: Lcom/bilibili/bangumi/ui/detail/BangumiDetailActivity;
- v方法列表中继续搜索该id定位到方法
- 打开后文本搜索该id定位到行,上面那个label_记住
- 代码片段如下:
<3.修改这里 直接goto : label_114>if-eqz v0 :label_123<修改这里>
const-string/jumbo v0 "不可用"
invoke-static {v7,v0} Lbl/bhr;->b(Landroid/content/Context;Ljava/lang/String;)V
goto :label_15
iget-object v0 v7 Lcom/bilibili/bangumi/ui/detail/BangumiDetailActivity;->b:Lcom/bilibili/bangumi/api/BiliBangumiSeasonDetail;
iget-boolean v0 v0 Lcom/bilibili/bangumi/api/BiliBangumiSeasonDetail;->mDownloadable:Z
if-nez v0 :<2.记住这里>label_114<记住这里>
const v0 <1.找到这里>0x7f090269<找到这里>
核心参数npcybs区分在线播放/缓存请求,字符串编码参考如下,5.31.0测试,新版本若编码改变请自行解决
0x6bt
0x75t
0x66t
0x7ct
0x67t
0x76t
直接搜索定位,5.31.0为classes.dex中第一个结果,修改一个字符即可,比如0x76t --> 0x77t 【16进制,修改加减1即可,不要过大以免字符解码异常】
5.47.0貌似没有字符编码了,api应该是http://api.bilibili.com/pgc/player/api/playurl
字符串定位附近代码,参考如下(classes5.dex -> eor)
invoke-virtual {p2}, Lcom/bilibili/lib/media/resolver/params/ResolveMediaResourceParams;->d()Z
move-result v1
if-eqz v1, :cond_15a [这里直接goto]
const-string/jumbo v1, "1" [或者这里改为"0"]
其它版本可以抓包对比在线播放/缓存api参数研究,目前发现问题就是在线限速严重,搭配闪飞多线程将就用用吧
特么。。第一次改错了,全买了一遍
Arsc找到%d硬币/月的id,5.9.1为7f1005c7
classes.dex(大概和上面是同一个class)搜索7f1005c7,定位到Lbl/emq(之类的)方法列表,字符串搜索查找free最后大概剩下b和onClick两个方法
- b 代码片段:
iget-boolean v2 v12 Ltv/danmaku/bili/ui/theme/api/BiliSkin;->【定位】mIsFree:Z
<删除这行>if-eqz v2 :label_143<删除这行>
iget-object v0 v11 Lbl/emq$b;->q:Landroid/widget/TextView;
- onclick 代码片段:
iget-boolean v3 v0 Ltv/danmaku/bili/ui/theme/api/BiliSkin;->【定位】mIsFree:Z
<修改这里,直接goto到label_62>if-nez v3 :label_62<修改这里>
一个控制显示使用按钮 一个控制点击跳过权限检测
5.9.1
- 布局文件
res/layout/bangumi_item_detail_advertise.xml - 添加
android:visibility="gone" - 修改宽高为0dp
android:layout_width="0dp"
android:layout_height="0dp"
新版(5.31.0测试)
番剧详情页抓包可得,在第一个class 搜索app_cover,改成别的名字,(若失败把上面的ab也改掉)
类名BangumiUniformSeason$OperationActivity
可能需要MT管理器的 dex编辑器++ 来修改这里的数据
顶栏底栏和右上角都是启动时联网控制,类似之前抓包后修改id,即可屏蔽后使用内置数据
完整匹配加大小写搜索abtest,将classes3.dex下的tv/danmaku/bili/ui/main2/resource/MainResourceManager$TabResponse 中data改名(多次测试得出的位置)
接着修改默认顶底栏数据,完整匹配搜索会员购,classes3.dex下根据需要自行删减。。
从new-instance v1, Lbl/okz; 到invoke-interface {v0, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z为一个块
classes4.dex搜索代码ceq,bl/ceq方法里面第一个b方法,
const/4 v4 1
invoke-interface {v8,v4} Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v5
check-cast v5 Lcom/bilibili/bilibililive/followingcard/net/entity/FollowingType;
iget v5 v5 Lcom/bilibili/bilibililive/followingcard/net/entity/FollowingType;->type:I
invoke-static {v5,v1,v2,v9} Lbl/cer;->b(IJI)Lbl/cer;
move-result-object v5
invoke-interface {v8,v4} Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v6
check-cast v6 Lcom/bilibili/bilibililive/followingcard/net/entity/FollowingType;
iget-object v6 v6 Lcom/bilibili/bilibililive/followingcard/net/entity/FollowingType;->name:Ljava/lang/String;
【invoke-virtual {v0,v5,v6} Lbl/coe;->a(Landroid/support/v4/app/Fragment;Ljava/lang/String;)V】
invoke-static {v4,v1,v2,v9} Lbl/cex;->a(ZJI)Landroid/support/v4/app/Fragment;
move-result-object v9
const/4 v1 2
invoke-interface {v8,v1} Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v8
check-cast v8 Lcom/bilibili/bilibililive/followingcard/net/entity/FollowingType;
iget-object v8 v8 Lcom/bilibili/bilibililive/followingcard/net/entity/FollowingType;->name:Ljava/lang/String;
【invoke-virtual {v0,v9,v8} Lbl/coe;->a(Landroid/support/v4/app/Fragment;Ljava/lang/String;)V】
删除这两段,就是删除动态的最后两个顶栏保留第一个视频页,如果要保留其它可酌情删除,然后因为只剩一个了,可以把顶栏直接隐藏掉:fragment_following_home_exhibition.xml->tabs下面高度改成0dp
注意:去除动态的综合页会导致动态小红点去不掉
dex++编辑器 完整匹配大小写搜索extra 修改第一个classes.dex,参考com.bilibili.ad.adview.feed.model,重命名extra
New:可以直接定位类IndexADItem
删除整个.method public constructor <init>()V【解决广告占位(黑洞)问题,优选】
- arsc中搜索"版权受限"【title_download_forbid】和"缓存"【video_detail_download】的id,大概第二个claas.dex中可搜索到代码位置,修改绘制缓存按钮
if-eqz v1 :label_224 【删掉这行,label_224 下面有 版权受限的id】
iget-object v1 v7 Ltv/danmaku/bili/ui/video/section/ActionSection$ActionViewHolder;->downloadText:Landroid/widget/TextView;
const v3 0x7f090d52 【左边0x7f090d52是缓存的id】
- 这修改后按钮是变过来了,点击会提示 版权受限,根据以前的goto大法自行体会。。
- 还会再提示 无法下载,继续goto大法
东拼西凑找到缓存付费四个字的转码。。。代码搜索如下定位 注意复制换行和空格
-0x18t
-0x4dt
-0x64t
-0x16t
-0x5et
-0x69t
-0x15t
-0x4ct
-0x69t
-0x19t
-0x45t
-0x4at
【注:MT2.8.0已支持字符串解密(vip),解密后直接搜索'缓存付费'定位即可】
代码参考:
.method public c(Lcom/bilibili/bangumi/api/uniform/BangumiUniformEpisode;)Z
.registers 3
.line 781
iget-object v0, p0, Lcom/bilibili/bangumi/ui/detail/BangumiDetailActivity;->G:Lcom/bilibili/bangumi/api/uniform/BangumiUniformSeason;
invoke-static {p0, v0, p1}, Lbl/bqt;->a(Landroid/content/Context;Lcom/bilibili/bangumi/api/uniform/BangumiUniformSeason;Lcom/bilibili/bangumi/api/uniform/BangumiUniformEpisode;)Z
move-result p1
const/16 p1, 0x1【添加这行强制true】
if-nez p1, :cond_18
const/16 v0, 0x24
.line 783
new-array v0, v0, [B
fill-array-data v0, :array_1a
invoke-static {v0}, Lbl/jsx;->a([B)Ljava/lang/String;
move-result-object v0
invoke-static {p0, v0}, Lbl/gqc;->b(Landroid/content/Context;Ljava/lang/String;)V
:cond_18
return p1
仅能够添加缓存列表,然后可用替换大法ԅ(✧_✧ԅ)
- 定位到具体番剧分集文件夹,参考路径:
/storage/emulated/0/Android/data/tv.danmaku.bili/download/s_24596/232534/entry.json - 新建文件夹(或者把一个正常的复制过来),参考命名:
lua.flv720.bb2api.64 - 将自己的视频文件名修改为
0.blv后放入文件夹,然后修改entry.json开头。参考:
{"is_completed":true,"type_tag":"lua.flv720.bb2api.64",
- 重启客户端进行弹幕更新
升级检测网址如下,新版app已被转码 https://app.bilibili.com/x/v2/version/update
const-class v2, 【Ltv/danmaku/bili/update/BiliUpdateVerInfo】 代码搜索这句定位
代码片段:
sget-object v2, Ljava/util/concurrent/TimeUnit;->【定位可注意下这里】SECONDS:Ljava/util/concurrent/TimeUnit;
.line 95
invoke-virtual {v1, v3, v4, v2}, Lbl/nou$a;->b(JLjava/util/concurrent/TimeUnit;)Lbl/nou$a;
move-result-object v1
const/4 v2, 0x0
.line 96
invoke-virtual {v1, v2}, Lbl/nou$a;->a(Z)Lbl/nou$a;
move-result-object v1
.line 97
invoke-virtual {v1}, Lbl/nou$a;->c()Lbl/nou;
move-result-object v1
const/16 v2, 0x2c
.line 98
new-array v2, v2, [B
fill-array-data v2, :array_1ba【向后寻找该混淆数组】
invoke-static {v2}, Lbl/jsx;->a([B)Ljava/lang/String;
move-result-object v2
invoke-static {v2}, Lokhttp3/HttpUrl;->f(Ljava/lang/String;)Lokhttp3/HttpUrl;【定位可注意下这里】
【注:MT2.8.0已支持字符串解密(vip),解密后直接字符串搜索替换即可,如无会员请自行寻求帮助代解密】
- apk内xml搜索id
img_top - 定位到
res/layout/bili_live_room_operation_entrance_widget.xml - 修改两个
frame宽高为0dp
- 搜索投屏两字的id,id标题参考
Player_option_menu_projection_screen classes3.dex中定位 转java源码后观察大概有2句add()方法,推测前面一行就是服务器控制的权限开关,根据之前所学,想办法跳过这两处检测即可
查询后xml搜索ic_bplayer_remote的id 7F080765有两结果
res/layout/bangumi_activity_vertical_player.xml
res/layout/bili_app_activity_vertical_player_tab_base.xml
修改定位id上面的android:visibility="gone"为visible
番剧页播放器暂时无解。还有代码查不出来。。
即,后台时点哔哩图标会直接进入本次修改的启动activity(即首页)而无法恢复之前的页面。
删除该activity的android:launchMode="singleTask"属性行即可
id应该是ad_tint_frame,使用xml搜索
可能是res/layout-v17/bili_ad_feed_ad_video_v2.xml,按照之前修改布局隐藏即可
classes.dex定位下正在使用免流的id 后面一个位置,5.31.0版本为pix->m()方法 (非正常方法,正常需要逐步定位调用关系)- 思路:把免流分支(全部操作代码)提取出来直接返回即可,不知道会不会造成免流异常,需要等待哔哩卡用户测试
- 最后xml搜索
tips_unicom定位res/layout/bili_app_player_network_alert.xml把顶层隐藏一下,这样可以偷懒很多dex代码不用再改了,不然要删除所有Lbl/psd;->a(Landroid/view/ViewGroup;的调用
- 照猫画虎,还是同样的思路,结论:
claases4.dex的
gbg->n()方法,:cond_d9直接如下返回
:cond_d9 invoke-virtual {p0}, Lbl/gbg;->r()V
- 然后修改小窗模式
按照
流量播放的id一路定位到Lbl/eyr;最后反查Lbl/eyr;
该片段直接控制显示浮层,所以把调用eyr的直接删掉,即反查得到的Lbl/eyu;
代码参考删除如下:
move-result-object p1
new-instance v0, Lbl/eyr;
invoke-direct {v0}, Lbl/eyr;-><init>()V
invoke-virtual {p1, v0}, Lbl/ptr$a;->a(Lbl/ptm;)Lbl/ptr$a;
- 旧版本可以使用MT管理器的去除签名校验工具。然后可能需要重命名
META-INF/CERT.RSA/SF,注意保持xxx.RSA/xxx.SF命名一致 - 新版本定位到
lib/armeabi-v7a/libbili.so,十六进制编辑,ANSI文本搜索META修改两处为METB等等
若只能搜索十六进制,则十六进制数值为 4D 45 54 41 任意修改即可
搜索定位
invoke-static {v0, v1}, Lcom/tencent/tauth/Tencent;->createInstance(Ljava/lang/String;Landroid/content/Context;)Lcom/tencent/tauth/Tencent;
(搜狗输入法的)qq分享代码参考-----
const-string v0, "101679027"
[5.31上面这句可能需要手动添加,其他版本如果分享到qq提示了appid则直接字符串搜索替换即可]
iget-object v1, p0, Lnq;->a:Landroid/app/Activity;
invoke-static {v0, v1}, Lcom/tencent/tauth/Tencent;->createInstance(Ljava/lang/String;Landroid/content/Context;)Lcom/tencent/tauth/Tencent;
move-result-object v0
iput-object v0, p0, Lnq;->a:Lcom/tencent/tauth/Tencent;
appid 101683658
签名 mt默认
不满意名字图标的话可去qq互联申请。。不一定能通过
IWXAPI;->registerApp 微信sdk
小程序视频,ShareParamMinProgram;ShareParamWebPage;
.line 159
new-instance v0, Lcom/bilibili/socialize/share/core/shareparam/ShareParamWebPage;
invoke-direct {v0, v1, v5, v10}, Lcom/bilibili/socialize/share/core/shareparam/ShareParamWebPage;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
.line 160
invoke-virtual {v0, v14}, Lcom/bilibili/socialize/share/core/shareparam/ShareParamWebPage;->a(Lcom/bilibili/socialize/share/core/shareparam/ShareImage;)V
return-object v0