Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- pfsense
- freebsd
- Windows
- XCP-ng
- 한글가이드
- elastic stack
- ansible
- Kibana
- hardening
- ssh key 배포
- application security
- miniconda
- endpoint security
- x-pack
- 로그인불가
- xe guest utilities
- proxycfg
- macos
- G-suite
- Kibana server is not ready yet
- Proxy
- docker
- centos 8
- 보안양파
- GitLab
- bash
- Elasticsearch
- ELASTIC
- PlayBook
Archives
- Today
- Total
선 밖에 선 자유인
오브젝트 핸들(HANDLE)을 이용한 커널 오브젝트 조작 함수 본문
커널 오브젝트(Kernel Object) :
Windows 운영체제가 프로세스, 스레드, 파일과 같은 리소스들을 원활히 관리하기 위해 필요한 정보가 저장된
메모리 블록.
오브젝트 핸들(HANDLE)을 이용한 커널 오브젝트 조작
- 프로세스 우선 순위 변경
- 프로세스의 핸들 정보 알아내기
- 해당 프로세스의 핸들을 얻어 Priority 값을 다음과 같이 변경 시킨다.
- PROCESS_INFORMATION 구조체
- CloseHandle 함수
ex)
BOOL SetPriorityClass( HANDLE hProcess, // 우선 순위를 변경할 프로세스의 핸들 전달 DWORD dwpriorityClass // 새롭게 적용할 우선순위 정보 전달 ); // if the function fails, the return value is zero.// if the function fails, the return value is zero.
- 프로세스의 핸들 정보 알아내기
HANDLE GetCurrentProcess( VOID );
- 해당 프로세스의 핸들을 얻어 Priority 값을 다음과 같이 변경 시킨다.
SetPriorityClass(GetCurrentProcess(), HIGH_PRIORITY_CLASS
- PROCESS_INFORMATION 구조체
typedef struct _PROCESS_INFORMATION { HANDLE hProcess; // 프로세스 핸들 HANDLE hThread; // 스레드 핸들 DWORD dwProcessId; // 프로세스 ID DWORD dwThreadId; // 스레드 ID } PROCESS_INFORMATION;새로운 프로세스 생성시 PROCESS_INFORMATION 구조체의 변수의 주소값을 인자로 전달하면서 PROCESS_ INFORMATION 구조체의 첫 번재 멤버 hProcess는 새로 생성된 프로세스의 핸들 정보로 채워진다. ** 프로세스 핸들은 프로세스의 커널 오브젝트를 가리키기 위한 것이고, 프로세스 ID는 커널 오브젝트가 아니 라 프로세스 자체를 구분짓기 위한 것이다.
- CloseHandle 함수
BOOL CloseHandle( HANDLE hObject ); If the funciotn succeeds the return value is nonzero.
ex)
#include#include #include int _tmain(int argc, TCHAR* argv[]) { STARTUPINFO si={0,}; PROCESS_INFORMATION pi; si.cb = sizeof(si); TCHAR command = _T("calc.exe"); CreateProcess( NULL, command, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi ); CloseHandle(pi.hProcess); return 0; } ** CloseHandle() 함수는 핸들을 닫는 기능(반환하는 기능)을 하는 역할을 한다. 커널 오브젝트 소멸이 아님.
Comments