吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 55381|回复: 175
收起左侧

[调试逆向] 【原创】沙箱Sandboxie v3.40 逆向完整源码

    [复制链接]
sudami 发表于 2013-8-16 16:57
【前序】
Sandboxie土耳其人2006年开发的一个轻量级小型沙箱,至今仍有很多人使用,作者也一直在维护更新。当时国内做沙箱的还没有几家,大概有Comodo、卡巴斯基等大的安全厂商做过内置沙箱,不过功能性偏重不同,用户体验跟sandboxie有很大差距。

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

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

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

1.gif

以下是对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了,进行各种重定向。

sbieDll.dll 注入到被沙箱化的进程,用到的方式是驱动sbiedrv.sys监控进程创建,在内存中动态感染IAT表的方式实现的,x86,x64通用。此时sbieDll.dll是除了ntdll.dll、kernel32.dll(kernelbase.dll)之后第三个被加载的模块,此时它便开始接管当前进程的各种调用(这部分注入DLL的代码参考工程中ProteinBoxDrv代码)

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

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


这份代码里面将Sandboxie的exe/dll/sys全部逆向重写了一遍,并包含用IDA 5.0逆向后添加过注释的IDB文件,还有零零散散的调试细节和各种测试工程,风格类似于:
2.gif

3.gif

最主要的几个工程如下:
4.gif

其他技术实现细节请自行围观代码
解压密码:sudami

沙箱_Proteibox_1.0.0.1001_sudami.7z

1.76 MB, 下载次数: 1040, 下载积分: 吾爱币 -1 CB

Sandboxie_Reserved_sudami.7z

3.97 MB, 下载次数: 658, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 21吾爱币 +1 热心值 +20 收起 理由
Flygend + 1 我很赞同!
小希来啦 + 1 谢谢@Thanks!
jinchenye + 1 请勿灌水,提高回帖质量是每位会员应尽的义务!
Intro + 1 用心讨论,共获提升!
aspirer + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
beatit + 1 热心回复!
weeeee + 1 谢谢@Thanks!
janms6718 + 1 大牛啊
zzzaaaooo + 1 我很赞同!
henices + 1 谢谢@Thanks!
courageous + 1 谢谢@Thanks!
流云 + 1 我很赞同!
basicbird + 1 谢谢@Thanks!
fengyr + 1 感谢分享,过来学习一下。
绘梨衣 + 1 谢谢@Thanks!
zbx91 + 1 好东西啊!!!!!!!!!!!
诸葛瑾 + 1 谢谢@Thanks!
q74330 + 1 我很赞同!
K4NG + 1 简直膜拜的要死!
盈盈一水间cc + 1 谢谢@Thanks!
jimmy114 + 1 专程来支持一下!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

yamgxu 发表于 2015-2-14 20:12
真专业啊
LzSkyline 发表于 2016-2-24 08:40
挖坟勿怪,看到这么有含金量的帖子实在是没忍住

要逆向这么一个程序,把代码还原出来,费时费力,而且要求基本功非常扎实

膜拜一下楼主,向楼主学习
sugie0708 发表于 2013-8-16 17:04
谎言 发表于 2013-8-16 17:18
真大牛也
a408115319 发表于 2013-8-16 17:24
好高端的样子!!
Hmily 发表于 2013-8-16 17:27
小米下次早点发,加精鼓励!
吾爱扣扣 发表于 2013-8-16 17:42
一看ID就是大牛。。膜拜,这么高深的东西都能逆出来。。还有,你的连接为什么指向看雪?
reputationly 发表于 2013-8-16 17:48
膜拜大牛,好好学习
小king 发表于 2013-8-16 17:49
看到这贴时还没亮,现在亮了,赶紧进来瞧瞧
空心 发表于 2013-8-16 17:52
好深奥的说
213 发表于 2013-8-16 22:08
很深奥啊
理解不了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-18 19:02

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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