XLServicePlatform 到底需不需算不算流氓?

2018-05-18 05:37:02 +08:00
 q9REUgpVVCU77pWj

是我挖的坑


个人判断软件是否流氓的原则


对方的解释和我的感想

其实这个解释,以前在搜索怎么干掉这个服务的时候已经在某乎看到过一次了。好像还是某技术高管回的。

“ XLServicePlatform ”服务具有以下几个功能: 1、在 Windows Vista 引入的 UAC 增加了一种磁盘安全机制。在迅雷进程没有管理员权限的情况下,创建固实文件申请磁盘空间后,迅雷一旦开始写入数据,系统就会将文件所在区块的所有数据写成 0 (相当于“初始化”)。以防没有权限的应用程序访问到磁盘上被标记为删除但尚未擦除的旧数据。 完成初始化的速度取决于磁盘本身的写入性能,在此期间磁盘的 IO 性能几乎全部被占用。因此会造成其它磁盘读写请求被延迟。于是会看到许多应用程序停止响应。而下载的文件越大,完成初始化需要的时间越长。直至文件所在区块全部初始化完成,迅雷才可以写入下载的数据。( uTorrent 在勾选了“提前申请磁盘空间”后,如果也没有管理员权限,那么下载大文件也会出现同样的情况。) 为了避免这个问题,迅雷利用系统服务具有管理员权限这一特性,在迅雷下载大于 100MB 的文件时,由“ XLServicePlatform ”服务来申请磁盘空间,这时系统就不会花时间提前将文件所在区块初始化,迅雷就可以直接写入数据了。


2、目前最新版本的迅雷客户端都增加了“驱动层浏览器支持”功能,用于在不安装任何浏览器扩展的条件下,支持“ Edge、Chrome、Firefox ”等浏览器。该功能依赖“ XLServicePlatform ”服务进行初始化。


3、迅雷下载 JS-SDK 需要通过“ XLServicePlatform ”服务跟网页中的 JS 进行交互,比如判断是否安装迅雷,以及传递下载链接等信息,如果这个服务被停止,当你点击网页中使用迅雷下载 JS-SDK 实现的下载按钮时,会认为你没有安装迅雷,从而提示你安装迅雷。


鉴于以上功能对于大多数用户的下载体验都十分重要,所以我们没有提供关闭此服务的选项。如果你用不着这些功能,是可以手动停止服务的。


总结


解决方案

网上看到说火绒能阻止 UAC 弹窗,未尝试。我不想装杀毒软件。


只有这三个功能吗?

仅仅根据对方复制粘贴的答案作了回复。对方也再三强调没有扫硬盘,那我就相信。
但这个服务除了上述提到的三点,还有没有其他“功能”?
如果它能给浏览器做那么多“功能”,那是否应该相信它只关注下载,绝不会偷看浏览器的其它内容?


哪有什么流氓?上你是为了让你爽!

最后说句政治不正确的,你强奸小白不惹到我们也就算了。
我都到服务里明确禁用掉这个服务了,你还每次 UAC 弹一下,而且专挑有点洁癖的用户下手,这不是找骂嘛。虽然可以理解你们可能怕被其他家的流氓误杀。
但这就好比妹子已经明确拒绝你了,你还时不时说说骚话打打嘴炮,便宜占不到,就留个难看的吃相。

11300 次点击
所在节点    程序员
18 条回复
jdjd
2018-05-18 06:41:02 +08:00
图样
你禁用了服务,别人请求了 uac,难道就不能干点别的吗
jdjd
2018-05-18 06:44:58 +08:00
迅雷是一个 VIP 会员都要看广告的公司
迅雷是一个能把所有大家觉得不错的产品砍掉然后推出找骂产品的公司
我只能说迅雷为中国的反盗版事业也是做出了很大贡献
msg7086
2018-05-18 06:52:15 +08:00
Windows 下的非填充分配文件空间系统调用叫做 SetFileValidData。
它的作用是给一个文件预先分配文件空间,和 POSIX 下的 fallocate 类似,除了一点不同 —— 分配的空间里的旧数据是可以被程序读取的。
比如你删除了一张敏感照片,然后点开了一部电影开始下载,那么这部电影所占用的文件,很可能会包含你删除的那张照片的数据。
对于这样的危险操作,微软也是限定了这个函数的使用权限。一个程序必须要拥有 SE_MANAGE_VOLUME 特权才可以预分配空间。SE_MANAGE_VOLUME 权限可以通过 AdjustTokenPrivileges 函数对程序自身进行提权而得到。提权需要以管理员权限运行程序才行。
也就是说,任何一个程序,想要预先分配空间(以大幅减少磁盘碎片),必须以管理员权限运行,然后对自身提权,然后才可以打开文件进行写入操作。

