게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
파일 탐색기 특정 이벤트 후킹 질문 드립니다.
게시물ID : programmer_6137짧은주소 복사하기
작성자 : 을파소
추천 : 0
조회수 : 1330회
댓글수 : 4개
등록시간 : 2014/10/23 02:32:58
옵션
  • 본인삭제금지
http://i.imgur.com/ZIdvndC.png
외부이미지
 
윈도우 탐색기 안에 파일목록 보여주는 곳에서 엔터키를 눌렀을 때 발생하는 이벤트를 후킹하고싶습니다.
그 파일들 보여주는 뷰에선 엔터키가 눌리면 사진에 보이는 대로 WM_USER + 202 메시지가 포스트 됩니다.
요 메세지를 후킹해서 파일리스트 뷰에 돌려주지 않으려고 하는데 후킹보터 제대로 안되네요. ㅠ
 
WH_CALLWNDPROC을 후킹하는 후킹 dll 코드는 다음과 같습니다.
 
LRESULT CALLBACK MsgProcedure(int nCode, WPARAM wParam, LPARAM lParam)
{
 if( lParam )
 {
  CWPSTRUCT *cwp = (CWPSTRUCT *)lParam;
  if( cwp->message == WM_USER + 202 )
  {
   cwp->message = WM_USER + 4444;
  }
  else
  {
  }
 }
 return ::CallNextHookEx( g_hHook , nCode , wParam , lParam );
}
 
g_hHook은 HHOOK 핸들입니다.
 
nCode를 직접 비교하기도 했었는데 Stack Overflow에서 비슷한 삽질을 한 사람 얘길 들어보니 필요한 정보는 lParam에 WEP구조체 포인터로 넘어온다더군요.. 그래서 저렇게 했는데.. 아무일도 일어나지 않습니다. ㅠ_ㅠ
 
질문 1. WM_USER 이상의 메시지를 후킹하려면 WH_CALLWNDPROC을 후킹하는 것이 맞나요?
질문 2. 원하는 메시지를 낚았을 때 코드처럼 하는 거 말고 좀더 우아한 메시지 삭제 방법이 없을까요?
아무말이라도 좋으니 조언좀.. orz
전체 추천리스트 보기
2014-10-23 13:54:21추천 0
1. 스파이로 찾아서 답이 나와서 스스로 찾으시려는 건 좋으나
저도 과거 후킹 도전하다가 도저히 안되어서 그냥 남이 만든거 보고 했던 적이 있습니다.
코드구루나 코드 프로젝트 쪽에 windows explorer 후킹관련이나 파일시스템, 전체 유저메시지 해킹 예제가 많이 있습니다.
그걸 받아서 보시는게 빠를 것 같습니다. 이게 후킹이란 떄와 장소가 다르달까 답이 바로바로 나오는 경우는 어지간한 경험
아니고서야 무리더라구요.

아 그리고 WH_CALLWNDPROC 이거 후킹 하는거 아닌걸로 기억합니다. 아닌게 아니고 정확하게는 때와 장소가 다릅니다.
WH_ 라고 붙은 다양한 플래그를 확인해야 그 중에 원하는게 하나 나오던 걸로 기억합니다. ㅠ
원래 spy++ 에서 후킹보는 건 1:1로 확인안될 때가 많아서 (은근히) 노가다를 해야됩니다.
댓글 0개 ▲
2014-10-23 13:58:43추천 0
2. CASE 문을 자주 사용하긴 하지만 대체로 저런 구조입니다.  오히려 그 메세지의 계층이 깊숙하다면
자식노드 몇 개를 뒤져야하기 때문에 골치아픈 경우도 많죠. - 크리티컬하게 찾을 수 없을 때요.
저도 후킹 공부할 때
외국 개발자들이 짜논 코드를 가져와서 많이 사용했는데 windows에서 특정 프로그램 드래그하는 메세지 후킹하려고
for, if 계층이 10개넘은 적도 있습니다. 당시 실력이 부족했지만요 ㅠ 지금도 잘한다는 건 아닙니다.

그리고 같은 메세지단에서 계속 찾고 넘기고 하는게 반복되면 재귀함수를 만들어 쓰세요, 제가 보기론 이게 가장 깔끔한
코드라고 생각합니다.
댓글 0개 ▲
2014-10-24 20:15:19추천 0
겟메세지 후킹해 보세요
댓글 0개 ▲
2014-10-25 12:54:12추천 0
1 겟메시지도 아니더라구요..ㅠ
댓글 0개 ▲
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호