1234下一页
返回列表 发新帖

【逆向思路】Via浏览器去除白名单限制

  [复制链接]

42

主题

630

回帖

5893

积分

硕士生

小佬

Rank: 6Rank: 6

金币
6699
好评
157
信誉
260

考神MT论坛新人MT论坛最佳新人

QQ
发表于 2025-7-15 13:23:17 来自手机  | 显示全部楼层 | 阅读模式  来自 江西
本帖最后由 JiGuro 于 2025-7-20 20:07 编辑


上一篇帖子提到,Via 会在特定网站屏蔽资源嗅探功能,也教了大家破解的方法。但知道怎么改的,更要知道怎么来的。于是就又写了这篇帖子。
声明:仅供学习交流,不提供成品,仅分享思路,严禁用于商业用途,教程中用到的网络下载的相关破解工具请于24小时内删除。此帖子旨在提供逆向思路,如果不想费时间,可以直接跳转我之前的帖子:
传送门
由于本人技术能力有限,请各位海涵!
我们用 Via 打开B站,点击资源嗅探按钮,发现:

Via 提示"该站点不支持资源嗅探",那我们就从这个提示入手
我们把网断了,清空 Via 存储(防止有数据缓存),再次打开B站,点击资源嗅探:

发现虽然网页无法加载,但是提示仍正常。于是我们可以判断,该提示是在本地安装包内,并不是通过网络加载
很狗的方法,不过很有用
接下来,我们提取安装包,用 MT 打开它。

一般,软件中很多字符串都会在安装包内的resources.arsc文件中进行声明。
我们打开它,并搜索资源值"该站点不支持资源嗅探",发现成功搜到:

我们长按复制资源id

再拿到dex里进行搜索:


只有一个结果,我们进入并定位:

为了方便,我们可以把这个方法转成Java:
  1. package i.a.w;

  2. import d.h.a.e.a;
  3. import i.a.a0.i.g;
  4. import i.a.a0.l.d;

  5. public class za {
  6.     public void r2() {
  7.         a E = E();
  8.         if (E != null && g.a().a(E.a())) {
  9.             bb bbVar = this.a;
  10.             bbVar.l0(bbVar.g0().getString(0x7f1003a0));
  11.             return;
  12.         }
  13.         if (E != null && !d.n(this.a.g0(), E.a())) {
  14.             this.m = E.c();
  15.         }
  16.         int z = z(this.m);
  17.         if (E != null) {
  18.             m.a.a.a("log id: %d, resource id: %d, has resource: %s", new Object[]{Integer.valueOf(E.c()), Integer.valueOf(E.D().getId()), Boolean.valueOf(i.a.w.rb.d.c().g(this.m))});
  19.         }
  20.         if (z != -1 && i.a.w.rb.d.c().g(this.m)) {
  21.             q2(10, null);
  22.             return;
  23.         }
  24.         this.a.l0(this.a.g0().getString(0x7f10021c) + this.a.g0().getString(0x7f100290));
  25.     }
  26. }
复制代码

这里给大家解释一下重要步骤
// 取资源对象
res = E();

// 发现是白名单中的网站
if (res != null && g.a().a(res.a())) {
// 直接给 UI 设置文案 A(0x7f1003a0)并 return;
}

// 本地未找到资源
else if (res != null && !d.n(ctx, res.a())) {
// 本地缺失,把 logId 记下来
this.m = res.c();
}

// 计算状态码
int z = z(this.m);

// 打一条调试日志(无论后面走哪条路都会打)
log: logId、iconResId、本地资源包是否存在

// 资源包已存在且状态码合法
if (z != -1 && 本地资源包存在) {
q2(10, null); // 真正去加载/展示
return;
}

// 兜底失败提示
给 UI 设置文案 B(两段字符串拼接:0x7f10021c + 0x7f100290)

