유저모드 프로그램이 디바이스를 쉽게 찾도록 디바이스 이름에 Symbolic Link 를 걸어 줍니다.
옵션사항이지만 다른 룻킷 코드를 볼때 이해에 도움이 되겠죠?
지난 시간에 디바이스 객체를 만들때처럼 UNICODE_STRING 구조체를 만들고
IoCreateSymbolicLink 함수를 호출하면 됩니다.
이제 아무 일도 하지 않았던 MyUnload 함수에서 IoDeleteSymbolicLink 와 IoDeleteDevice 를
호출해서 적절한 청소작업을 하도록 수정합니다.
[ 코드 해석 ]
줄번호를 기준으로 해석을 달아봅니다.
6 디바이스 SymblockLink 이름을 MyDevice 로 정합니다.
8 UNICODE_STRING 타입의 deviceLinkUnicodeString 변수 선언
20~21 RtlInitUnicodeString 함수를 호출하여 UNICODE_STRING 구조체를 만듭니다.
36~37 IoCreateSymbolicLink 함수를 호출하여 디바이스 링크를 만듭니다.
39~43 링크 생성 실패시 디바이스 객체를 청소
50~53 링크와 디바이스를 청소
반응형
댓글