Sandboxie 沙箱环境合并实战:2 套入口、3 个场景全跑通
【免费下载链接】SandboxieSandboxie Plus & Classic项目地址: https://gitcode.com/gh_mirrors/sa/Sandboxie
刚编译完 SbieDrv.sys,下一步就得把它塞进前端调试目录——Sandboxie 的多沙箱环境合并正是干这个的:两条脚本入口,把散在各处的构建产物归到一处,调试归调试、发布归发布。
先分清两个入口的分工
| 入口 | 管什么 |
|---|---|
| MergeDbg.cmd | 调试合并:把驱动、服务、注入 DLL 汇总进 SandMan 的调试目录 |
| Installer/merge_builds.cmd | 发布合并:按 x64 / ARM64 / x86 产出完整安装目录,打安装包用 |
调试时你只关心"能不能跑起来",发布时你关心"装进目标机缺不缺东西",所以拆成两条线。
按场景走一遍
调试合并:把环境收进一个目录
你拿到什么:各工程独立构建完成,确认三个产物目录有东西——Sandboxie/Bin/x64/SbieRelease/、SandboxiePlus/x64/Debug/、SandboxieTools/x64/Debug/。
你跑什么:在仓库根目录执行一条命令:
.\MergeDbg.cmd脚本会把SbieDrv.sys、SbieSvc.exe、SbieDll.dll连同Start.exe、kmdutil.exe、ImBox.exe等汇总进SandboxiePlus\x64\Debug\,另建32\子目录放入 Win32 版的SbieDll.dll和SbieSvc.exe,32/64 位混跑就有了着落。
你看什么:
dir SandboxiePlus\x64\Debug\核心文件齐了,打开 SandMan,底部 Sbie Messages 里 Installation / Data 路径都应指向这个调试目录:
发布合并:一条命令出多架构版本
你拿到什么:三个架构的 Release 产物全部就位,Installer下的 OpenSSL、7-Zip 依赖也已下载(copy_build.cmd 的复制路径都指向它们)。
你跑什么:
cd Installer cmd /c merge_builds.cmd它会依次调copy_build.cmd x64、copy_build.cmd ARM64、copy_build.cmd x86:每个架构复制 VC 运行库、Qt 库、OpenSSL 动态库和7z.dll,再把 SandMan 全家(SandMan.exe、QSbieAPI.dll、MiscHelpers.dll)与 Sandboxie 驱动、服务、ImBox.exe装进对应的SbiePlus_x64/SbiePlus_a64/SbiePlus_x86安装目录,翻译文件顺手压成 7z。
你看什么:三个安装目录是否齐、每个目录里的SbieDrv.sys与SandMan.exe是否来自同一次构建。
跨架构合并:x86 / x64 / ARM64 怎么流转
不想全量跑时,copy_build.cmd支持单独指定架构,只出一个平台的安装目录:
cmd /c copy_build.cmd x86注意 32 位组件的流转规则:x64 和 ARM64 版都会额外复制一份 Win32 的SbieSvc.exe、SbieDll.dll到安装目录的32\子目录,ARM64 版还会再带一份64\(ARM64EC)。32 位进程进沙箱时用的就是它们。
合并前后的两道保险
文件归位不等于能用,两道关卡兜底:
- 数字签名验证:
Sandboxie/common/verify.c与Sandboxie/core/drv/verify.h里的签名校验逻辑,驱动和 DLL 加载前会验签名,混入来历不明的文件会直接被打回。 - 版本兼容性检查:版本号集中在 SandboxiePlus/version.h,前后端组件版本对不上时,运行时会拒绝启动并提示,不用等到运行到一半才发现问题。
卡住时的三板斧 🛠️
- 看日志:脚本全程
@echo不关,报错都会打在 cmd 窗口,先看具体哪条 copy 失败。 - 核对文件完整性:
dir一下三个源产物目录,缺文件会直接报"找不到文件",回去重跑对应工程。 - 权限:目录被占用或受限就提权再跑:
runas /user:Administrator "cmd /c MergeDbg.cmd"。
顺手收藏
- 更新看 CHANGELOG.md、CHANGELOG_zh_CN.md,合并脚本的行为变更一般会记在上面。
- 动手合并前,用
ImBox.exe给重要沙箱做镜像备份,误操作可直接还原。 SandboxiePlus\x64\Debug\会随多次合并越积越大,合并前手动清掉旧文件能省时间;本地复制大文件时给copy加/B参数,能减少缓冲碎片。
【免费下载链接】SandboxieSandboxie Plus & Classic项目地址: https://gitcode.com/gh_mirrors/sa/Sandboxie
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考