앞에서 작성한 예제의 일부를 살펴봄
뭐했는지 기억안나면 보셈
https://boa9448.tistory.com/31
사기꾼을 위한 햄날먹 드라이버 개발 - 1
유저모드 치트는 커널모드 안티치트를 이길 수 없음 그 반대도 마찬가지임 이 이유 하나만으로 드라이버 작성을 배우는 이유는 충분함 Kernel Mode Driver, Empty를 선택한 뒤 프로젝트를 생성 프로젝
boa9448.tistory.com
살펴볼 코드는 다음과 같음
DriverEntry
드라이버가 로드되면 첫번째로 호출되는 함수임
드라이버 초기화를 담당함
드라이버가 필요한 전역변수를 할당하는 작업을 여기서 진행하면됨
파라미터는 WDM드라이버를 나타내는 DriverObject
레지스트리에서 드라이버의 경로를 나타내는 RegistryPath가 들어옴
RegistryPath는 필요시에 이 경로를 사용해서 필요한 파라미터나 데이터를 보관할 수 있음
이 함수에서 드라이버 루틴을 등록함
이 코드에서는 DriverUnload를 등록했음
이 함수의 리턴값이 성공과 관련된 리턴값이 아니라면 드라이버 서비스를 로드에 실패하게 된다
DriverUnload
드라이버가 메모리에서 제거될 떄 호출되는 함수
드라이버가 사용하던 리소스를 해제하는 작업을 여기서 진행하면됨
이 콜백이 등록되지 않는다면 드라이버를 언로드 할 수 없음
궁금하면 DriverEntry함수의
DriverObject->DriverUnload = DriverUnload;를 주석처리하고 실행해보셈
UNREFERENCED_PARAMETER
함수의 파라미터를 사용하지 않을 때 쓰는 매크로
실제 내용은 빈 매크로로 변환됨
UNREFERENCED_PARAMETER(param) -> param
함수의 파라미터를 선언해두고 사용하지 않는다면 에러가 뜨며 드라이버가 빌드되지 않음
사용하지 않는 파라미터는 제거하거나 이 매크로로 감싸주자
DbgPrintEx
디버그 출력을 하는 함수
DbgPrint와 다르게 필터와 레벨을 설정할 수 있다
이 글에서는 ERROR 레벨로 설정해서 다른 설정없이 출력을 볼 수 있도록 함
참고
https://learn.microsoft.com/en-us/windows-hardware/drivers/wdf/driverentry-for-kmdf-drivers
https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/nc-wdm-driver_unload
https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/nf-wdm-dbgprintex
https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/nf-wdm-dbgprint
끝
'날먹을 위한 몸부림 > Driver' 카테고리의 다른 글
사기꾼을 위한 햄날먹 드라이버 개발 - 4 (0) | 2023.01.14 |
---|---|
사기꾼을 위한 햄날먹 드라이버 개발 - 3 (0) | 2023.01.12 |
사기꾼을 위한 햄날먹 드라이버 개발 - 1 (4) | 2023.01.11 |
HamsterHide dll v0.1.0 (11) | 2022.08.02 |
디버그 필터 (0) | 2022.07.30 |