APC 유저 프로그램 그리고 시스템 코드가 특정 스레드의 컨텍스트에서 실행되는 방법을 제공하는 인터럽트이다. APC 에는 커널 모드, 유저 모드 두 종류가 있다. 커널모드 APC 는 대상 스레드로부터 동의 없이 인터럽트하고 프로시저를 실행한다. 반면에 유저모드 APC 는 승인을 필요로한다. APC 대기열은 스레드에 한정되어 있다. 즉 스레드의 실행은 즉슨 APC의 실행이다. ntoskernel.exe 는 커널 모드 APC 들을 사용해서 운영체제 작업이 특정 스레드 컨텍스트에 있는 주소 공간 내에서 완료 되도록 수행한다. 추후 추가...
커널은 KPCR 이라는 데이터 구조체를 사용한다. 그리고 KPCR에 프로세서 한정적 데이터르 저장한다. KPCR은 IDT, RSS(작업 상태 세그먼트), GDT(글로벌 디스크립터 테이블) 같은 기본정보를 담고 있다. 또한 ACPI 드라이버와 HAL 같은 모듈과 공유하는 인터럽트 컨트롤러 상태를 담고 있다. KPCR 위치 32BIT - KPCR이 FS레지스터에 위치한다. 64BIT - KPCR이 GS레지스터에 위치한다. 또한 KPCR은 KPRCB 라는 내장된 데이터 구조체를 담고 있다. 문서화되어 있는 KPCR와 다르게 KPRCB 는 문서화 되어있지 않다. 그리고 Ntoskrnl.exe 커널 코드에 의해서만 사용되는 비공개 구조체이다. KPRCB는 현재와 다음 스레드, 유휴 스레드, 프로세서를 위한 디스패..
system Call응용프로그램이 Kernel32.dll 의 API를 호출하면 해당 API는 Ntdll.dll 함수를 호출한다. 그리고 ntdll 은 서비스 시작을 위해 eax에 원하는 서비스 번호 edx에 서비스에 사용할 인자 값이 담긴 포인터를 넘겨준다. XP부터 SYSENTER를 사용해서 호출한다. SYSTENTER는 SYSENTER_EIP(MSR) 을 참조해 KiFastCallEntry로 진행한 다음 KiSystemService로 간다. 그리고 SYSEXIT 명령어를 통해 사용자 모드로 복귀한다. SYSENTER HOOKING XP 이상부터는 KiFastSystem Call에서 SYSENTER 명령을 실행해서 커널 영역으로 들어오는데 이 때 커널 영역으로 들어가는 만큼 esp, cs, ss 값이 ..
- Total
- Today
- Yesterday
- PNP 드라이버
- 변환
- module
- vmware cannot connect to the virtual machine
- breakpoint
- gdb intel
- DriverEntry
- 모듈
- 백도어
- VMware
- gdb intel 변환
- rootkit
- gdb명령어
- IRP
- gdb 명령어
- Intel
- 디바이스
- 리눅스 모듈
- 루트킷
- backdoor
- BP
- 드라이버
- 레거시 드라이버
- LKM
- GDB
- vmware 오류
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |