LocalSecurityAuuthority.au3 的权限问题 请问这段代码如何逆向
; 防止文件删除; 拒绝除SYSTEM外所有用户的访问,并设置文件拥有者为非当前用户。
#include <LocalSecurityAuthority.au3>
; 提升本进程至系统级权限。
If $CmdLine = 0 or $CmdLine <> "-System" Then
If @Compiled Then
$sApp = @ScriptFullPath
$sArg = " -System"
Else
$sApp = @AutoItExe
$sArg = " " & FileGetShortName(@ScriptFullPath) & " -System"
EndIf
_CreateProcessAsSystem($sApp, $sArg, "Winlogon.exe")
Exit
EndIf
If Not FileExists("Test2.txt") Then Run(@ComSpec & " /c echo Delete Me>Test2.txt", "", 0)
Do ; Why?
Until FileExists("Test2.txt")
; 启用RESTORE权限,(设置文件拥有者所需)。
Dim $aPriv = [[$SE_RESTORE_NAME, 2]]
$hToken = _OpenProcessToken(@AutoItPid)
_AdjustTokenPrivileges($hToken, $aPriv)
_CloseHandle($hToken)
; 设置拥有者为Local Service,也可以是Network Service或者ANONYMOUS LOGON。
; 当某文件有访问控制列表但访问控制列表中无任何条目,或不为当前用户启用访问权限时,系统拒绝任何/当前用户的任何访问。此时只有拥有者才能重新设置其访问权限。此处选Local Service 或Network Service为拥有者是因为在管理员用户或普通用户下,创建LocalService或NetworkService级别的进程是很不容易实现的,就算能够创建,这两级别的进程也没有任何的访问权限。
_SetFileSecurityOwner("Test2.txt", "Local Service")
FileSetAttrib("Test2.txt", "+R") ; 加只读属性
;Msgbox(0, '', FileDelete("Test2.txt"))
; 只允许SYSTEM用户的所有访问,其他一概拒绝。
Dim $aAce = [["SYSTEM", $GENERIC_ALL, 1, 0]]
_SetFileSecurityDacl("Test2.txt", $aAce)
Msgbox(0, '完成', '测试是否能够删除')
; 缺点:防删除的文件必须位于NTFS文件系统中。相对于方案一,此法比较容易破解(也是优点?)。
; 优点:禁止除SYSTEM用户外的所有访问,长期有效(也是缺点?)。请问这段代码如何逆向 可以删除!?
页:
[1]