[C/C++] 윈도우 후킹을 하기 전에 알아야 할 DLL Main에서 하면 안되는 5가지 작업
반응형
WIndows Message Hooking 하기에 앞서 DLL Main에서 하면 안 되는 작업
최근 주력 업무 및 시스템 분석을 하게 되면서 DLL Main 에서 몇 가지 동작들에 의해서 문제가 발생한 적이 많이 있어서 정확하게 정리를 했습니다.
후킹을 하기위해 DLL을 로드했을 때 보장되어있는 상황은 Kernel32.dll 이 로드되어있다는 보장
외에는 보장된 상황이 없습니다.
그렇다면 어떠한 상황들에서 어떠한 문제가 생길까요??
가장 큰 문제는 해당 DLL에 데드락(Dead Lock)
이 걸리게 되어 더 이상 흐림이 진행되지 못하여 프로그램이 실행되지 못하는 상황이 발생할 수 있습니다.
주의사항
- LoadLibrary, LoadLibraryEx 등을 호출하게되면 데드락 또는 크래시를 유발할 수 있습니다.
- CoCreateInstanceEx를 사용하여 COM Thread를 초기화하는 경우 특정 상황에서 LoadLibraryEx가 호출될 수 있습니다.
- 다른 스레드와의 동기화 처리는 데드락을 유발할 수 있습니다.
- 로더 락을 획득하려는 코드가 가지고있는 동기화 오브젝트를 획득하게 되면 데드락을 유발할 수 있습니다.
- CreateProcess 프로세스를 새로 생성하는 경우 다른 DLL을 로드할 수 있습니다.
가장 좋은건 DLL Main에선 깔끔하게 비워두는 것이 좋습니다.
하지만 메시지 후킹을 넘어 API 후킹을 하게되면 DLL Main 타이밍에 처리해야 할 일들이 생기기 때문에 여러 가지 상황에 주의하여 개발을 해야 합니다.
반응형
'⌨ DEVELOPMENT > WIndows Hooking' 카테고리의 다른 글
[C++] 최고의 API Hooking Library MS Detours. (1) | 2019.12.07 |
---|---|
[Hooking] dll injection을 이용하여 다른 프로세스에 dll 로드하기 (0) | 2019.11.16 |
[C/C++] 키보드 메시지 후킹을 이용한 키로거 만들기 (6) | 2019.07.27 |
[C/C++] 윈도우 마우스 후킹으로 제스처 인식 프로그램 만들기 (마무리) (2) | 2019.07.25 |
[C/C++] 윈도우 마우스 후킹으로 제스처 인식 프로그램 만들기 (마우스 이동 방향 및 각도 구하기) (0) | 2019.07.23 |
[C/C++] 윈도우 마우스 후킹으로 제스처 인식 프로그램 만들기 (마우스 이동거리 계산하기) (2) | 2019.07.23 |
[C/C++] 윈도우 메시지 후킹 마우스를 지배하는자 (windows mouse message hooking) (1) | 2019.07.21 |
[C/C++] 윈도우 메시지 가로채기 기법 (windows message hooking) (0) | 2019.07.14 |
댓글
이 글 공유하기
다른 글
-
[C/C++] 윈도우 마우스 후킹으로 제스처 인식 프로그램 만들기 (마우스 이동 방향 및 각도 구하기)
[C/C++] 윈도우 마우스 후킹으로 제스처 인식 프로그램 만들기 (마우스 이동 방향 및 각도 구하기)
2019.07.23 -
[C/C++] 윈도우 마우스 후킹으로 제스처 인식 프로그램 만들기 (마우스 이동거리 계산하기)
[C/C++] 윈도우 마우스 후킹으로 제스처 인식 프로그램 만들기 (마우스 이동거리 계산하기)
2019.07.23 -
[C/C++] 윈도우 메시지 후킹 마우스를 지배하는자 (windows mouse message hooking)
[C/C++] 윈도우 메시지 후킹 마우스를 지배하는자 (windows mouse message hooking)
2019.07.21 -
[C/C++] 윈도우 메시지 가로채기 기법 (windows message hooking)
[C/C++] 윈도우 메시지 가로채기 기법 (windows message hooking)
2019.07.14