之前很多人都讨论关于QQ读取浏览器隐私记录的事情,关于的解决办法, 主要还是通过火绒去设立规则去屏蔽部分目录,使得 QQ 无法访问到对应目录。
关于这种类似事情的解决办法最彻底是将类似QQ软件安装到虚拟机中,才是最保险的。
但是虚拟机打开非常麻烦,而且基于windows运行,因为会虚拟一整套操作系统,导致系统资源占用过多,使用体验不佳,除非是那种偶尔使用 QQ 的用户比较适合。
QQ安全组件
也有人研究过将QQ放到沙箱中运行,但是 QQ 会有驱动加载问题,在运行QQ 时会判断 QQProtect 是否载入正常才会继续,否则会提示"QQ安全组件异常,请重新下载并安装。",之后就退出程序,不让你使用。
那么,这个所谓的QQ安全组件其进程文件是 QQProtect.exe,他会挂载驱动 QQProtectX64.sys,并 hook 一堆内核级的系统函数。
也就意味着你运行一个腾讯QQ,那么他基本就掌握了你电脑所有权限,比如它可以获取并决定你所有文件操作记录,进程打开记录,所有注册表等。
但 QQ 本质只是用于通信,聊天,它做了太多非自己本职工作的事情,作为用户是非常不能接受的。
关于沙箱中运行,网上有人给过在沙箱中运行 QQ 的办法,先启动 QQProtect,再启动 QQ。这种办法我并没有实践成功,在实际使用中,一般沙箱是不能为含有驱动程序的软件使用的。
就算沙箱允许程序运行了,那么所运行的程序有可能会绕过沙箱的限制,那么就没有沙箱的意义了。
Microsoft Store 版本
在 IOS 上有apple store,在 Android 上有 Google play,其上架的产品都需要遵守其应用商店的规范才能进行上架。
因此一点,就可以将很多软件的使用权限,必要权限,非必要权限进行一些管理和约束,不能胡作非为。
同样在 Windows 上的 Microsoft store 也有相关制约,我发现微软商店的 QQ 运行时不会加载任何驱动,不会HOOK你任何内核级别的函数。
虽然它下载时附带了驱动文件,但并不会执行。为了进一步尝试,我把商店下载的QQ中,相关驱动文件全部删除,QQProtect.exe 也删除,依然可以使用QQ。
以此来看,QQ 起码在微软商店这里非常老实。
我发现微软商店的QQ文件所在目录都是SYSTEM所属权,管理员无法进行修改删除,也无法直接通过文件启动QQ。只能通过微软开始中提供的菜单进行启用QQ。
启用后的QQ进程的用户名还是 administor,这点很是疑惑。
但由于没有深入了解过微软商店的程序运行机制,就去查了微软商店应用的权限,从中了解到,应用是有权访问到系统中所有文件。
因此我放弃了直接运行微软商店版本方法,如果只是不想运行 QQProtect 就直接使用微软商店提供的 QQ 就可以了。
Sandboxie 沙箱
这个沙箱也是之前在网上网友推荐的一款不错的沙箱程序。
https://github.com/sandboxie-plus/Sandboxie
在 release 页直接下载就好了,有需要的也可以自己进行编译。
在 Sandboxie 中使用默认沙盘,或者创建一个专门给腾讯程序用的沙盘。沙盘与沙盘与物理机之间的文件都是相互隔离的,任何写入操作实际上是写入到了沙箱中的映射文件。
读取时默认可以访问到全局文件,但你可以为它设立一些目录,来拒绝它。
由于微软商店的QQ所在目录是由保护的,我们无法直接运行,那么我们将这个目录复制出来。到你的任意磁盘目录。
商店中QQ的所在目录:C:\Program Files\WindowsApps\903DB504.46618D74B1ECA_9.4.6.0_x86__a99ra4d2cbcxa
比如我移动到了: C:\temp\903DB504.46618D74B1ECA_9.4.6.0_x86__a99ra4d2cbcxa
既然 QQ 没有了保护壳,那么我们直接将他放到沙箱中运行。
右键沙箱-在沙盘中运行任意程序:
C:\temp\903DB504.46618D74B1ECA_9.4.6.0_x86__a99ra4d2cbcxa\QQ\Bin\QQ.exe
一切顺利!
也可以写个快捷方式方便启动,将文件目标写为:
"C:\Program Files\Sandboxie\Start.exe" /box:Tencent "C:\temp\903DB504.46618D74B1ECA_9.4.6.0_x86__a99ra4d2cbcxa\QQ\Bin\QQ.exe"
优化沙箱中的QQ
为了方便QQ存取文件,我们将QQ聊天记录,数据库,QQ群下载的所在文件夹开放给QQ直接访问,这样QQ所进行的修改和操作就可以不需要多余做一层映射了。
右键沙盘-》沙盘设置=》资源访问=》文件访问=》直接访问
在这里加入QQ的聊天记录文件夹:
D:\Program Files (x86)\QQFILE\
每个人的不一样,我将其独立出来并没有放在系统盘,避免系统意外时进行重装系统时找回。
然后你可以在 沙盘设置=》资源访问=》文件访问=》组织访问 中加入你禁止QQ的文件或目录。
QQ在沙箱中产生的文件都可以在沙箱实际目录中查看,Tencent 为我的沙盘名。
- 驱动器目录:C:\Sandbox\Administrator\Tencent\drive
- 用户相关数据:C:\Sandbox\Administrator\Tencent\user
当你使用一段时间 QQ后,你就可以进入这个目录查看QQ做了哪些孽,然后将不需要的目录给拒绝访问掉。
比如,我添加了一个日志目录,禁止 QQ 写。
%AppData%\Tencent\Logs\
自定义QQ聊天记录目录
如果有需要变更QQ聊天记录目录失败,或者需要手动变更时。
编辑文件,如果文件不存在就创建一个
C:\Users\Public\Documents\Tencent\QQ\UserDataInfo.ini
将内容写入如下参考:
[UserDataImportSet]
NeedImport=0
OldVersion=
OldVerDataPathType=
OldVerDataPath=
OldQQInstallPath=C:\temp\903DB504.46618D74B1ECA_9.4.6.0_x86__a99ra4d2cbcxa\QQ
[UserDataSet]
UserDataSavePathType=2
UserDataSavePath=D:\Program Files (x86)\QQFILE
NewVersion=