Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #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;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement