开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 7493|回复: 24
收起左侧

[源码分享] 沙箱Sandboxie v3.40 完整源码

[复制链接]
结帖率:71% (10/14)
发表于 2013-10-9 09:37:53 | 显示全部楼层 |阅读模式   山东省滨州市
【前序】
Sandboxie 土耳其人2006年开发的一个轻量级小型沙箱,至今仍有很多人使用,作者也一直在维护更新。当时国内做沙箱的还没有几家,大概有Comodo、卡巴斯基等大的安全厂商做过内置沙箱,不过功能性偏重不同,用户体验跟sandboxie有很大差距。

我在09年的时候使用过Sandboxie一段时间,感觉做的不错,对其实现非常感兴趣,于是当时花了大量的业余时间进行逆向重写,整个过程耗时1年多。后来由于工作繁忙,此工程不再关注,代码就这样被搁置了三年多。

今天翻翻代码,觉得里面有些东西可拿出来分享,遂发此贴,旨在抛砖引玉。

【正题】
这个沙箱的名字叫:ProteinBox,完全基于Sandboxie v3.40版本调试逆向后重写的工程,完成度90%,可在XP SP3干净环境下运行,被沙箱化的程序的一切行为都限定在沙箱中。
图片1.png

以下是对Sandboxie原理、整体构架的一段总结:
引用:做沙箱不容易,因为要接管的地方太多,文件、注册表重定向只是最基本的,还有窗口、类名、消息、服务、rpc、Token、COM、etc。在实现过程中需要逆向sandboxie的全部文件:sys、dll、exe,动态调试每个过滤函数的细节。逆向的目的不是抄袭,是为了了解其中的构架,而后再按照自己的思路优化改进重写。以前粗略的总结了sandboxie的原理:

start.exe中有些内容较为有趣.其中解析命令行的部分可以不必看,但有些命令的实现还是值得参考,其中的降权&和驱动通信部分有点儿意思.

EXE中复杂的地方是SbieSvc.exe的通信部分. 绝大都是RPC,这是沙箱模拟系统通信机制,在自己的小沙盘内部实现了进程间的通信.

剩下几个exe诸如SandboxieDcomLaunch.exe / SandboxieRpcSs.exe 内容大同小异.不是关键部分.

至于sbieDll.dll 的文件/注册表/窗口/消息等重定向没什么难度,关键在于细节. 稍微可以借鉴之处在于其对COM部分的处理.

sbiddrv.sys完全可以自己重写.
object hook + shadow ssdt hook + image/process notify
object hook 主要处理文件/管道等操作
shadow ssdt hook处理窗口/消息隔离
image notify 负责sbieDll.dll注入
process notify负责建立总节点.填充各种信息.
驱动中的Inline hook 引擎很有趣,解析配置文件*.ini部分可以不看.其实最关键的部分全部在sbieDll.dll中,它几乎接管了被沙箱化程序的所有调用,将需要关注的R3层面的各种函数基本都Hook了,进行各种重定向。

服务端进程SbieSvc.exe用来模拟rpc通信,这个稍微有些复杂,需要对系统需要进行RPC交互的各种消息有较为深刻的理解。

驱动sbiddrv.sys干的事情不多,主要用于控制权限、读取配置文件、限制窗口消息等。


这份代码里面将Sandboxie的exe/dll/sys全部逆向重写了一遍,并包含用IDA 5.0逆向后添加过注释的IDB文件,还有零零散散的调试细节和各种测试工程,风格类似于:
图片2.png
图片3.png
最主要的几个工程如下:
图片4.png
其他技术实现细节请自行围观代码.
沙盘源码 编译好的文件.rar (131 Bytes, 下载次数: 143)
结帖率:89% (16/18)

签到天数: 1 天

发表于 2024-3-5 14:38:22 | 显示全部楼层   湖南省永州市
感谢分享
回复 支持 反对

使用道具 举报

结帖率:78% (7/9)

签到天数: 6 天

发表于 2024-1-4 21:41:00 | 显示全部楼层   广东省深圳市
花币买吃亏
回复 支持 反对

使用道具 举报

签到天数: 2 天

发表于 2023-9-23 16:23:07 | 显示全部楼层   贵州省黔西南布依族苗族自治州
无法福娃福娃发我发我
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2023-7-19 19:56:53 | 显示全部楼层   山东省烟台市
666666666666666666666666666
回复 支持 反对

使用道具 举报

签到天数: 12 天

发表于 2023-5-31 18:38:43 | 显示全部楼层   湖北省武汉市
感谢分享
回复 支持 反对

使用道具 举报

结帖率:0% (0/4)
发表于 2022-10-22 16:43:01 | 显示全部楼层   北京市北京市
6666666666666666
回复 支持 反对

使用道具 举报

签到天数: 6 天

发表于 2022-9-6 22:57:41 | 显示全部楼层   广东省阳江市
牛!!!!!!!!!!!!!!!!!!!!!!!!!!
回复 支持 反对

使用道具 举报

结帖率:100% (9/9)

签到天数: 2 天

发表于 2021-3-13 09:53:34 高大上手机用户 | 显示全部楼层   广东省江门市
大佬,链接过期了
回复 支持 反对

使用道具 举报

发表于 2021-3-11 13:45:29 | 显示全部楼层   湖南省长沙市
下载不了,花了精币啥都没看到
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表