lele9013 发表于 2010-7-31 15:54:53

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]
查看完整版本: LocalSecurityAuuthority.au3 的权限问题 请问这段代码如何逆向