ファイルの所有者を変更してみる

タイトルの通りです。管理者権限で実行しないとうまく動作しません。ちょっと改造してレジストリキーの所有者の変更もできると思います。

タイトルの通りです。管理者権限で実行しないとうまく動作しません。ちょっと改造してレジストリキーの所有者の変更もできると思います。

  • タグ:
  • タグはありません
// by ake260
// ※
#uselib "advapi32.dll"
#func OpenProcessToken "OpenProcessToken" int, int, var
#func LookupPrivilegeValue "LookupPrivilegeValueA" int, sptr, var
#func AdjustTokenPrivileges "AdjustTokenPrivileges" int, int, var, int, int, int
#func LookupAccountName "LookupAccountNameA" sptr, str, sptr, var, str, var, var
#cfunc SetNamedSecurityInfo "SetNamedSecurityInfoA" str, int, int, sptr, sptr, sptr, sptr
#uselib "kernel32.dll"
#cfunc GetCurrentProcess "GetCurrentProcess"
#func Closehandle "CloseHandle" int
#func FormatMessage "FormatMessageA" int, int, int, int, var, int, int
#define FALSE 0
#define NULL 0
#define ERROR_SUCCESS $00000000
#define TOKEN_ADJUST_PRIVILEGES $00000020
#define SE_PRIVILEGE_ENABLED $00000002
#define SE_FILE_OBJECT 1
#define OWNER_SECURITY_INFORMATION $00000001
#define FORMAT_MESSAGE_FROM_SYSTEM $00001000
#define FORMAT_MESSAGE_IGNORE_INSERTS $00000200
sdim DomainName, 256
DomainNameSize = 256
// ()
AccountName = "Administrators"
// ()
file = "test_owner.txt"
// () ()
OpenProcessToken GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, hToken
LookupPrivilegeValue 0, "SeTakeOwnershipPrivilege", Luid
tp = 1, Luid, 0, SE_PRIVILEGE_ENABLED
AdjustTokenPrivileges hToken, FALSE, tp, 0, NULL, NULL
CloseHandle hToken
// SID
LookupAccountName 0, AccountName, NULL, SidSize, DomainName, DomainNameSize, snu
// LocalAlloc使sdim
sdim Sid, SidSize
// SID
LookupAccountName 0, AccountName, varptr(Sid), SidSize, DomainName, DomainNameSize, snu
//
ret = SetNamedSecurityInfo(file, SE_FILE_OBJECT, OWNER_SECURITY_INFORMATION, varptr(Sid), NULL, NULL, NULL)
if (ret == ERROR_SUCCESS) {
mes ""
} else {
mes ""
// ()
sdim ErrorBuf, 260
FormatMessage FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, ret, 0, ErrorBuf, 260, NULL
mes ErrorBuf
}
stop
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX