power-girl0-0

Hooking(후킹)이란? 본문

언어/Android

Hooking(후킹)이란?

power-girl0-0 2020. 5. 21. 19:08
728x90

안녕하세요-!!

오늘은 hooking에 대해서 알아보도록 할거예요-!!

첫시작인만큼 활기차게 해보아요><

 


Hooking(후킹) 이란?

운영체제나 응용 소프트웨어 등의 각종 컴퓨터 프로그램에서 소프트웨어 구성 요소 간에 발생하는 함수 호출, 메시지, 이벤트 등을 중간에서 바꾸거나 가로채는 명령, 방법, 기술이나 행위를 말합니다.
[참고 : 위키 백과]

* 간섭된 함수 호출, 이벤트, 메시지를 처리하는 코드를 '후크'라고 부릅니다.  [ ' 갈고리로 중간을 낚는다. ' ]


결론적으로 후킹은 '갈고리처럼 특정 함수 코드를 가로채서 원하는 행위를 한 후 원래의 코드로 돌려주는 기법'을 뜻합니다-!!

따라서 후킹은 다양한 변조가 가능한 기술로 해커들이 오래전부터 자주 사용하는 기법이라고 할 수 있습니다.


보통 후크는 소프트웨어가 이미 실행중일 때 삽입되지만,

후킹은 응용 프로그램이 실행되기도 전에 사용할 수 있는 전략입니다.

물리적 수정

응용 프로그램이 실행되기 전 리버스 엔지니어링 기법으로 실행 파일 또는 라이브러리 소스를 물리적으로 수정하여 후킹을 할 수 있습니다.

 

* 리버스 엔지니어링 기법이란?

이미 만들어진 시스템을 역으로 추적하여 처음의 문서나 설계 기법 등 자료를 얻어내는 일을 뜻합니다.

 

해당 기법

  • 함수 호출을 가로채서 모니터링 할 수 있습니다.
  • 완전히 다른 함수로 대체하는데 사용될 수 있습니다.

 

 

즉, 후킹은 앱이 실행되면서 특정 메소드에 hook을 걸어 본인 마음대로 메소드의 리턴값, 메소드의 내용을 패치할 수 있습니다.

 

 


대처방안으로는

 

래퍼 라이브러리(Wrapper library)를 통해 함수 호출을 차단하는 것입니다.

wrapper를 만들 때, 응용 프로그램을 로드하는 라이브러리는 원본 라이브러리와 동일한 기능을 가진 자신만의 라이브러를 만듭니다.

즉, 접근할 수 있는 모든 기능은 원본과 대체된 라이브러리와 모두 동일한 것입니다.

래퍼 라이브러리는 원래 라이브러리의 기능 중 하나를 호출하거나 논리의 완전히 새로운 설정으로 대체되도록 설계할 수 있습니다.


이상 hooking에 대한 글이었습니다.

그럼 다음시간에 봅시당-!! ☺

728x90
Comments