我想了解像App-V和sandboxie(http://www.sandboxie.com/这样的软件是如何工作的。但对于我的生活,我想不出任何可能使这成为可能的东西。他们如何拦截API调用并欺骗目标软件?如果有人会说它只是魔法和小精灵,我会相信它们。但是说真的,有没有白皮书讨论这个问题的解决方案?
如果这在CLR级别上是可行的,那么这将是好的,但如果必须,我愿意去原生。
答案 0 :(得分:3)
Sandboxie通过将代码注入核心Windows API来实现这一点,就像病毒一样(这就是Vista x64阻止此行为的原因,以及为什么Sandboxie无法在该操作系统上运行)。
Here是一个解释API挂钩的项目。通过研究Metamod:Source的源代码(用于CounterStrike的SourceMod:Source :),我学会了所有这些工作。
答案 1 :(得分:0)
我不知道MS是如何做到的,但这是一种方法的基本理论......
您要做的是挂钩系统调用(类似于链接到中断)。
希望这有帮助。
答案 2 :(得分:0)
查看X86 Virtualization上的维基百科页面,其中讨论了软件虚拟化(早期VMWare,Wine,Sandboxie和App-V的范围)以及更现代的硬件虚拟化(Hyper-V,VMWare,其他)。
我假设您正在寻找软件虚拟化,因为使用.NET(或任何CLR),您已经在某种程度上将您自己从CPU体系结构中抽象出来,尤其是'AnyCPU'目标。