+ -
当前位置:首页 → 问答吧 → 高难度的hook问题——进程创建时的side-by-side处理

高难度的hook问题——进程创建时的side-by-side处理

时间:2011-12-14

来源:互联网

我做了个应用层的沙盒工具。在Ring3级实现了文件和注册表的监视,并把创建动作重定向到了另外一个盘符中。可以通过监视并重定向VC90的运行库(如MFC90U.dll)的安装路径。例如将C:\WINDOWS\WinSxS\x86_Microsoft.VC80.MFC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_3bf8fa05\mfc90u.dll重定向到D:\SandBox\Driver_C\Windows\WinSxS\x86_Microsoft.VC80.MFC_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_3bf8fa05\mfc90u.dll,但出现了问题:

  监视一个依赖MFC90U.DLL的可执行文件Test.exe。MFC90U.DLL可以在Test.exe的输入表中看到。

  创建进程Test.exe时,CreateProcess内部会使用CsrClientCallServer通知csrss.exe对Test.exe依赖的side-by-side(MFC90.dll)进行解析,若主机WinSxS目录未安装VC90库,则提示应用程序配置不正确。

问题:如何使Test.exe顺利加载我D盘MFC90U.DLL?


注:1. VC90的运行库使用side-by-side方式部署在C:\Windows\WinSxS等相关目录中。
  2. side-by-side是微软用来解决DLL HELL问题的一种方法。
  3. 最好不要远程注入csrss.exe。很容易导致蓝屏哦

作者: gobest28   发布时间: 2011-12-14

csrss.exe如果没有什么方式给你修改,那你很难做redirect

作者: oyljerry   发布时间: 2011-12-14

是否可以装载时修改manifest

作者: Lactoferrin   发布时间: 2011-12-14