最近在研究Sandboxie的沙盒技术。
网上关于编译安装的教程很少,我自己也研究了一两周。
下面整理出了Sandboxie Classic的编译安装步骤。
编译
环境:Windows11专业版 22H2(VMWware运行),Visual Studio 2019, Windows SDK 10.0.19041.0
首先,阅读README指引,自行安装WDK(WDK安装过程就不展示了,一路安装确认就行)。
WDK安装完成后,用VS打开Sandboxie项目,打开SboxDrv
项目属性,平台工具集选择WindowsKernelModeDriver10.0
。其他所有项目选择Visual Studio 2019(v142)
.
Windows SDK 版本选择10.0.19041.0
。
生成解决方案。配置选择SbieRelease
,因为驱动在Debug配置下会生成失败。最好x64
和Win32
两种配置的都生成一遍,因为你的沙盒软件会运行64位和32位的软件。
64位的程序,生成的目录是Sandboxie\Sandboxie\Bin\x64\SbieRelease
。
签名
此时的程序还不能正常运行,需要对文件进行签名,打包安装。
阅读Sandboxie\Sandboxie\install
目录下的README。按照指引自行操作(具体过程就不展示了)。
上述的操作完成后,我们按照github discussions的指引,使用ProcessHackers SignTool
进行签名,并关闭Windows的signature checking功能。
进入上图中的链接,下载CustomSignTool.exe
。
创建私钥。在终端输入:
CustomSignTool.exe createkeypair <your_privatekeyfilename> <your_publickeyfilename>
生成了对应的文件。
下面开始create the Sbie installers
的第一步,Sign the binaries
。
之前有自行安装Sandboxie的话,我们对比Sandboxie安装目录下的文件,得知我们要签名的文件有3个:SbieCtrl.exe
, SbieSvc.exe
, Start.exe
。
在终端输入:
CustomSignTool.exe sign -k <your_privatekeyfilename> -s SbieCtrl.exe.sig SbieCtrl.exe
生成了SbieCtrl.exe.sig
,大小64字节。
SbieSvc.exe
和Start.exe
重复上述操作。签名步骤就完成了。
禁用数字签名、打开Test Mode
参照知乎回答,windows在禁用数字签名强制检测或打开Test Mode情况下,可以运行驱动程序。(我是两者都开了)
如何禁用数字签名强制检测。
打开Test Mode,其实就是在cmd输入bcdedit /set testsigning on
并重启就行。
生成安装包
接下来执行2~5步就可以了(具体过程就不展示了)。完成了上述步骤,你已经生成了SandboxieInstall64.exe
并能安装Sandboxie。如果你需要兼容32和64位,就执行6/7步。
若过程中出现找不到UpdUtil.exe的错误,你需要编译SandboxieTools
项目(打开SandboxieTools.sln
)。
最后运行SandboxieInstall64.exe
,完成安装后,就能运行Sandboxie Classic了。
调试
一般情况下,修改hook相关的功能,只会改动SbieDll.dll
。在64位操作系统下,如下图,运行64位程序会加载x64
配置的SbieDll.dll
,运行32位程序则会加载Win32
配置的dll。
把生成的x64
配置的SbieDll.dll
复制到C:\Program Files\Sandboxie-Plus
。Win32
配置的SbieDll.dll
复制到C:\Program Files\Sandboxie-Plus\32
。
这样,无论64位还是32位的程序,都能加载你修改过的SbieDll.dll
。