Skip to content
컴퓨터잡담
2011.12.17 17:41

IE 훅킹 혹은 가로채기. 강좌

조회 수 13885 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

IE 훅킹 혹은 가로채기. 강좌

/*

윈도우 내 맘대로 다루기에서 잠깐 다루었지만 보충합니다.

 

먼저 강좌에서와 같이 오토핫키를 이용합니다.

http://www.autohotkey.com/

 

오토핫키는 사용해 보면 자바스크립트와 닮았습니다.

자바 스크립트가 웹페이지를 풍부하게 한다면 오토핫기키는 윈도우를 풍성하게 합니다.

 

오토핫키를 이용하여 오토핫키와 자바스크립트를 결합시켜 보겠습니다.

*/

 

#NoEnv
#Persistent
#SingleInstance, force 
DetectHiddenWindows, On
Process, Priority, , High  
SetBatchLines, -1
SetWinDelay, 0
SetControlDelay, 0

 

;창 생성 및 활성화 감시
Gui, +LastFound
DllCall( "RegisterShellHookWindow", UInt, WinExist() ) 
MsgNum := DllCall( "RegisterWindowMessage", Str, "SHELLHOOK" )
OnMessage( MsgNum, "ShellMessage" ) 
Return

 

ShellMessage( wParam,lParam ) 
{
  Global Url

  If wParam = 6
  {
    ControlGetText, Url, Edit1, ahk_id %lParam%
    If Url Contains http
    {
      Gosub, InjectScript
      ControlFocus, Internet Explorer_Server1, ahk_id %lParam%
    }

  }

}

 

;웹페이지 인터페이스하기
GetWebrouser()
{
  Static Msg := DllCall("RegisterWindowMessage", "str", "WM_HTML_GETOBJECT")
  SendMessage Msg, 0, 0, Internet Explorer_Server1, ahk_class IEFrame
  lResult := ErrorLevel
  DllCall("oleacc\ObjectFromLresult", "ptr", lResult
      , "ptr", GUID(IID_IHTMLDocument2,"{332C4425-26CB-11D0-B483-00C04FD90119}")
      , "ptr", 0, "ptr*", pdoc)
  ComObjError(false)
  Static IID_IHTMLWindow2 := "{332C4427-26CB-11D0-B483-00C04FD90119}"
  Pwin := ComObjQuery(pdoc, IID_IHTMLWindow2, IID_IHTMLWindow2)
  ObjRelease(pdoc)
  Static VT_DISPATCH := 9, F_OWNVALUE := 1
  Return ComObject(VT_DISPATCH, Pwin, F_OWNVALUE)
}

 

GUID(ByRef GUID, sGUID)
{
  VarSetCapacity(GUID, 16, 0)
  return DllCall("ole32\CLSIDFromString", "wstr", sGUID, "ptr", &GUID) >= 0 ? &GUID : ""
}

 

/*

ie유저 사용자를 위한 것입니다.

firefox 사용자라면 이미  웹페이지를 자유자재로 다룰 수 있으니 이런 과정이 필요없겠죠.

본인은 ie만 사용하므로 이런 과정이 필요합니다.
ie유저에게도 trixie ietoy ie7pro 등이 있어 웹페이지를 직접 다룰 수 있었지만 ie9를 사용하고부턴 전혀 사용해 본적이 없어 ie9에서도 적용되는지 여부는 모르겠습니다.

 

 

 

위의 코드를 짧게나마 설명합니다.

웹페이지 인터페이스하기 혹은 구하기는 함수입니다. 그래서 따로 독립시킨다음

#include 함수파일이름 해도 되고 오토핫키 디폴도 lib 파일에 저장해 놓으면 #include 필요없이 자동으로 읽어 들입니다.

 

 

9번째 줄 return까지 자동 실행영역입니다. 바로 위줄 onmessage에서 메세지 감시를 걸었습니다.

이 명령어에 의해서 조건 성립시 위 스크립트는 계속해서 함수 ShellMessage를 실행합니다.
이중에서  wParam = 6 조건 성립시 ie 인터페이스를 구해 사용자 것으로 만든 것입니다.
더 좋은 방법은 잘 모르겠습니다. 조건  wParam = 6으로 했을 경우 본인으로선 여태까지 불편이 없었으므로 현재까지도 사용합니다.

 

위 스크립트만으로 아무런 작업도 할 수 없거나 에러메시지가 발생할것입니다.
이유는 ShellMessage 함수내에 gosub,  InjectScript 명령줄에서 InjectScript을 만들지 않았기 때문입니다.

gosub 명령어는 함수와 유사합니다.

지정한 injectScript를 실행하고 돌아와서 다음 명령줄을 계속 이행합니다.

예시에서는 ControlFocus, Internet Explorer_Server1, ahk_id %lParam% 이 되겠네요.
이 명령어는 없어도 되는 것으로 무엇을 하냐면 간혹 어떤 웹사이트들이 로딩시 포커스를 자기 맘대로 주소표시줄이나 그런 것으로 하여 본인이 불편하여 항시 웹페이지에 포커스를 두도록 한 명령어입니다.

*/

 

;자 이제  InjectScript를 만듭니다.
;명령어와 주석(설명문)을 구분하기 위해 주석에는 오코핫키 주석처리 ;를 혹은 다중줄 /*주석*/덧붙이겠습니다.

 

