메모장 입니다2
Windows] 커널 데이터 IO 방식 본문
1.개요
-IRP 후킹을 이용한 키로거 제작중, 디바이스 오브젝트에 플레그값(DO_BUFFERED_IO)을 설정 안하니
블루스크린 오류가 발생하여서, 해당 속성값에 대한 정보를 찾게 됨.
2.방식
-쓰레드, 프로세스의 데이터 관련
1)Direct IO
2)Buffred IO
3)Neither IO(디폴트)
-DeviceIoControl 관련
>DeviceIoControl 함수로 전달되는 데이터 버퍼의 전달형식을 지정
>데이터 저장위치가 달라지기 때문에 중요.
1)METHOD_BUFFERED
>Buffred IO 방식으로 전달.
>입력: 모름 (참고 자료에는 associatedIrp.systembuffer라고 나와있으나, 실제로 테스트 결과 해당 버퍼로 전달시 유저모드에서 확인이 안됨.)
출력: irp->UserBuffer
2)METHOD_IN_DIRECT | METHOD_OUT_DIRECT
>Direct 방식.
//아직 안해봄.
3)METHOD_NEITHER
>Neither 방식.
>입력: StackLocation->Parameters.DeviceIoControl.Type3InputBuffer
출력: irp->UserBuffer
*입력: 유저 -> 커널 (out)/ 출력: 커널 -> 유저 (in)
*다른 방식에서의 버퍼공간에 접근할 경우, 윈도우가 멈춘다.((테스트 결과)
참고: http://ezbeat.tistory.com/341
*자세한 정리는, 추후에 관련 내용을 다룰 때에 하나씩 추가.
'Study > Programming' 카테고리의 다른 글
Windows] KeDelayExecutionThread (0) | 2017.09.05 |
---|---|
Windows] DeviceIoControl을 이용한 통신 (0) | 2017.09.01 |
Windows] DKOM - 1) 개요, 특징 (0) | 2017.08.29 |
Windows] IRP 콜백 함수 (0) | 2017.08.24 |
Windows] 드라이버 개발 - IRP 후킹 - 1) 테스트 (0) | 2017.08.24 |