我们想挂钩调用LoadLibrary以下载未找到的程序集.我们有一个处理托管程序集的ResolveAssembly处理程序,但我们还需要处理非托管程序集.
我们尝试通过"编写Microsoft Windows编程应用程序"中指定的技术重写import表来挂钩LoadLibrary调用,但是当我们调用WriteProcessMemory()时,我们得到一个权限被拒绝错误(998).(是的,我们正在使用提升的私人运行)
在加载CLR时是否有人成功重写了import表?谁能指出我正确的方向?
更新:我们解决了权限被拒绝的问题,但现在当我们迭代混合程序集的Imports表(托管+非托管)时,我们找到的唯一条目是mscoree.dll.有谁知道如何找到原生进口?(我们在C++/CLI中工作).
如果您在LoadLibrary没有路径的情况下呼叫(例如,LoadLibrary("whatever.dll")Windows通常会遵循其标准搜索算法,那么它将用于查找EXE.
我的问题是:假设应用程序清单指定指定系统DLL的特定版本,例如comctl32.dll 6.0.在这种情况下,将LoadLibrary("comctl32.dll")立即转到正确的并排文件夹,还是仍然执行某种搜索?