Sandboxie注入过程

本文详细介绍了Sandboxie的注入过程,从沙箱进程启动后驱动如何获取进程信息,到svc进程执行Inject_low进行dll注入。讲解了如何在目标进程中分配内存,填充SBIEOW_DATA结构,以及LdrInitializeThunk_tramp、api_device_handle、NtDelayExecution_code等关键数据的处理。最后,讨论了m_sbielow_ptr和m_syscall_data的生成过程,涉及资源解码和驱动交互。
摘要由CSDN通过智能技术生成

 

 

沙箱进程启动后驱动获取了进程启动信息,通知到svc进程。

svc进程执行Inject_low。

首先在目标进程中申请一个空间,地址remote_addr,长度lowdata的长度,将LowData放进去。这个数据是一个dll,工程是LowLevel,作为资源放在svc中,在注入前已经释放出来。

申请的空间中的数据如图entry.asm。

申请数据分成两部分,一部分是.text执行代码,一部分是.zzzz。

其中.zzzz包含两个指针,一个是_Start,指向了运行代码的位置,这个很关键,这是程序的入口位置。

另一个指向SBIEOW_DATA。

这个结构是Inject_low要做的一个重要工作:填充该结构中的数据。这个结构会被entry.asm使用来进行初始化。

要填充这个数据,需要知道这个数据的位置,方法就是采用.zzzz的数据节(section)。找到这个节之后,就找到了这个数据相对于remote_addr的位置。

填充lowdata数据包括:LdrInitializeThunk_tramp,api_device_handle,syscall_data,NtDelayExecution_code

LdrInitializeThunk_tramp 最初是从目标进程中拷贝的。(    void *remote_addr = InjectLow_CopyCode(hProcess,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值