Mutex 뮤텍스 API 함수 정리
뮤텍스는 커널 모드 동기화 오브젝트 이다.
동기화를 위해 사용되는 API 함수들은 아래와 같다.
1) CreateMutex : 뮤텍스 생성 (핸들 획득)
2) OpenMutex : 뮤텍스 핸들 획득 (핸들 획득)
3) ReleaseMutex : 뮤텍스 반환
[사용]
WaitForSingleObject(hMutex, INFINITE); //뮤텍스 획득까지 기다림. ( 기다릴 뮤텍스의 핸들, 기다리는 시간 )
//사용//
ReleaseMutex(hMutex);
API 함수들을 하나씩 살펴 보자.
1) CreateMutex
Syntax
출처 : https://docs.microsoft.com/ko-kr/windows/desktop/api/synchapi/nf-synchapi-createmutexa
파라미터는 3개를 받는다.
lpMutexAttributes
: SECURITY_ATTRIBUTES 구조체 주소를 받는다. null 이라면 child process로 상속될 수 없다.
bInitialOwner
: 뮤텍스를 생성한 스레드가 첫번째 소유권(Ownership)을 가지는 지의 여부. 1(True) or 0(False)
lpName
: 뮤텍스 이름 지정. ( null 이라면 이름 없이 생성됨 )
- 길이는 MAX_PATH characters 만큼으로 제한된다.
- 이미 있는 이름으로 호출할 경우 MUTEX_ALL_ACCESS 권한을 요청하며, 첫 생성자가 아니므로 당연히 bInitialOwner 파라미터는 무시된다.
2) OpenMutex
현재 msdn 페이지 접근이 안돼서 생략.
3) ReleaseMutex
Syntax
출처 : https://docs.microsoft.com/ko-kr/windows/desktop/api/synchapi/nf-synchapi-releasemutex
파라미터는 1개를 받는다
ReleaseMutex
: CreateMutex 혹은 OpneMutex 함수로 얻은 뮤텍스 핸들 값을 인자로 받는다.
⚠︎ 호출하는 스레드가 해당 뮤텍스의 소유권(Ownership)을 가진 상태에서만 동작. (아니라면 fail)
'취약점 분석 > windbg' 카테고리의 다른 글
FS 레지스터를 알아보자. (0) | 2019.02.26 |
---|---|
(임계영역) CriticalSection API 함수 정리 (0) | 2019.02.23 |
windbg 포인터 참조하기 (0) | 2018.09.06 |
Trace 명령어 (0) | 2018.09.03 |
Windbg LFH 동작시킨 상태로 디버깅하는 방법 (0) | 2018.07.19 |