关于禁用某些dll防止QQ.exe改名后规则失效的方法的研究
之前有麦粉提过,通过把QQ.exe改名,则阻止QQ.exe运行的规则将没有用了,那么QQ也就可以运行了。这个问题怎么办呢,我这里做一下实验,大家看看吧。
我们知道,一个程序运行,会在内存中产生一个进程,真正结束一个程序,其实是把对应的进程结束了。而其实进程只不过是一个外壳,真正起了作用的应该是进程里面调用的线程,如果一个进程不能调用它需要的线程,那么进程的运行将会受到影响,甚至不能运行。(更多资料请google一下,关于进程线程的资料网上很泛滥)
那么思路就来了,文件可以改名,我们防不了,但是进程调用的线程一般用户就不能改了,因为改了也就调用不了了,除非把程序作修改……于是我们可以通过禁止读取执行某程序调用的重要dll或exe而使得该程序不能运行。大家都看过水哥防ARP的视频,里面用的就是这个方法,没看的赶紧看。
既然水哥都有视频了,为什么我还要发帖说呢?
第一,看帖的人比看视频的人多(或者看了我的帖,没看那个视频的都会去了^_^)。
第二,这个是主要目的,我这次查找QQ.exe调用的dll,并不是用了其他工具,而是Windows下的命令提示符的命令,我想以此鼓励大家多发掘身边的资源,其实有用的东西到处都是,你需要的东西在论坛上、网络上、系统上都很齐,很多都很容易就找到,就不要不做工作只管问了,搜索也是一个能力,对大家以后的工作是很有帮助的。
第三,当一切都看似顺理成章的时候,你是否想过会有问题呢?看吧。
重新回到正题,说说我是怎么做的吧。
1、都知道netstat可以查看当前连接的端口,那么我们看看netstat可以加入的参数都有什么:开始-运行-cmd回车-netstat -w回车。
2、运行QQ,在命令提示符中输入netstat -ano回车,查看当前打开的端口的信息。
为什么netstat后面加-ano?看看第1点中的图就明白了,特别说一下-o参数,用于查看连接在该端口上的进程的PID。
3、那么我们怎么知道QQ连接了那些端口呢?由2中的图知道,我们有端口连接着的进程的PID,只要知道QQ现在的PID,我们就知道QQ连接了那些端口了。打开任务管理器,点击查看菜单下的“选择列”。
4、出现如下对话框,钩选PID(进程标识符),然后确定。
5、现在我们看到QQ当前的PID了,如图是3236。
6、对比一下2中的图,不难看出,QQ和一大堆UDP端口连接了,好了,在命令提示符中输入netstat -anbv -p udp回车,会看到如下信息。
参数-anbv -p的作用?-b 和-v配合使用,用于查看进程调用了那些组件(线程);-p udp则是只查看udp端口的情况,具体请参考第1点中的图。
PS:可以用ctrl+c结束信息的输出,由于使用了-bv参数,信息输出会有点慢,而且端口多,看到需要的信息后就可以ctrl+c结束信息的输出了。
7、好了,从第6点中的图,我们得知QQ.exe调用了QQBaseClassInDll.dll这样一个文件,那么我们现在关闭QQ,开始编写我们的规则,如下。
8、编写好规则,确定之后,重新运行QQ,运行不了了。即使把QQ.exe改名,也运行不了了。
9、好了,一切看似顺理成章,成功解决“编写规则阻止QQ.exe运行,但QQ改名后还能运行”的问题了。不过,现在是新的问题出现的时候了,当我去掉规则,尝试运行改了名的QQ.exe的时候,出现情况了……QQ不能运行。
为什么呢?
10、重新留意第6点中的图,发现QQ.exe在运行中调用了QQ.exe,或者这就是导致QQ.exe改名后QQ不能运行的原因。
11、当然,既然能提出“通过把QQ.exe改名,则阻止QQ.exe运行的规则将没有用了,QQ于是可以运行”这个思路,应该就有其原因,我不知道他有没有尝试过,或者他尝试过,或者其他版本的QQ可以,但我这里的2007版本QQ.exe改名后,就运行不了了。这里我就不再做试验了,有兴趣的人做吧。
总结
上面只是说了我研究这个问题的思路,最后有没有真正解决问题呢?这个就见仁见智了,但希望能达到我一开始说的那些目的吧,希望大家找资料要仔细,身边的工具和资源要好好利用。还有就是当大家发表言论的时候,最好做做实验,当一切都好像顺理成章的时候,可能其中还是存在问题的。
说一下,下午太累了,就只是想着禁用自己机器上的QQ……所以……
不过可以从图6看出,QQ本来自身就有携带MFC42.dll的,所以开始的时候我才会禁用那个……估计那时有点晕了……当时写的是d:\tencent\qq\mfc42.dll。
开始的规则当然是不可行的,规则已经更改现在的规则应该没有问题。
主要还是想大家看个思路,希望对大家有帮助。
特此鸣谢:感谢麦粉_一笑而过为我指出问题,也感谢麦粉_狂雨飞星说出意见,最后感谢水哥的指引。
[ 本帖最后由 飞花 于 2007-11-2 22:56 编辑 ]
附件: 您所在的用户组无法下载或查看附件
需要进行研究确认,谢谢楼主提供思路!!!
路过,长个知识!!
麦穗学习中.......
mfc42.dll是微软Microsoft MFC程序库文件(VC6)
用这个规则,其他需要调用MFC42.Dll 程序也 运行不了 .
真是好帖。向lz学习。
学习了很有 启发!!
这个规则没有实用价值。
(1)你不可以使用通配符来禁止任意程序调用mfc42.dll;否则……
(2)如果别人是在程序放在U盘上运行呢?或者是在其他任意目录(名)下?这样这个规则仍然是失效了。
但是楼主给了我们很多知识。太感谢了!
我以前常常用netstat 命令,一直没有注意它还有这么多的扩展开关。
这家伙很懒,什么也没留下。
飞花犯了一个低级错误,在规则中阻挡读取的文件并不是QQ的问题,如果是其他公用的文件那么后果就严重了,所以这里我们需要阻挡的是QQBaseClassInDll.dll,希望尽快修正你的规则和文字
非站务信息请不要PM我,一律不回;求助或技术讨论请论坛开贴,谢谢
重在刺激大家的发掘能力~呵呵~
抛块砖头,希望能引出些玉。
照这个方法阻止QQ迷你首页也是轻而易举的事情了
Http://Www.biank.Cn[编客镖局] - 提供专业的安全资讯
是小草就要它装饰大地,是参天大树就要它成为栋梁之材!
恩。。这个思路很有启发意义。。。。赞一个。。
人生若只如初见。。。。。。
有用的东西当然收起来!
好好学习楼主的思路~~~~~
这个规则的实用意义我还没有弄太清楚,自己的电脑为什么安了后又要禁止?
我爱DIY,大家好
强人啊。这也可以。。没事研究下