InjectScript:

;여기와서 ie를 사용자 것으로 만들어 버립니다.

Pwin :=  GetWebrouser()


/*

Pwin이란 무엇이란 무엇이냐 하면 자바스크립트에서 윈도우 객체라고 생각하면 됩니다.

Pwin대신에 GetWebrouser()함수내에서 pweb구하여 pweb을 리턴시킬수도 있습니다.

여기서는 pwin이므로 pwin만 설명합니다

Pwin이 자바스크립트 윈도우 객체이므로 윈도우에 객체에 속한 모든 자바스크립트가 사용 가능하며 동일합니다.

http://www.w3schools.com/js/default.asp 자바스크립트 모든 것이 이용가능합니다.

단지 window 대신 Pwin이 쓰이는 것이죠.

window.alert("안녕");

대신

Pwin.alert("안녕")하면 되겠습니다.

*/

 

Pwin.alert("안녕")

Return ;여기서 리턴을 만나 최초 gosub으로 돌아가 그 다음줄을 실행해 나간다.

 

;자 여기까지 잘 따라 오셨다면 ie가 새로 실행되거나 혹은 로딩 될때마다  안녕이라는 메세지를 볼 수 있을 것입니다.

 


/*

이제 이 스크립트를 통해 다양한 웹페이지에 특화된 userscript를 사용하고 싶다면.

global Url이 이용하면 되겠습니다.

global 이 뭐냐면 전역변수선언입니다.

전역변수는 뭐냐면 변수를 어디에서나 사용할 수 있다는 말입니다.
오토핫키는 기본적으로 선언없이도 전역입니다. 함수내에서 사용하였기에 global 선언을 하여 전역화하였습니다.

웹브라우저가 새 페이지를 로딩할때마다 그 주소를 url이라는 변수에 담아 놓았습니다.

따라서 특정 페이지가 로딩될때 자바 스크립트를 삽입하고 싶으면 다음과 같이 하면 되겠습니다.

*/

 

 

Pwin := GetWebrouser()

If url contains daum.net

  {

  Pwin.alert(" 안녕 " )

  }

if Url Contains youtube.com/watch

  {

  Pwin.alert(" 나 압구정 날라리야")

  }

return

 

/*

몇가지 예시를 더 들자면.

Pwin.document.createStyleSheet().cssText := " [id^='nad_'] {dispay:none !important;}"

css삽입입니다.

css삽입 다른 방법

MyCSSFILE := "file:///D:/포터블 프로그램/MyCSSFILE.css"

Pwin.document.createStyleSheet(MyCSSFILE)

스크립트 언어 삽입

JSCODE =

(

  alert("이런 방법도 있어");

)

Pwin.execScript(JSCODE)

*/



로그인 후 댓글쓰기가 가능합니다.

?

List of Articles
번호 분류 제목 날짜 조회 수
863 컴퓨터잡담 호스트 / 서버운영자가 가볼만한 사이트 2011.06.17 5147
862 컴퓨터잡담 현재 쿠키,세션 값 전부 보기 2009.06.30 31764
861 Excel 현재 Excel 파일 이름을 셀에 삽입 2 2012.09.17 21349
860 컴퓨터잡담 해외속도테스트 사이트 speedtest.net 2 2012.01.08 5507
859 Visual C++ 함수와변수 14 2011.01.25 16259
858 컴퓨터잡담 한글프로그램 메뉴-모양-세로쓰기 2009.09.21 15408
857 컴퓨터잡담 한글입력이 안될때(how to hangul ...) file 2021.01.08 2468
856 컴퓨터잡담 한글입력이 안될때 의심해봐야 할 파일 imm32.dll 2011.12.14 5728
855 컴퓨터잡담 한글(hwp) msvcr71.dll 오류 해결방법 1 1 file 2013.01.22 6476
854 컴퓨터잡담 한글 HEX 코드표 1 5 2010.03.17 26748
853 Excel 한 셀에 있는 특정 문자의 갯수 구하기 3 2012.06.19 9835
852 컴퓨터잡담 하드 디스크 드라이브(HDD) 숨기기 3 file 2012.03.14 6773
851 컴퓨터잡담 하드 공유폴더 해제하기 1 2012.03.19 7928
850 컴퓨터잡담 핑테스트(PINGINFOVIEW)와 TCPVIEW file 2017.09.21 1975
849 컴퓨터잡담 핑테스트 프로그램 file 2015.09.01 853
848 컴퓨터잡담 프린터 내용 파일로 저장하기 doPDF 2012.10.17 4461
847 컴퓨터잡담 프록시 서버 만들기 4 2011.03.16 11927
846 컴퓨터잡담 프로세스 숨기고 복구하기 2010.01.21 6983
845 프로세스 프로세스 2 3 2011.02.07 309944
844 WindowsTip 패킷을 훔치는 ARP Spoofing 공격 탐지 툴과 방어방법 4 2013.01.05 12784
Board Pagination Prev 1 2 3 4 5 ... 44 Next
/ 44

http://urin79.com

우린친구블로그

sketchbook5, 스케치북5

sketchbook5, 스케치북5

나눔글꼴 설치 안내


이 PC에는 나눔글꼴이 설치되어 있지 않습니다.

이 사이트를 나눔글꼴로 보기 위해서는
나눔글꼴을 설치해야 합니다.

설치 취소