2017년 1월 16일 월요일

API 후킹, WIN32 DLL라이브러리(API Hooking with MS Detours)



*윈도우 개발자용 API 후킹, WIN32 DLL라이브러리(API Hooking with MS Detours)
(Microsoft Research Detours v3 Professional)

Microsoft Research Detours v3 Professional은 x86, x64, IA64 컴퓨터에서 임의 Win32 함수를 이용하기 위한 라이브러리입니다. 이제 대상 함수에 대한 내부 메모리 코드를 다시 작성하여 Win32 함수를 인터셉트할 수 있습니다.

Detours는 x86, x64, IA64 시스템에서 임의 Win32 함수를 이용하기 위한 라이브러리입니다. Detours를 사용하는 경우 디스크가 아닌 내부 메모리에서 대상 함수의 코드를 수정하여 매우 세밀한 수준으로 바이너리 함수를 가로챌 수 있습니다.



-대상 함수에 대한 내부 메모리 코드를 다시 씁니다.
-기존 바이너리에 임의 데이터 세그먼트를 첨부합니다.
-코드를 사용하여 실행 중인 응용 프로그램의 기능을 확장합니다.
-또한 Detours 패키지에는 임의 DLL 및 데이터 세그먼트를 Windows 응용 프로그램 바이너리에 첨부하는 유틸리티가 포함되어 있습니다.
-DLL과 같은 Win32 또는 Windows 응용 프로그램 함수를 쉽게 가로챕니다.
-프로세스에서 매우 세밀한 수준으로 함수를 가로챕니다.
-X64 및 IA64 프로세서에서 64비트 코드를 지원합니다.


*MS Detours를 이용한 API후킹 예제 및 소스
(API Hooking with MS Detours) 
https://www.codeproject.com/articles/30140/api-hooking-with-ms-detours


*제품개발용(상업용) 라이센스  : .http://www.microsoft.com/msshop
(Microsoft Research Detours v3 Professional)





*API Hooking with Microsoft Detours
Microsoft Detours is a library which we can use to build our own DLL that serves as an API monitor when analyzing the results. The best thing about it is that it doesn’t require other frameworks as a dependency. The downside is that only x86 support is available for free; if we want to get x64 support, we have to buy it. Detours intercepts Windows API function calls by rewriting the same function that is already stored in memory. It can also attach arbitrary DLLs to any win32 binary.




Detours is most commonly used to intercept Win32 APIs calls within an application, such as to add debugging instrumentation. Interception code is applied dynamically at runtime. Detours replaces the first few instructions of the target function with an unconditional jump to the user-provided detour function. Instructions from the target function are placed in a trampoline. The address of the trampoline is placed in a target pointer. The detour function can either replace the target function or extend its semantics by invoking the target function as a subroutine through the target pointer to the trampoline.

The Detours library intercepts function calls at runtime, so we don’t need to replace the DLLs with the new ones, but we’re only modifying the memory of the process we would like to analyze.

[출처 : infosecinstitute.com]
http://resources.infosecinstitute.com/api-hooking-detours/




*MS Detours를 이용한 API후킹 예제 및 소스
(API Hooking with MS Detours) 
https://www.codeproject.com/articles/30140/api-hooking-with-ms-detours


*제품개발용(상업용) 라이센스  : .http://www.microsoft.com/msshop
(Microsoft Research Detours v3 Professional)