반응형 Security/Windows System26 커널진입(INT 2E,SYSENTER)-전체적인흐름 처음 페이징을 공부하게 된 계기는 바로 커널진입에 대해 공부하면서 였습니다. 커널진입중에 INT 2E를 사용하는 방법이 있는데 Native API를 Call하기 이전에 과정중 GDT라던지 Descriptor등에 대한 개념이 필요했기 때문입니다. 그렇다면 이번 글에서는 자세한 내용을 다루기에 앞서 커널진입의 전체적이 흐름에대해 파악하겠습니다. Windows 2000이전버전에서 커널진입을 위해서 INT 2E를 사용하여 IDT(Interrupt Descriptor Table)을 이용하여 접근하였습니다. 하지만 위에 그림에서 보시다시피 INT 2E의 경우 KiSystemService()를 사용하기 위한 중간과정이 필요합니다.때문에 Windows2000이후 SYSENTER를 이용하여 훨씬 더 Native함수호출이.. 2017. 6. 23. 커널진입(INT 2E,SYSENTER)-INT 2E(IDT : Interrupt Descriptor Table)편 이번시간에는 INT 2E로 Interrupt Descriptor Table(이하 IDT) 통한 커널진입에 대해 알아보겠습니다. 일단 전체적인 그림을 한번 보겠습니다. 보시다 시피 굉장히 복잡한 구조를 가지고 있습니다. 일단 순서 대로 설명을 진행하겠습니다. ※ INT 2E를 이용한 유저레벨에서 커널레벨 NativeAPI호출과정 ① 커널진입 이전에 Service 번호를 EAX에 저장, 유저레벨스택프레임 포인터를 EDX에 저장합니다. ② 명령어 INT 2E를 이용하여 인터럽트를 발생시킵니다. IDT의 인덱스2E를 확인하면 KiSystemService의 주소가 보이는 것을 볼 수 있습니다. ③ ntosknl내부에 있는 KiSystemService()루틴에 진입합니다. ④ 미리 저장된 서비스번호 EAX를 Sys.. 2017. 6. 23. ASLR(Address Space Layout Randomization) 끄기 /비활성화 Windows Vista이상버전에서는 메모리 보호를 위해 Load되는 PE의 Base주소를 Random하게 할당합니다. 근데 이 기법으로 인해 분석할경우에 VA계산이 어렵습니다.ㅠㅠ 그래서 이번 게시글에서는 ASLR을 끄는 방법을 알아보겠습니다.요점은 PE의 Optional Header의 DLL Characteristics에 있습니다. 빨간색 박스 부분에서 IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE 가 있습니다. DYNAMIC_BASE 말에서 알수있다시피 이 Flag값이 ASLR기능을 ON/OFF기능을 수행합니다. (위에 ImageBase가 0x1000000임을 기억합시다!!!) 현재 상태에서 올리디버거에 올려보겠습니다. ImageBase인 0x1000000과 무관하게 0xE60.. 2017. 6. 20. Segmentation과 Paging(3) - 페이징 ◈페이징 1) 정의 - Segmentation과정을 통해 변환된 선형주소 (Linear Address)를 통하여 물리 메로리에 접근하는 과정 2)물리메모리 접근과정 ① CR3레지스터를 통하여 PDE(Page Directory) 접근 - CR3의 PFN(Page Frame Nuber)를 통하여 PDE(Page Directory Entry)주소를 얻습니다. ※CR3설명 〮 PFN : 페이징기능은 실제 메모리를 4KByte(0x1000)단위로 나눈것 을 의미합니다 (ex : CR3의 PFN == 0x5 à 0x5000~0x5999의 물리적 메모리주소에 페이지 데릭토리를 가지는 것을 의미 ) 〮 Windows는 프로세스의 스위칭이 일어날때마다 CR3레지스터의 PFN을 바꾸어줌으로써 가상메모리를 다른 물리메모리에.. 2017. 6. 18. 이전 1 ··· 3 4 5 6 7 다음 반응형