C , C++/Kernel 3

Windows 수동으로 Driver Entry 찾기

Driver Entry 윈도우 드라이버를 리버스 엔지니어링할 때 우선적으로 살펴보아야 할 부분 중 하나는DriverEntry가 되겠다. DriverEntry는 드라이버가 로드될 때 처음 실행되는 함수이며항상 프로그램의 시작점이 되는 main 함수부터 살펴보듯이 커널 드라이버도 DriverEntry부터 살펴보면서 드라이버 초기화 과정과 주요 핸들러 등록 (dispatch table) , 드라이버가 어떤 기능을 하는지, 어떤 IOCTL 코드나 함수 포인터를 설정하는지 확인할 수 있다. 악성 드라이버의 경우 DriverEntry에서 보안 소프트웨어를 우회하거나 SSDT(System Service Descriptor Table) 후킹을 수행 할 수도 있기 때문에초기화 과정을 살펴볼 필요가 있다. 마침 동적으로 ..

C , C++/Kernel 2025.03.10

Hyper-V windbg 원격 디버깅 설정

Hyper-V에서 windbg 설정 VM으로 윈도우 커널 원격 디버깅을 하기 위해서 설정을 하려 하는데Hyper-V 2세대 가상머신에서는 설정 창에서 COM 포트 장치가 보이지 않는다. 검색을 해보니 Powershell 명령으로 COM 포트를 활성화시켜줘야 한다.   1. VM 종료기존 Virtual Machine을 종료한다   2. 호스트 PC 설정호스트 PC에서 Powershell 관리자 권한 실행하여 다음과 같은 명령어를 실행한다. 우선 가상 컴퓨터 보안 부팅 옵션을 해제해야한다. set-vmfirmware [가상 컴퓨터 이름] -enablesecureboot offset-vmfirmware Windows10 -enablesecureboot off    가상컴퓨터 파이프 주소를 지정하기 위해 다음 ..

C , C++/Kernel 2025.03.09

Windows Driver 개발환경 셋팅과 간단한 디버그 프린트 출력

Windows Driver?Windows 운영 체제와 하드웨어 간의 통신을 가능하게 하는 소프트웨어 구성요소이며운영 체제의 커널 모드에서 실행되며 하드웨어 장치의 기능을 제어하고 관리할 수 있다. 주로 하드웨어 장치의 작동을 제어하며 키보드, 마우스, 프린터  동작을 제어하는각각의 드라이버들이 시스템에 존재한다. 운영체제와 하드웨어 간의 인터페이스를 제공하므로 응용 프로그램이 하드웨어를 직접 제어하지 않고운영체제를 통해 간접적으로 제어할 수 있다. 입출력 (I/O) 요청을 처리하여 운영 체제와 하드웨어 간의 데이터 전송을 관리한다.일반적으로. sys 확장자를 가진다.  Driver 개발 시 고려 사항드라이버는 커널 모드에서 실행되므로 오류가 발생하면 시스템 전체가불안정해질 수 있으므로 철저한 테스트와 디..

C , C++/Kernel 2024.07.02