著名开源下载软件 aria2 有这么几种模式:
1. 不分配。写一块是一块,如果遇上 NTFS 这样的智障 FS,顺序下载完以后都可能会产生几千片碎片。
如果多线程下载,当程序第一次写入靠后的块时,一样会将未下载的空间写零。

2. 预先写零分配。从头到尾写一遍零。如果是个 10G 的电影,就得等上 2 分钟写完零以后再开始下载。

3. 预先分配。用管理员权限提权后直接分配空间。这种方式性能最好,文件碎片少,不需要等待,但是缺点就是要管理员权限,而且没下载完的文件里会有辣鸡(或者敏感)数据。

归根结底就是微软 API 的毛病。要是像 POSIX 一样支持 fallocate,我就不需要没事就把 aria2 提权到管理员了。
0987363
2018-05-18 07:00:00 +08:00
前几天在系统监视器里发现这个进程正在读取的文件隔几秒换一个。。。最近几个月就没打开过迅雷。。
Valyrian
2018-05-18 07:02:05 +08:00
@msg7086 这。。windows 是不是傻?预先分配后,还没写入的部分直接返回 0 不行?非要如实汇报吗?
innoink
2018-05-18 07:02:28 +08:00
迅雷选择成立公司本身就是一个错误
jdjd
2018-05-18 07:10:19 +08:00
@0987363 胡说,人家那个迅雷产品人员才信誓旦旦的说了,迅雷不会这样,不信你们用监视器自己看
msg7086
2018-05-18 07:19:30 +08:00
@Valyrian 是,这傻叉设计为人诟病许久了。
verrickt
2018-05-18 07:29:11 +08:00
所以我把所有需要 uac 权限的应用都丢到沙箱里了,你应用程序爱怎么折腾怎么折腾,反正我用完了你就得不留痕迹的死。
沙箱外只用 uwp 和开源软件。
ColinZeb
2018-05-18 08:15:55 +08:00
@verrickt 难道你没听说过越😄
plko345
2018-05-18 09:03:35 +08:00
@verrickt 我放到虚拟机里了哈哈哈
Abblee
2018-05-18 09:05:05 +08:00
算流氓也不算流氓,毕竟世界上不是程序员一种群体
h82258652
2018-05-18 09:13:12 +08:00
话说我倒是想知道那个 DownloadSDKServer 为啥把我磁盘跑满了。。。
nannanziyu
2018-05-18 09:16:57 +08:00
@msg7086
了解下 SetEndOfFile
AX5N
2018-05-18 09:19:15 +08:00
这个功能如 3 楼所说,还是很必要的,ut 也有,但 ut 并不会强制让你开启一个服务,只是在运行的时候以管理员权限运行就得了。
tifang
2018-05-18 09:47:12 +08:00
解决方案:在 sandboxie 中安装使用迅雷,在盒子里它没法安装驱动。只需注意 UAC 弹窗即可。同理对大部分流氓软件此法都有效。
iwtbauh
2018-05-18 10:17:27 +08:00
@msg7086

fallocate 不是 POSIX,POSIX 的那个叫 posix_fallocate
msg7086
2018-05-18 23:58:28 +08:00
@nannanziyu SetEndOfFile 在随机写入的时候会填零。
多线程分片下载的时候,靠后的区块在首次写入的时候会导致之前的所有区块填零,会阻塞整个线程。
这就是我说的第一条,不分配的情况。

@iwtbauh 感谢指正。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/455776

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX