-
-
[求助]突然发现msvcr90.dll的位置很奇怪
-
-
[求助]突然发现msvcr90.dll的位置很奇怪
我写了个简单的hello world,用windbg调试的时候,发现msvcr90.dll是在C:\Windows\WinSxS\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_50934f2ebcb7eb57\MSVCR90.dll
,为什么会这样呢?作为隐式加载的dll,不是应该在system32以及syswow64下面么?这个路径操作系统是怎么找到?他怎么知道我的hello world里需要的msvcr90.dll就是这个呢?
我的系统是64,这个hello world是32位。
system32下面有msvcr90.dll,但syswow64下没有。
我查过path里面没有这个WinSxS路径的。
我原本是想学习做一个PE Loader,加载并执行另一个exe,事先需要把它依赖的dll加载进来。crt就使用相对路径LoadLibrary加载,发现失败;然后我就按照LoadLibrary的路径查找顺序,却找不到这个msvcr90.dll。于是用windbg查看这个hello world是从哪里加载进来的,才有上面的发现。
难道windows的PE Loader在查找dll时,除了系统目录、windows目录和path外还有别的策略?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课