이 영역을 누르면 첫 페이지로 이동
웬디의 기묘한 이야기 블로그의 첫 페이지로 이동

웬디의 기묘한 이야기

페이지 맨 위로 올라가기

웬디의 기묘한 이야기

C/C++ Windows Hooking 개발자의 블로그 입니다! 이곳은 개발 외에도 저의 취미들이 공유되는 기묘한 이야기가 펼쳐집니다.

[C/C++] 윈도우 후킹을 하기 전에 알아야 할 DLL Main에서 하면 안되는 5가지 작업

  • 2019.07.16 23:48
  • ⌨ DEVELOPMENT/WIndows Hooking
반응형

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

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [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
다른 글 더 둘러보기

정보

웬디의 기묘한 이야기 블로그의 첫 페이지로 이동

웬디의 기묘한 이야기

  • 웬디의 기묘한 이야기의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록
  • 이야기

카테고리

  • 분류 전체보기 (204)
    • MY STORY (2)
    • 📸 WALKING WITH YOU (85)
      • 아이슬란드 신혼여행 이야기 (14)
      • 대한민국 구석구석 (62)
      • CONTAX N1 + T* 28-80mm (4)
      • SAMSUNG NX3000 (1)
      • 어느 멋진 날 (4)
    • ⌨ DEVELOPMENT (80)
      • BOOK:Review (1)
      • AI (13)
      • C++ (26)
      • Python (10)
      • WIndows Hooking (9)
      • Windows Kernel (3)
      • Design Pattern (3)
      • Debugging (9)
      • Tools (0)
      • Project (1)
      • Android (1)
      • 상업용 무료폰트 (4)
    • OS (4)
      • News (0)
      • Windows 일반 (4)
    • 모바일 (2)
      • 모바일 게임 (2)
    • 멘사 퍼즐 (9)
    • 생활 꿀 TIP (7)
      • 건강 (3)
      • 일상 (2)
    • 물생활 (8)
      • 골든볼 라미네지 롱핀 (8)
    • IT 기기 (2)
    • BLOG (4)
      • TISTORY BLOG TIP (3)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • c
  • 해외여행
  • 신혼여행
  • c++
  • 아이슬란드
  • AI
  • windbg
  • 카페

나의 외부 링크

  • kernel undocument api
  • 지구 관찰자의 일기
  • 지구와 지구곰

정보

WENDYS의 웬디의 기묘한 이야기

웬디의 기묘한 이야기

WENDYS

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © WENDYS. Designed by Fraccino.

티스토리툴바