编程禁止Windows文件保护

这里要用到一个未公开的API——SfcFileException,其声明如下:

代码:
DWORD WINAPI SfcFileException(DWORD dwUnknown0, PWCHAR pwszFile, DWORD dwUnknown1); 

参数说明: dwUnknown0 未知,设为0 
pwszFile 文件名 
dwUnknown1 未知,设为-1 

从参数可以看出SfcFileException只能对单个文件禁止Windows文件保护,注意pwszFile参数是UNICODE字符。函数成功返回 0,失败返回1(一般是文件不受Windows文件保护保护)。在Windows XP里SfcFileException位于SFC_OS.DLL中,没有被导出函数名,只导出了序号,序号为5。下面看代码:

代码:
.586
.model flat,stdcall
option casemap:none

include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc

includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib

include \masm32\macros\macros.asm
include \masm32\macros\ucmacros.asm

ProtoDef    typedef proto :dword,:dword,:dword
lpProc        typedef ptr ProtoDef

.data
    WSTR szFile,"C:\Windows\Explorer.exe"
    
.data?
    SfcFileException    lpProc    ?

.code
Main proc
    
    invoke LoadLibrary,SADD('SFC_OS.DLL')
    invoke GetProcAddress,eax,5
    mov SfcFileException,eax
    invoke SfcFileException,0,offset szFile,-1
    .if eax
        invoke MessageBox,NULL,SADD('Err'),SADD('Err'),MB_OK
    .else
        invoke MessageBox,NULL,SADD('OK'),SADD('OK'),MB_OK
    .endif
    ret
Main endp
end Main 

代码很简单,就不多说。

参考文献:

《Hacking Windows File Protection》——http://www.bitsum.com/aboutwfp.asp
里面有些不错的东西,建议看一下,英文的。
 
注意:程序需要开启调试权限!



[本日志由 JiaJia 于 2007-10-21 11:31 AM 编辑]
文章来自: 未知
引用通告: 查看所有引用 | 我要引用此文章
Tags:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.