본문 바로가기
리버싱

후킹이란?

by u0jin 2020. 3. 22.

후킹이란?


정보를 가로채고, 실행흐름을 변경하고, 원래와는 다른 기능을 제공하게 하는 기술


< 후킹 전체 프로세스 >


디스어셈블러/디버거를 이용하여 프로그램의 구조와 동작원리를 파악

버그수정 또는 기능 개선에 필요한 훅(Hook) 코드를 개발

실행파일과 프로세스 메모리를 자유롭게 조작하여 훅 코드 설치


Win32 를 후킹 하는 기술 = API 후킹

( User 모드 후킹 중 , 메시지 후킹과 함께 가장 널리 사용되는 기술)





API 란?

windows OS 는 사용자 애플리케이션이 시스템 자원(메모리, 파일, 네트워크 ,비디오, 사운드, 기타) 을 사용하고 싶을때

직접 접근할 수 있는 권한이 없다.

=> OS가 직접관리 함 = 안정성, 보안, 효율 기타 문제로 사용자 직접 접근 권한을 막아놨음

이럴때, 사용자는 시스템 커널에게 요청헤야함

이 요청방법이 MS 에서 제공한 Win32 API를 이용하는 것 (API는 OS제작사 에서 제공한다.)


즉 , API 없이는 어떤 의미있는 프로그램을 만들어 낼수 없다. (시스템 자원에 접근할수 없기때문이다.)




< Windows OS 프로세스 메모리 >


User Code

DLL(시스템 라이브러리)

kernel32.dll

Ntdll.dll

[SYSENTER / INT 2E]

Kernel


: 일반적인 시스템 자원을 사용하는 API는 kernel32.dll & ntdll.dll을 타고 내려가 결국 SYSENTER 명령을 통해 커널모드 진입





API 후킹 ?


Win32 API 호출을 중간에서 가로채서 제어권을 얻어내는 것.


< API 후킹의 이점 >


  • API 호출 전/후에 사용자의 훅코드 (Hook Code)를 실행시킬수 있다

  • API에 넘어온 파라미터 혹은 API함수의 리턴값을 엿보거나 조작할수 있다.

  • API 호출 자체를 취소시키거나 사용자 코드로 실행흐름을 변경시킬수 있다.


'리버싱' 카테고리의 다른 글

Debug  (0) 2020.03.22
API 후킹 방식  (0) 2020.03.22

댓글