< Native API Hooking Driver >


KeServiceDescriptorTable를 이용한 Native API Hooking Driver에 대해서 설명을 하겠습니다.


1. Hooking 방법

 1) 서비스 ID를 알아 내서, KeServiceDescriptorTable.ServiceTableBase[서비스 ID]위치로 가서

    해당 함수 포인터를 내가 만든 함수로 교체한다.

 2) 이 때, 중요한 것이 원래 호출하게 될 함수 포인터를 백업해 두어야 한다.

 3) Hooking하는 시점은 IOCTL code를 이용하여 특정 시점에 하는 방법도 있고 내 만든 Hooking

    Driver가 로드되는 시점부터 할 수도 있고, 이 방법에 경우 Unload되는 시점에 다시 백업 받아

    두었던 원래 함수 포인터로 복원을 시켜 주어야 한다.

 4) Windows 구조와 원리책의 소스 설명.

    - Windosw 버전에 맞는 해당 Hooking할 함수 서비스 ID 알아 오기(Windbg 이용)

      * Windows 2000 에서 NtCreateFile()함수의 서비스 ID : 0x20

      * Windows XP 에서 NtCreateFile()함수의 서비스 ID   : 0x25

    - IOCTL Code를 이용하여 특정 시점에만 Hooking되도록 하는 방법 이용.  

사용자 삽입 이미지


  

    - Hook_Service()함수에서 원래 NtCreateFile()함수의 포인터를 백업해 두고, 내가 만든 함수 포인

      터를 해당 위치에 등록을 시킴.

사용자 삽입 이미지

지금까지 NtCreateFile()함수에 대한 Hooking Driver에 대해서 간략하게 알아 보았다.

다양한 용도에 이용할 수가 있으니, 한번 활용에 보기 바란다.

[출처] Native API Hooking Driver|작성자 레오

Posted by 나비:D
:
BLOG main image
by 나비:D

공지사항

카테고리

분류 전체보기 (278)
Programming? (0)
---------------------------.. (0)
나비의삽질 (5)
Application (177)
SQL (51)
Web (27)
etc. (14)
Omnia (0)
---------------------------.. (0)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

달력

«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Total :
Today : Yesterday :