主题:highway、老兵帅客、还有阿康,我想问您们一个问题! -- 边寒剑
今天我通过杀毒软件发现了我的计算机里面又两个文件是有病毒的,一个是winsearch.exe,另一个是mwqu_32.dll.现在到是不同担心,我把他们都已经杀掉了!但是我看到相关的一些材料上面写到如果当初不先删除winsearch.exe的话,那么mwqu_32.dll是无法杀掉的,下次启动还会出现.换句话说,就是mwqu_32.dll这个文件是和winsearch.exe相关联的.或者说,是winsearch.exe正在使用他,我现在就是想问一下,如何能够查出哪个文件正在使用另一个文件,或者说怎么样能够查出某个文件和另一个文件相关联?
万份感谢!
1)WIN32 API类型的DLL
2) COM/COM+ 类型的DLL
3) .NET类型的。
它们的后缀都一样(DLL),但行为却区别很大,尤其是.NET DLL,它已经不是传统意义上的DLL了,更象是Java 的Jar文件。
探测一个进程载入了什么样的DLL不是非常简单的事,有一些第三方的工具软件可以帮助你获得这样的信息(.NET DLL应该容易很多)。以前在DEBUG一些很奇怪的问题的时候,我做过类似的工作。
如果你不是搞IT的,这个问题就不用深究了。老兵是从DOS编程搞起的,对于前两类DLL一定有不少感触。Windows 所谓的DLL HELL吗,没有程序员不被折磨过!
发现有个winsearch.exe的程序在运行,关了,机器立即挂了
到DOS下面去删了它(c:windowswinsearch.exe),呵呵,机器启动,毒霸没有发现病
毒了,不过提示c:windowswinsearch.exe找不到,呵呵俺开始-运行-system.ini
发现了:system.ini文件boot节下面shell=Explorer.exe 后面跟着c:windowswinsearch.exe呢,把它也给删了(shell=Explorer.exe 一定要保留啊,后面的删了就行)
然后找MWQU_32.DLL,居然没有发现,然后用毒霸全面的查啊杀啊,没有问题
假定你会使用winhex,你可以打开一个DLL文件,然后查找你所关心的文件名是否在这个DLL文件中间出现,如果出现,就算是调用了这个文件。
这样做的好处是winhex可以很容易地搞到而且不涉及文件加载问题。
如果你是做开发的而且对VC++比较熟,那么VC++有对应的工具来查看该DLL文件对其它文件的引用关系。
说到highway所说的那三种DLL,其实它们在文件的相互引用方面倒是类似的,当然所用的表和位置肯定是不同的,但是在使用winhex的情况下,这些并不重要。
不具备的。比如用使用了COM的ASP程序,如果要更新这个DLL,那么要先Shut down process。而使用.NET的ASP.NET你可以直接更新.NET DLL without shutting down the process first。这是所谓Shadow copy在.NET的一个应用。
普通的Private .NET DLL不touch Registry,这和COM DLL不一样;不同版本的同名.NET DLL可以同时被不同的Process载入,这和WIN API的DLL也不同。
基于这些考虑,我认为.NET的DLL已经不是传统意义上的DLL了,只不过是文件pack的一个形式。
你就听听老兵和Highway这两蒙古大夫的,先试把试把
阿康,。。。。
.Net的Reflection要比Java的对应部分强,你不仅可以分析各级成分的组成,也可以动态生成它们,然后重新加载。当然这需要装上.Net Framework而不仅仅是Runtime,因为它需要编译器的支持。
我个人并不喜欢Private Assembly和Shadow Copy,因为这只适用于小程序;对于比较大的程序来说,Global Assembly是必需的。
小的时候学习的basic语言看起来是一点用处都派不上喽!看起来目前只好夜以继日的把vc学习才行呀!