综合分析上述代码,我们发现只要 g.a().a(E.a())  返回  true,Via 就会提示"该站点不支持资源嗅探"。
如果仅仅用 const 修改返回值,提示确实会改变,但仍然无法嗅探到资源。
我们跳转这些方法,发现很多都是虚拟方法,还有一些并无判断,只是调用了非常多的方法
如果我们继续找下去,可能很久都找不到结果。
很多老哥在这里就已经放弃了,但是为何不换一种方式思考呢。
其实到现在,才进入正题。
我们可以分析得到,如果要进行提示,系统必须判断此刻的网站是否是白名单内的网站。我们不难想到,进行白名单比对最简单的方法是比对网址,如果网址位于白名单内,那么就返回提示语。这点也可以从我们断网但正常提示这点侧面印证。
那么,我们就可以这个为新的切入点。

直接在dex中搜索明文"bilibili",发现有很多结果。(在resources.arsc 里搜索?那你想多了,不可能那么简单)
逐一分析可知,这些都是一些常见网站的声明,与白名单并无明显联系。

现在估计又有很多人想要放弃了
我们不妨合理猜想,也许包含"bilibili"的白名单可能被某种算法加密了。
我要介绍一种不怎么常用的方式。
那就是——注入日志记录

我们点击 Via 原包,再点击"功能",就可以发现注入日志记录这个功能。这是一个被忽视的功能,但它其实就是制胜秘诀。
我们直接对 Via 注入日志记录,然后安装。


这里要注意,一定要给 Via 存储权限(如果没有权限就在AndroidManifest.xml里声明),否则日志文件就不会出现在/storage/emulated/0/MT2/logs/,而是在/data/data/mark.via/logs/,需要root权限才能够访问。
现在我们打开 Via ,打开B站网页端,然后点击资源嗅探按钮,等待提示完全消失。然后打开 MT ,定位目录。
这里为了省事,直接定位到/data/data/mark.via/logs/。

可以看到 log 文件已经生成。
我们再打开 log 文件,发现有非常多的条目。不用急,按照我们的猜想,Via 会将网址与白名单比对,即使白名单内容加密,那么在 log 文件中也一定会有解密信息。
我们直接搜索关键字符"bilibili",在排除一些无用条目后,我们可以迅速地定位到这几行关键信息:

诶,正好。这不就是 Via 提示"该站点不支持资源嗅探"的几个网站吗?
我们通过log信息直接定位到方法:

发现这个u方法定义了几个非常可疑的字符串,再把这几个字符串送去进行 decode,这其实就是进行解密。有经验的同学们一眼就发现,这几个字符串就是非常常见的 Base64 编码,我们通过看字符串最后面的等于号和调用方法就可以判断出来。
为了进一步验证我们的猜想,我们可以用 Base64 转码器对于这几个字符串进行转码:



转码成功,而且转码结果正是刚才 log 中提到的 Via 白名单网站。
至此,分析过程结束,这个u方法实际上就是对白名单内容进行解密比对的关键方法,那么我们就可以直接修改字符串,将其改为任意无效内容,或直接清空u方法,让其直接 return 一个空值,也能达到同样的效果。
保存修改,签名安装。
再次打开B站,发现破解成功:

经过这次的修改,相信大家的技术应该都有所提高。主要是为了带大家熟悉一下注入日志记录这个功能,并分享一下我个人的思路。
感谢大家能够阅读到这里,如果有不同的想法,可在下方评论区分享留言,大佬见笑。
知道你们想练手,把 Via 原包和转码工具箱都打包好了,可以自己试试:
下载链接

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
已有5人评分好评 金币 理由
mtzxf + 1
阿_柒 + 1
venus + 1 学习了注入日志
喵喵猫 + 1 + 1 写的不错
青春向上 + 1 感谢分享。

查看全部评分 总评分:好评 +2  金币 +4 

回复

使用道具 举报

483

主题

2万

回帖

6万

积分

版主

喵喵,喵~

Rank: 7Rank: 7Rank: 7

金币
44786
好评
304
信誉
126

