日期:2014-05-17  浏览次数:20885 次

关于加载dll安全问题
我写的程序里面调用了系统中ws2help.dll这个库,现在别人在我程序的安装目录下随便写了一下ws2help.dll,现在我的程序就运行不了。


 系统通过DLL文件的名称,试图加载这个文件到进程地址空间时,
 它寻找DLL 文件的路径按照先后顺序如下:
  ·程序运行时的目录,即可执行文件所在的目录;
  ·当前程序工作目录 (这个下面有ws2help.dll的话,我的程序就运行不了)
  ·系统目录
  ·Windows目录
  ·列在PATH环境变量中的所有目录



请教高手,如何解决我破到的这个问题???????

------解决方案--------------------
你把这个文件放到其它的文件夹中(最好单独为它建一个),最好不要放在系统盘下。
它和WS2_32同为Windows Sockets应用程序接口,用于支持Internet和网络应用程序,它们的寻找顺序应该是
1。本目录,
2。%SYSTEMROOT%
3。%SYSTEMROOT%\SYSTEM32
要是有兴趣可以在网吧试一下(例如在QQ目录下新建一个WS2_32.DLL,你的QQ也就上不去了),曾经也仅在IE和QQ中试过,还是比较有意的,要是不能还原就算了
PS:里面不用有内容,只是要这个文件的文件名即可
------解决方案--------------------
通过修改注册表里的一个参数是可以把加载顺序颠倒的,但是一般不这么做,这样会经常引起一些程序兼容性错误,除非遇到了像什么lpk.dll那种木马,可以临时这样做做,达到不加载木马在每个文件夹下伪装的lpk.dll目的。
------解决方案--------------------
另外指出一下,你的列表应该有点误差,windows目录应该是在SYSTEM32目录之前