Pi Store
更多

比沙箱和虚拟机更好用,来试试微软发明的新「笼子」

2023 年 06 月 14 日

比沙箱更彻底,比虚拟机更方便;应对「各展神通」的软件生态,Win32 app isolation 提供的隔离功能值得一试。


引言

如何有效地对应用权限进行约束,是所有桌面操作系统所面临的共同难题:既要保证应用可以高效地利用系统资源稳定运行,又要保证应用不要滥用系统权限、或者影响其他应用的正常运行。

这方面,Mac 有比较完善的底层设计,可以有效的管理应用权限。但在 Windows 平台上这件事就显得尤其相当复杂。虽然微软一直都在大力推广带沙箱机制的 UWP 应用,但奈何用户习惯和沉重的历史包袱,至今不够主流;目前大部分的 Windows 应用的安装以及封装方式,依旧和十年前并没有太大区别,「流氓应用」依旧可以在用户不知情的情况下写入注册表信息或者安装一些未知的服务项和启动项。

对此,我们之前介绍过「沙盒」类工具,即通过将软件运行在沙箱创造的「虚拟空间」中,避免对真实系统环境产生影响。

 

但正如当时所讨论,沙箱的原理使然,软件在其中的运行效率自然也会打折扣,而且并不能实现完全隔离。而另一种更彻底的隔离方式——虚拟机——则显得有些杀鸡用牛刀,操作也不方便,对于一些日常应用确无必要。

有没有什么能兼顾隔离效果、使用便利和运行效率的方案呢?一个好消息是,微软最近出手了。

之前,在推出 UWP 应用方案的同时,微软曾提供过将传统 Win32 应用转制为 UWP 的方案。但因为限制较大,甚至会影响调用合理的系统资源和权限,在开发者中接纳程度不高。

而随着今年的 Windows 11 Build 2023 ,微软推出了一种新的转制方案——Win32 app isolation。这个方案的原理就类似「运行容器」,既保证了转制后的应用可以高效运行,同时也便于权限管理。

而由于这个方案是开源的,因此即使你不是开发者,也可以使用微软提供的工具,非常方便地将现有 Win32 软件安装包转换成自带「沙盒加成」的 MSIX 格式安装部署包。

下面,我们以修改微信 Windows 版的 .exe 软件安装文件为例,演示使用 Win32 app isolation 技术沙盒化应用的方法。

自制一个沙盒化应用:以微信为例

第一步:转换安装包格式

首先,下载安装的最新预览版本的 MSIX packaing Tool。打开后,在工具的主页上选择「应用程序包」。

在「选择环境」步骤,选择「在此计算机上创建程序包」。

在「准备计算机」步骤,可以检查相关的系统要求是否已满足,确认「其他准备工作」的「MSIX 打包工具驱动程序」已经完成安装。然后点击「下一个」。

在「新建程序包」中选择微信的安装包。签名对于安装是必要的,但生成证书签名时又需要下一步的程序包信息,所以这里先跳过,在稍后的步骤中再进行操作。

在「新建程序包」中,可以命名程序包的相关信息,比如加上程序包的名称,显示的名称、发布者的名称等等。建议直接从需要转制的应用的右键菜单中选择「属性」,然后依样复制。

点击「下一步」后,MSIX packaing Tool 会开始模拟应用的安装过程,并记录下其文件安装路径、是否安装服务等信息。等待安装完成后,点击「下一个」。

在「首次启动任务」中,MSIX packaing Tool 列举检测到的可执行未见。选择应用主程序作为「入口点」,这里显然是 WeChat.exe。然后点击「下一个」,和弹框中的「是,继续」,进入到下一步。

在「程序包报告」中,会罗列出原安装包会安装到系统中的服务,如果没有就继续点击「下一步」。这时候 MSIX packaing Tool 会要求你设置保存软件包的位置,点击右下角「创建」就会创建后缀名为 .msix 的软件部署包。如果没问题的话,你会在保存安装包的位置看到一个文件格式为 .msix 的安装包。至此第一步操作就算是完成了。

第二步:创建自签名的软件证书

前面提到,在选择安装程序时,如果不对软件包签名,那么生成的应用安装包会无法安装,就如下图一样:

简单解释一下什么是软件证书签名。这是一种确保软件完整性和来源的技术,让用户知道这个软件是可信赖的对象所开发的,既能在传输的时候保证软件包的完整性,也能防止恶意软件伪装为真实的应用程序。

会员专属文章,欢迎加入少数派会员。
优质内容
权益周边
会员社群
power+
评论区
精彩评论0
成为少数派会员方可评论,立即加入 。若已是少数派会员,点击登录
还没有评论,来发表第一个评论吧
精彩评论
还没有评论,来发表第一个评论吧
成为少数派会员方可评论,立即加入 。若已是少数派会员,点击登录
会员新功能
内容侧边栏
点击这里拉开侧边栏,即可查看会员内容列表,快速切换内容。