본문 바로가기
반응형

Security/Windows System26

IRQL(Interrupt Request Level)-동기화방법(2) ※ 동기화가 필요한 이유 실행도중 메모리에 접근(임계영역) 및 수정하는데 있어서 인터럽트가 발생하여 해당 메모리값이 유효하지 않은 값이 되며 발생하는 오류들을 제거하기 위함. 말이 조금 어려울수 있으니 간단한 예를 통하여 설명하겠습니다. 예) DISPATCH_LEVEL(2)실행도중 인터럽트가 발생하여 DIRQLs(8)루틴실행시 발생하는 오류 설명을 하자면 MOV eax,0x8가 실행된 직후 인터럽트가 발생하여 DIRQLs(7)이실행되며 EAX값이 EDI의 주소값으로 바뀐다. 이후 다시 DISPATCH_LEVEL로 복귀하였을 때 유효하지 않은 EAX값을 파라미터로 넘기고 함수를 호출하기 때문에 에러가 발생하게 된다. ※동기화 문제 해결책 ①IRQL조작을 조작한다. KeRaiseIrql(),와 KeLower.. 2017. 8. 3.
IRQL(Interrupt Request Level)이란?(1) ※ IRQL(Interrupt Request Level)이란? 커널 스케줄러가 cpu사용을 인터럽트가 발생했을 때 실행 우선순위 ※ 인터럽트 기준 간단하게 우선순위 높은 놈이 들어올 경우 cpu실행을 양보한다. IRQL 우선순위와 설명은 다음의 그림과 같습니다. - IRQL 0 :PASSIVE_LEVEL 보통의 쓰레드 가장 낮은 우선순위를 갖기때문에 모든 인터럽트 레벨에 의해 선점당할 수 있습니다.. - IRQL 1 : APC_LEVEL(비동기 프로시져) 쓰레드와 관련된 인터럽트 루틴 - IRQL 2 : DISPATCH_LEVEL, IRQL이 3이상의 값을 가지는 루틴에서 우선순위가 낮은 루틴을 위해 현재 실행에 꼭 필요한 기능만을 수행하고 다른 기능들은 DPC(Deferred Procedure Call.. 2017. 8. 3.
DeviceObject란?(2) - DeviceTack편 이해를 돕기위해 http://jeep-shoes.tistory.com/29 DeviceObject글을 참고해주세요. ※디바이스 스택 - 하나의 장치관련된 Device들이 구성한 스택 ※PDO(Physical DeviceObject), FDO(Functional Device Object), FilDO(Filter Device Object) - PDO : 상위의 디바이스 스택에서 만들어진다. - FDO : 디바이스에서 만든 DeviceObject. - FilDO : 기능층을 기준으로 상/하위치에서 추가(?)적인 기능을 수행. ->이쪽에 관심이있어 공부를 시작했음. ※ DeiviceObject구성 - Device Object구조체의 Attached Devoce : 바로 위 상위 DeviceObject 주소(D.. 2017. 7. 30.
DeviceObject이란?(1) 루트킷 코드를 작성하며 정식적으로 드라이버 개발공부를 해야 한다고 생각들어 유투브 강의내용과 책에서 공부한 내용들을 간단하게 정리해봅니다. ※DeviceObject란? -IO manager에 의해 생성되는 구조체로써 해당 디바이스의 정보 (드라이버 오브젝트, 디바이스 스택 연결정보, IRP포인터등)를 담고 있다. => 단순히 운영체제에서 디바이스들과 드라이버들을 관리하기 위한 Object로 보임(제 생각입니다) -하나의 장치(HDD,USB)에는 여러 개의 DeviceObject로 이루어진 DeviceStack있다. ※Device Object & Device Stack전체그림 -장치(HDD,Print)에는 디바이스 스택이 존재하며 내용에는 DeviceObject들을 포함한다. DeviceObject는 IO.. 2017. 7. 30.
반응형