Notice
Recent Posts
Recent Comments
LuvSea
[MFC] 프로세스 접근 권한 얻어오기 본문
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
프로세스에 대한 정보를 읽어오는데 보호된 프로세스라서 읽어오지 못하는 경우가 있다.
그럴 경우에는 아래의 함수를 추가해주면 된다.
AdjustDebugPrivilege() 함수로 권한을 획득해주고, 핸들을 닫은 후에 RestorePrivilege() 함수로 권한을 반환해 주면 된다.
그럴 경우에는 아래의 함수를 추가해주면 된다.
CreateToolhelp32Snapshot() 같은 함수로 프로세스나 모듈을 열기전에,123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115BOOL·SetPrivilege(HANDLE·hToken,LPCTSTR·Privilege,·BOOL·bEnablePrivilege)····¬{····¬¬····TOKEN_PRIVILEGES····tp;···¬····LUID························luid;···¬····TOKEN_PRIVILEGES····tpPrevious;···¬····DWORD·cbPrevious····=sizeof(TOKEN_PRIVILEGES);···¬·······¬····if(FALSE·==·LookupPrivilegeValue(·NULL,·Privilege,·&luid·))···¬····{···¬········return·FALSE;···¬····}···¬·······¬····tp.PrivilegeCount···············=·1;···¬····tp.Privileges[0].Luid···········=·luid;···¬····tp.Privileges[0].Attributes···=·0;···¬·······¬····AdjustTokenPrivileges(hToken,·FALSE,·&tp,·sizeof(TOKEN_PRIVILEGES),·&tpPrevious,·&cbPrevious);···¬¬····if·(GetLastError()·!=·ERROR_SUCCESS)···¬····{···¬········return·FALSE;···¬····}···¬·······¬····tpPrevious.PrivilegeCount·······=·1;···¬····tpPrevious.Privileges[0].Luid···=·luid;···¬·······¬····if(bEnablePrivilege)···¬····{···¬········tpPrevious.Privileges[0].Attributes·=·tpPrevious.Privileges[0].Attributes·|·(SE_PRIVILEGE_ENABLED);···¬····}···¬····else··¬····{···¬········tpPrevious.Privileges[0].Attributes·=·tpPrevious.Privileges[0].Attributes·^···¬············(SE_PRIVILEGE_ENABLED·&···¬············tpPrevious.Privileges[0].Attributes);···¬····}···¬·······¬····AdjustTokenPrivileges(hToken,·FALSE,·&tpPrevious,·cbPrevious,·NULL,·NULL);···¬·······¬····if·(GetLastError()·!=·ERROR_SUCCESS)···¬····{···¬········return·FALSE;···¬····}···¬·······¬····return·TRUE;···¬}···¬··¬BOOL·AdjustDebugPrivilege()···¬{···¬····HANDLE·hToken;···¬····if(FALSE·==·OpenThreadToken(GetCurrentThread(),·TOKEN_ADJUST_PRIVILEGES·|·TOKEN_QUERY,·FALSE,·&hToken))···¬····{···¬········if·(GetLastError()·==·ERROR_NO_TOKEN)···¬········{···¬············if·(FALSE·==·ImpersonateSelf(SecurityImpersonation))···¬············{···¬················return·FALSE;···¬············}···¬···············¬············if(FALSE·==·OpenThreadToken(GetCurrentThread(),·TOKEN_ADJUST_PRIVILEGES·|·TOKEN_QUERY,·FALSE,·&hToken))···¬············{···¬················AfxMessageBox("OpenThreadToken·Error");···¬················return·FALSE;···¬············}···¬········}···¬···········¬········else··¬········{···¬············return·FALSE;···¬········}···¬···········¬····}···¬····SetPrivilege(hToken,·SE_DEBUG_NAME,·TRUE);···¬····if(hToken·!=·NULL)···¬····{···¬········CloseHandle(hToken);···¬····}···¬····return·TRUE;·······¬}···¬··¬BOOL·RestorePrivilege()···¬{···¬····HANDLE·hToken;···¬····if(FALSE·==·OpenThreadToken(GetCurrentThread(),·TOKEN_ADJUST_PRIVILEGES·|·TOKEN_QUERY,·FALSE,·&hToken))···¬····{···¬········if·(GetLastError()·==·ERROR_NO_TOKEN)···¬········{···¬············if·(FALSE·==·ImpersonateSelf(SecurityImpersonation))···¬············{···¬················return·FALSE;···¬············}···¬···············¬············if(FALSE·==·OpenThreadToken(GetCurrentThread(),·TOKEN_ADJUST_PRIVILEGES·|·TOKEN_QUERY,·FALSE,·&hToken))···¬············{···¬················AfxMessageBox("OpenThreadToken·Error");···¬················return·FALSE;···¬············}···¬········}···¬···········¬········else··¬········{···¬············return·FALSE;···¬········}···¬···········¬····}···¬·······¬····SetPrivilege(hToken,·SE_DEBUG_NAME,·FALSE);···¬····if(hToken·!=·NULL)···¬····{···¬········CloseHandle(hToken);···¬····}···¬····return·TRUE;···¬}··¬¶
AdjustDebugPrivilege() 함수로 권한을 획득해주고, 핸들을 닫은 후에 RestorePrivilege() 함수로 권한을 반환해 주면 된다.
'sTudy' 카테고리의 다른 글
[MFC 기초] 자동생성 클래스 분석 - CWinApp (0) | 2009.10.13 |
---|---|
[MFC 기초] AppWizard (0) | 2009.10.13 |
Tistory에 syntaxHighlighter 적용 (0) | 2009.10.06 |
VMWare에서 Window - 가상Window간 폴더 공유 (0) | 2009.10.06 |
[MFC] Register Hotkey 사용 (0) | 2009.09.24 |
Comments