2010.05.30 13:20 WarGame


다음은 악성코드 Flow의 일부분이다.
이 프로그램의 Thread Mutex는 무엇인가



Thread Mutex 라

그럼 먼저 CreateMutex 함수를 주의 깊게 봐야겠죠

다음은 CreateMutex 함수의 원형입니다




lpMutexAttributes : SECURITY_ATTRIBUTES 구조체 주소를 넘겨줍니다

자식 프로세스에 핸들을 넘겨줄때 입력해줍니다

NULL 이면 핸들을 넘겨주지 않구요

보통 NULL을 넣습니다



IntialOwner : 초기 상태의 뮤텍스 소유권을 지정합니다

1이면 작성 스레드의 소유가 되며 ,Non-Signal 상태가 됩니다

0이면 소유권 지정을 하지 않고, Signal 상태가 됩니다

그러니까 , 스레드에 소유되고 있는 경우는 Non-Signal 상태.

그렇지 않은 경우는 Signal 상태가 된다는 거죠

이때 기존 뮤텍스에 대해서 소유권을 가지려면, 대기 함수 등을 쓰는데요

Ex) WaitForSingleObject , WaitForMultiObjects

이 함수들은 뮤텍스가 Signal 상태가 될떄까지 대기합니다



lpName : 뮤텍스 오브젝트를 식별하는 이름입니다



Flow를 보시면 CreateMutex 는 초반에 한번

분기점을 지나 오른쪽에서 다시 한번 호출하는 것을 볼 수 있습니다

첫번째 경우는




보시면 알겠지만 CreateMutex 이후에 GetLastError 를 호출하여

값을 0xB7과 비교하는 것을 볼 수 있는데요

이를 System Error Code 와 비교해보시면




이미 생성된 것인가를 비교하는 루틴임을 확인 할 수 있습니다

즉, 위 CreateMutex는 프로그램의 다중 실행을 방지하기 위한 것임을 알 수 있죠

문제에서 원하는 답변은 Thread Mutex 니까, 아마 후자의 CreateMutex를 보면 되겠죠

2번째 CreateMutex의 이름을 확인해보시면 답이 나옵니다 :D

Posted by LinkC

블로그 이미지
LinkC

태그목록

Tistory Cumulus Flash tag cloud by BLUEnLIVE requires Flash Player 9 or better.

공지사항

Yesterday48
Today12
Total328,654

달력

 « |  » 2019.5
      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  

최근에 받은 트랙백

글 보관함


. .