프로그래밍

MinHook으로 API 후킹 간단하게 하기[1]

ferretsecu 2017. 12. 8. 17:43

후킹하는 방법은 구글에서 검색하면 많이 찾을 수 있다.(대표적으로 http://reversecore.com/)

그런데 실제로 하기 어렵기도 하고, 64bit일 경우 안되는 경우가 있는데, 이럴 때 간편하게 할 수 있는 라이브러리가 있다.

바로 MinHook인데, 이 것을 사용하면 쉽게 후킹할 수 있다.

컴파일 환경은 다음과 같다.

OS 

 Windows 10

IDE

 Visual Studio Community 2017 15.4.0



1) 라이브러리 파일(lib) 빌드하기

[그림 1-1]

https://www.codeproject.com/Articles/44326/MinHook-The-Minimalistic-x-x-API-Hooking-Libra

위에 있는 링크로 가면 [그림 1-1]와 같은 메뉴를 볼 수 있는데, Download Source (v1.3.3)을 받는다.



[그림 1-2]

[그림 1-3]

파일을 받고, 압축을 푼 후,  ...\build\VC14 디렉토리에 가서 MinHookVC14.sln을 실행한다.
실행하면 libMinHook, MinHook 프로젝트가 있다. libMinHook 프로젝트를 선택하고 [그림 1-2]처럼 자신이 원하는 것으로바꾼다. 위에 경우에는 Release, x64로 선택했다. [그림 1-3]을 보면 상단에 구성과 플랫폼이 있는데, 자신이 선택한 것으로 바꾼다. 왼쪽에 있는 libMinHook 프로젝트를 우클릭해서 속성 메뉴로 들어가고 [그림 1-3]처럼 런타임 라이브러리 설정을 바꾼다. 그 후 libMinHook 프로젝트를 우클릭하고 빌드한다. 그러면 출력창에 ..\libMinHook.x64.lib 파일이 생성됐다고 나올 것이다. 

압축을 푼 디렉토리에 가면 ...\include 디렉토리가 있는데, 이 곳에 MinHook.h이란 헤더파일이 있을 것이다. 위에서 만든 lib 파일과 이 헤더파일을 자신이 원하는 디렉토리에 옮긴다. 



2) 프로젝트 생성하기


[그림 2-1]

[그림 2-1]과 같은 프로젝트를 생성한다.


[그림 2-2]

프로젝트를 우클릭한 후에 속성으로 들어가면 [그림 2-2]와 같이 나온다. 위에 구성과 플랫폼이 있는데 꼭 lib를 빌드했던과 똑같이 환경을 바꿔야한다. 예를 들어 lib를 빌드했을 때 Release, x64로 빌드했으면 똑같이 이곳에도 맞춰줘야 한다. 이 곳에서 수정해야할 것은 포함 디렉터리, 라이브러리 디렉터리이다. 위에서 빌드했던 lib파일과 헤더파일을 자신이 원하는 곳에 두고, 포함 디렉토리에 헤더파일이 있는 디렉토리를 추가하고, 라이브러리 디렉토리는 lib가 있는 디렉토리를 추가한다.


위에 있는 소스를 복사하고 소스파일 폴더에 cpp파일을 생성한 후 붙여넣고 실행한다.

5번째줄과 7번째줄에 있는 파일이름은 위에서 만든 lib 파일 이름과 같아야한다.

64비트로 빌드하려면 5번째줄을 32비트로 빌드하려면 7번째 줄을 수정하면 된다.



[그림 2-3]

빌드에 이상없이 실행 됐으면 [그림 2-3]과 같은 화면이 뜰 것이다. 처음엔 Hooked! 메시지 박스가 뜨고 두번째는 Not hooked...라는 메시지 박스가 뜬다. 다음은 어떻게 원하는 함수를 후킹하는지 알아본다.


출처 : https://www.codeproject.com/Articles/44326/MinHook-The-Minimalistic-x-x-API-Hooking-Libra