1. 함수의 원리
- USER 레벨
1) exe 에서 CreateFile() 호출(kernel32.dll 에 있음 - 시스템함수)
2) kernel32.dll 에서 내부적으로 NtCreateFile 호출( ntdll.dll 에 있음 )
3) ntdll.dll 에서 기계어 코드를 수행한다.
- 보호모드 , 특권 레벨
1) ZWCreateFile -> OS가 제공해주는 함수를 수행한다.
2) SSDT ( System Service Dispatch Table ) 정리 잘해 놓은 문서~
- Windows에서 파일을 열기 위해선 CreateFile을 호출해야 한다.
1) SSDT Hooking 을 이용하여 이러한 함수의 호출을 막게 된다면 파일을 생성을 막을 수 있다.
2) Native API는 도움말을 제공하지 않는다. ! 포함헤더와 사용법은 다른 자료들을 참고!
3) 디바이스 드라이버를 만들어야 SSDT를 후킹하여 접근할 수 있다.
4) 프로세스 열거와 같은 기능은 Native까지 내려가야 한다.( 자세한 정보 표현 )
- USER 레벨
1) exe 에서 CreateFile() 호출(kernel32.dll 에 있음 - 시스템함수)
2) kernel32.dll 에서 내부적으로 NtCreateFile 호출( ntdll.dll 에 있음 )
3) ntdll.dll 에서 기계어 코드를 수행한다.
mov eax 서비스번호 5
mov edx 스택주소
Int 2E // 2E핸들러는 인터럽트를 사용하여 kernel 모드로 온다. eax를 확인하여 함수 호출
mov edx 스택주소
Int 2E // 2E핸들러는 인터럽트를 사용하여 kernel 모드로 온다. eax를 확인하여 함수 호출
- 보호모드 , 특권 레벨
1) ZWCreateFile -> OS가 제공해주는 함수를 수행한다.
2) SSDT ( System Service Dispatch Table ) 정리 잘해 놓은 문서~
서비스 번호 | 함수 포인터 |
1 | |
2 | |
3 | |
4 | |
5 | ZWCreateFile |
- Windows에서 파일을 열기 위해선 CreateFile을 호출해야 한다.
1) SSDT Hooking 을 이용하여 이러한 함수의 호출을 막게 된다면 파일을 생성을 막을 수 있다.
2) Native API는 도움말을 제공하지 않는다. ! 포함헤더와 사용법은 다른 자료들을 참고!
3) 디바이스 드라이버를 만들어야 SSDT를 후킹하여 접근할 수 있다.
4) 프로세스 열거와 같은 기능은 Native까지 내려가야 한다.( 자세한 정보 표현 )
Tag | System