Windows 7 与 360安全卫士共同作用下调试程序的一些问题

来源:互联网 发布:地下城数据芯片在哪刷 编辑:程序博客网 时间:2024/05/21 10:39

声明:

本文没有黑360安全卫士的意思,相反,感觉安全卫士还是可以的,起码做到了一些基础防护。


正文:

关于Windows 7就不多说了,界面炫丽,比Vista好用不少,Vista当初装上没两天,就直接革掉,换个XP。Windows 7 按照官方的说法,比XP改进太多了,个人感觉,或者说从个人的使用上来说,Windows 7相比XP来说,一个是界面炫了(炫了就需要消耗性能资源,那也就比XP慢了),一个是比XP更加安全了(增加了UAC,UAC是从Vista开始增加的,但是Vista没几个用它写程序的估计,所以也没发现太多问题。增加了UAC,那也会消耗资源,降低性能)。总结一句话,凡事是需要代价滴,天下没有免费午餐!!!

再说360安全卫士,说到360安全卫士,就会想到几个词(“流氓” —— 开玩笑,开玩笑):“被拦了”,“被360删掉了”等等吧,诸如此类。以前还没太注意(注:以前不用360安全卫士,O(∩_∩)O哈哈哈~),换到了Win 7系统了,用用360安全卫士吧,貌似比某度卫士要好用不少。

于是乎,问题来了。

先说个场景吧!

假设我有一个即时通信的软件,微Q,它可以支持数据的加密(动态的密钥,软件运行后与服务器协商密钥),我要做一个抓取这个 微Q 数据包的一个工具(很蛋疼哈),那么呢,就出现一个问题了,微Q的数据是启动后,动态获取密钥,来用于本段时间的数据加密。我们抓取了数据包,要解密,就需要这个密钥。为了不动微Q程序,自己在单独写一个小程序,负责数据的解密,但是这个程序需要放到微Q的目录下,从通信动态库中获取密钥,来解密数据。

启动抓包程序时,同时启动我们写的这个抓包软件,抓包软件抓包之后,对于抓取的微Q的数据包,将数据包解包,然后将数据包内容传给 解密的软件,解密后,将数据再回传我们的这个抓包程序,进行显示。

为了使用方便,在我们抓包程序启动后,检测解密软件是否在微Q的目录下,如果不在,则将解密程序向其中复制一份。启动抓包程序后,启动解密程序,以便在抓包过程中,即时地对抓取的微Q数据包进行解密。

什么问题呢?

在调试的过程中,我们需要将解密程序编译输出到微Q目录进行调试。调试完成,我们需要将 解密程序动态地复制到 微Q的目录中。

先说第一个,要将解密程序编译输出到微Q目录,而Win 7 是有UAC的,微Q如果装在了C盘中,那么,我们的程序是无法将编译输出,直接写到C盘上的。对,有一个方法,那就是将编译器  以管理员身份运行,OK,我们轻松地将编译结果输出到了 C盘上的微Q目录。

调试完成,编译一个来跑一下程序吧: 默认 微Q目录没有我们的解密程序,抓包程序启动,将解密程序复制到 C盘的微Q,路径查找正确,CopyFile错误。同志们异口同声地说,UAC吧?没错,就是UAC这个玩意,Win 7上默认编译的程序,都是Invoker 的权限,而要向C盘写入东西,需要时Administratory的权限,于是乎问度娘之后,找到了解决方法,编译程序时,将工程Property中的Linker 下的manifest 项中 UAC Execution Level 中,选择 requireAdministrator 选项。

说了这么多,其实最简单的方法是:关掉Win 7的UAC,彻底解决问题(这样会在测试的时候碰到一堆问题),关闭方法:开始 -> 点击头像 -> "更改用户账户控制设置" ->将 滑动块拉到最底端,重启计算机即可。

360安全卫士还没捣乱呢是吧?别着急,上面即时关掉了UAC,也不好使,抓包程序启动时,仍然无法通过CopyFile将解密文件复制到 微Q目录,返回值False,GetLastError() 返回 5 (没有权限)。你大爷的,一个微Q,有个球权限啊。手动复制,成功;使用CMD,copy 命令,没有权限。这尼玛是为什么呢?各种折腾,很少人碰到 CopyFile的GetLastError返回5的问题啊。

各种纠结,纠结了一天之后,猛然想到了安全卫士 有一个 什么“文件系统防护”,退出360安全卫士,再启动软件,瞬间泪奔了!见到亲人的感觉。尼玛,坑爹也不带这样的。

不能总关着360安全卫士吧,怎么解决呢??关掉卫士的 文件系统防护功能,复制完文件,再开启? 但是 360将数据写到哪里了呢,配置文件?明显360的文件是碰不得的(人家不会让动)。写入注册表?翻一翻那个安全防护中心,文件系统防护下面,就有一个注册表防护,注册表也是修改不了的吧?

到最后基本崩溃了。


后记:

1. 手动复制到 微Q目录成功,而 CMD的copy 命令不行。这个其实是 Explorer进程可以进行复制,说明是人操作的,而copy命令会另外启动进程,进行复制,这是病毒或木马的行为,因此被 360拦截了。同理我们的抓包程序。

2. 还有一个没有试验,因为懒得做那个安装包,使用安装包不知道是否可以将 解密程序 在安装时复制到微Q目录。

0 0
原创粉丝点击