MT论坛灌水老大MT论坛最佳新人2019-5.1节快乐考神MT论坛侠客MT论坛活跃会员MT论坛新人挂机大佬

发表于 2025-7-15 14:33:47 来自手机  | 显示全部楼层  来自 山东
写的不错
回复

使用道具 举报

34

主题

1233

回帖

4063

积分

大学生

Rank: 5Rank: 5

金币
316
好评
3
信誉
100

考神MT论坛帅哥MT论坛新人

发表于 2025-7-15 13:31:26 | 显示全部楼层  来自 四川
沙发
回复

使用道具 举报

63

主题

1685

回帖

6050

积分

硕士生

小白

Rank: 6Rank: 6

金币
2535
好评
5
信誉
104

考神MT论坛新人MT论坛帅哥MT论坛最佳新人

QQ
发表于 2025-7-15 13:33:09 来自手机  | 显示全部楼层  来自 广西
老铁太牛了
回复

使用道具 举报

15

主题

1974

回帖

6206

积分

硕士生

Rank: 6Rank: 6

金币
2192
好评
10
信誉
104
发表于 2025-7-15 13:56:10 来自手机  | 显示全部楼层  来自 广东
感谢分享   在几种方法中选择了最复杂的方法
回复

使用道具 举报

10

主题

4866

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
3480
好评
5
信誉
98

MT论坛最佳新人

QQ
发表于 2025-7-15 13:56:35 来自手机  | 显示全部楼层  来自 江苏
过程挺详细的。
回复

使用道具 举报

0

主题

7272

回帖

2万

积分

博士后

Rank: 8Rank: 8

金币
2243
好评
8
信誉
124

考神

发表于 2025-7-15 14:45:04 来自手机  | 显示全部楼层  来自 广东
都660版本了,之前改还是631
回复

使用道具 举报

0

主题

97

回帖

334

积分

初中生

Rank: 3Rank: 3

金币
199
好评
0
信誉
100
发表于 2025-7-15 16:19:46 | 显示全部楼层  来自 陕西
进来学习了。
回复

使用道具 举报

4

主题

3066

回帖

9398

积分

硕士生

Rank: 6Rank: 6

金币
7134
好评
0
信誉
98

MT论坛最佳新人

发表于 2025-7-15 16:24:43 来自手机  | 显示全部楼层  来自 四川
全力支持楼主
回复

使用道具 举报

3

主题

1147

回帖

3147

积分

大学生

银杏叶

Rank: 5Rank: 5

金币
3081
好评
0
信誉
102

考神MT论坛最佳新人

QQ
发表于 2025-7-15 16:26:11 来自手机  | 显示全部楼层  来自 山西
好复杂
回复

使用道具 举报

12

主题

8576

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
7126
好评
2
信誉
98
发表于 2025-7-15 18:46:38 来自手机  | 显示全部楼层  来自 安徽
学习下大佬的思路
回复

使用道具 举报

36

主题

6073

回帖

1万

积分

博士生

水博士

Rank: 7Rank: 7Rank: 7

金币
4912
好评
7
信誉
97
发表于 2025-7-15 19:58:31 来自手机  | 显示全部楼层  来自 北京
学到了,感谢大佬分享
回复

使用道具 举报

0

主题

182

回帖

924

积分

高中生

Rank: 4

金币
461
好评
0
信誉
100
发表于 2025-7-15 22:22:50 来自手机  | 显示全部楼层  来自 浙江
看看
回复

使用道具 举报

34

主题

4622

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
7110
好评
8
信誉
100

考神

发表于 2025-7-16 00:19:32 来自手机  | 显示全部楼层  来自 上海
又学了一手,挺巧的方法,点赞!
回复

使用道具 举报

34

主题

4622

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
7110
好评
8
信誉
100

考神

发表于 2025-7-16 00:34:29 来自手机  | 显示全部楼层  来自 上海
这篇帖子挺有价值,里面涉及了好些有趣的方法
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表