#include <windows.h>
#include <stdio.h>
#define STATUS_SUCCESS ((NTSTATUS)0x00000000L)
typedef LONG (WINAPI *RtlAdjustPrivilege)(DWORD, BOOL, INT, PBOOL);
int main()
{
//RtlAdjustPrivilegeはネイティブAPIなのでNtDllより取得
HMODULE hNtDll = NULL;
hNtDll = GetModuleHandle("ntdll.dll");
if(!hNtDll){
printf("GetModuleHandle failed. ErrorCode:0x%08X\n", GetLastError());
getchar();
return 0;
}
RtlAdjustPrivilege _RtlAdjustPrivilege = NULL;
_RtlAdjustPrivilege = (RtlAdjustPrivilege)GetProcAddress(hNtDll, "RtlAdjustPrivilege");
if(!_RtlAdjustPrivilege){
printf("GetProcAddresss failed. ErrorCode:0x%08X\n", GetLastError());
getchar();
return 0;
}
printf("RtlAdjustPrivilege Address:0x%08X\n\n", _RtlAdjustPrivilege);
BOOL bRet;
NTSTATUS NtStatus = STATUS_SUCCESS;
//権限の有効、無効を切り替え
//第二引数:TRUE = 有効 , FALSE = 無効
NtStatus = _RtlAdjustPrivilege(20L /*SeDebugPrivilege*/, TRUE, 0, &bRet);
if(NtStatus != STATUS_SUCCESS){
printf("RtlAdjustPrivilege failed. NtStatus:0x%08X\n", NtStatus);
getchar();
return 0;
}
getchar();
return 0;
}
Comments
0 B
|👍
/👎
0 B
|👍
/👎