본문 바로가기

CAT-Security/미분류

Callback(콜백 함수) 정리

정의 호출된 함수를 알려주어, 다른 프로그램 또는 다른 모듈에서 함수를 호출 하게 하는 방법 일반적으로 운영체제(OS)가 호출할 어플리케이션의 함수를 지정해 특정한 사건 또는 메시지가 발발 했을 때 호출되도록 지정 할 수 있다. 이런 함수를 콜백 함수라고 한다.

 

즉 사용자가 필요할 때 호출해서 쓰는 함수가 아닌 어떤 이벤트가 발생 했을 때 사용자에게 알려주는 역할을 하고 있다. 호출 되는 것 이다. 어떤 이벤트에 의해 해당 함수를 호출 하는 것 이다.

 

함수호출과 CallBack함수의 가장 큰 차이점은 제어권에 있다.

 

호출자가 -> 피호출자 호출 (일반적인 함수 흐름)

피호출자 -> 호출자 호출 (callback의 함수 흐름)

 

계속적으로 요청하는것과, 무슨일(이벤트)가 벌어졌을 때 요청되어지는것의 차이

마우스 클릭을 예로 들면은 왼쪽클릭을 했는지를 계속해서 확인하는 것(user 함수),

왼쪽 클릭이 되었을때 확인 되어지는것(callback 함수)

                                                                         Callback함수 사용방법

Dll에서 User Program의 함수를 쓰고 싶을 때 특정 파라메터를 가지고 User Program의 함수를 호출 하게 한다.

1.     Use Program 함수에서 함수1을 정의 한다.

2.     2 DLL에 있는 레지스터 콜백 함수에다가 이 함수의 인자를 넘겨주면은 callback이 등록된다.

3.     DLL함수에서는 전역변수 하나를 배정해서, 인자값을 포인터로 넣어 준다.

4.     그 뒤 callbackFunc를 실행하면 지정한 함수가 실행이 된다.




Callback함수의 인자값들은 훅 프로시저 마다 다르다.

훅 프로시저들은 글로벌과 로컬로 나뉘어지며, 둘다 가능한 것이 있고 아닌것들이 있다.



                                                       글로벌&로컬 가능                             글로벌만 가능

 

둘의 큰 차이점

글로벌 훅 : 글로벌 훅을 위해서는 훅 프로시저는 어플리케이션 영역이 아닌 DLL이 적재되는 영역에 있어야 한다.

로컬 훅 : 특정 프로세스만을 후킹하므로 어플리케이션 영역이든 DLL영역이든 별 상관이 없다.

 

 

 

 

 


 

출처 : Windows Message Hooking

http://blog.naver.com/i2proda?Redirect=Log&logNo=150019571374

'CAT-Security > 미분류' 카테고리의 다른 글

AsPack MUP 정리  (2) 2013.04.05
[api]모달과 모달리스의 차이  (0) 2013.03.25
Code injection (1) - Basic  (2) 2013.01.02
Python으로 레이싱 갤러리 사진 긁어 오기  (1) 2012.12.20
python 공부 자료  (0) 2012.12.20