Q&A

  • 전역 후킹시...
안녕하세요.

전역 후킹 dll 을 만들어서 작업을 좀 하고 있습니다.

예를 들어 메모장에서 'A' 키를 누르면 'B' 키가 써지도록 하고 있는데요...

작동은 잘 됩니다. 훅의 해제도 잘되구요. 하지만 실행파일을 종료하면



메모장 : notepad.exe - 응용프로그램 오류

"0x0000 명령이 0x0000 명령을 참조했... 메모리는 read 될 수 없었습니다."



라는 오류가 납니다.

훅 dll 은 정적으로 로드했구요 데이터 전송을 위해 맵 파일 메모리를 사용했습니다.

음... 여러가지 테스트를 해 보았지만...

훅 해제등은 잘 되는데 아마도 문제가 있다면 키보드 훅을 제어하는 함수에서

제대로된 처리를 안하는 부분이 있는듯 합니다.

KeyHookProc 라는 함수는

   if nCode = HC_ACTION then begin
     {~~~}
      result := -1;
      exit;
   end else
   if nCode = HC_NOREMOVE then begin
      result := 0;
      exit;
   end else
   if nCode < 0 then begin
      result := CallNextHookEx(hhR^.hKey, nCode, wParam, lParam);
   end;

이런식으로 코딩을 했습니다.

전역 후킹시 문제가 발생될 소지가 있는 부분이나 조언을 듣고 싶습니다.

행복한 하루 되세요
1  COMMENTS
  • Profile
    타락천사 2007.04.27 15:14
    글쎄요... 후킹 코드는 별 문제가 없어 보입니다..

    다른 쪽의 문제 같군요...