Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Hak istimewa debug memungkinkan seseorang untuk men-debug proses yang tidak dapat mereka akses. Misalnya, proses yang berjalan sebagai pengguna dengan hak istimewa debug yang diaktifkan pada tokennya dapat men-debug layanan yang berjalan sebagai sistem lokal.
Hak istimewa debug adalah pengaturan kebijakan keamanan yang memungkinkan pengguna melampirkan debugger ke proses atau ke kernel. Administrator dapat mengubah kebijakan keamanan untuk disertakan oleh grup pengguna atau menghapus fungsionalitas ini. Pengembang yang menelusuri kesalahan aplikasi mereka sendiri tidak memerlukan hak istimewa pengguna ini. Pengembang yang menelusuri kesalahan komponen sistem atau yang menelusuri kesalahan komponen jarak jauh akan memerlukan hak istimewa pengguna ini. Hak istimewa pengguna ini menyediakan akses lengkap ke komponen sistem operasi yang sensitif dan penting. Secara default, properti ini diaktifkan untuk pengguna dengan hak Administrator. Pengguna dengan hak istimewa Administrator dapat mengaktifkan properti ini untuk grup pengguna lain.
Memodifikasi Hak Istimewa Debug untuk Proses
Contoh kode berikut menunjukkan cara mengaktifkan hak istimewa debug dalam proses Anda. Ini memungkinkan Anda untuk melakukan debug pada proses lain yang seharusnya tidak dapat Anda akses.
//
// SetPrivilege enables/disables process token privilege.
//
BOOL SetPrivilege(HANDLE hToken, LPCTSTR lpszPrivilege, BOOL bEnablePrivilege)
{
LUID luid;
BOOL bRet=FALSE;
if (LookupPrivilegeValue(NULL, lpszPrivilege, &luid))
{
TOKEN_PRIVILEGES tp;
tp.PrivilegeCount=1;
tp.Privileges[0].Luid=luid;
tp.Privileges[0].Attributes=(bEnablePrivilege) ? SE_PRIVILEGE_ENABLED: 0;
//
// Enable the privilege or disable all privileges.
//
if (AdjustTokenPrivileges(hToken, FALSE, &tp, NULL, (PTOKEN_PRIVILEGES)NULL, (PDWORD)NULL))
{
//
// Check to see if you have proper access.
// You may get "ERROR_NOT_ALL_ASSIGNED".
//
bRet=(GetLastError() == ERROR_SUCCESS);
}
}
return bRet;
}
Contoh berikut menunjukkan cara menggunakan fungsi ini:
HANDLE hProcess=GetCurrentProcess();
HANDLE hToken;
if (OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES, &hToken))
{
SetPrivilege(hToken, SE_DEBUG_NAME, TRUE);
CloseHandle(hToken);
}