윈도우 아키텍쳐

- 사용자 프로세스: 사용자가 실행하는 응용 프로그램
- subsystem DLL: 사용자 프로세스에서 호출되는 API를 포함한 DLL
예) CreateFile()은 kernel32.dll에 포함되어있음 - NTDLL: 시스템 전체 DLL
user-kernel 전환을 생성하는 특수 DLL
네이티브 API or NTAPI라고도 함 - kernel: 드라이버 및 모듈을 호출해 작업을 완료함
부분적으로 C:/Windows/System32/ntoskrnl.exe에 일부 저장되기도 함
- 함수 호출 흐름
예) CreateFile을 호출한다면...
사용자 프로세스에서 CreateFile호출
subsystem DLL (kernel32.dll)에서 CreateFile API 호출
NTDLL을 통해
NtCreateFile 호출
이후 kernel모드로 진입하는 systemcall 실행
그리고 커널 드라이버와 모듈을 호출해 함수 실행 - 단, 유저 모드에서 네이티브 API (NTDLL API)를 직접 호출할 수도 있다.
윈도우의 메모리 관리

윈도우에서는 가상 메모리 - 물리 메모리로 매핑이 되어있다.
- 메모리 관리 간소화
실제 물리적 관리는 운영체제가 하고 프로그램은 신경 안씀. - 주소 공간 격리: 메모리에 간접 접근, 프로그램마다 메모리 분리 -> 보안성 좋음
(자세한 내용은 컴퓨터 구조 25, 컴퓨터 구조 26 참고)
페이지
가상 메모리는 4kb 청크의 페이지 단위로 관리된다
페이지 상태
- 사용 가능: 아직 요청되지 않은 영역
접근 시도 시 Segmentation Fault 발생 - 예약됨: 프로세스가 운영체제에 예약한 영역
실제 물리적 공간을 예약한 건 아님 - 커밋됨: 실제 물리적 공간을 할당
프로세스가 종료되면 할당 공간 해제
페이지 보호 옵션
페이지가 커밋되면 보호 옵션을 설정해줘야 한다
- PAGE_NOACCESS: 모든 접근 방지
- PAGE_EXECUTE_READWRITE: 읽기, 쓰기 활성화
- PAGE_READONLY: 읽기 전용
메모리
메모리 보호
- DEP: 페이지 보호 옵션이 PAGE_READONLY로 설정될 경우, 그 영역 내부에서 코드 실행 방지
- ASLR: 주소 공간 레이아웃 무작위화
기본 주소, 스택, 힙, 라이브러리 등 주요 데이터 영역의 주소를 무작위화 함
x86 VS x64 메모리 공간
| x86 | x64 | |
|---|---|---|
| 크기 | 4GB(0xFFFFFFFF) | 128TB(0xFFFFFFFFFFFFFFFF) |
윈도우 이미지
실행 파일이 메모리에 투영된 상태
즉, 파일 시스템의 데이터를 "실행 가능"한 형태로 가공해 "메모리"에 띄운 결과물
예) .exe와 같은 파일이 CPU가 당장 코드를 실행할 수 있는 상태가 됨 (메모리에 로드)
반응형
'악성코드와 백신 > 악성코드 개발일지' 카테고리의 다른 글
| [악성코드 개발](6)[페이로드 저장] (0) | 2026.03.06 |
|---|---|
| [악성코드 개발](5)[Windows process & thread] (0) | 2026.03.02 |
| [악성코드 개발](4)[DLL] (0) | 2026.02.27 |
| [악성코드 개발](3)[Windows API] (1) | 2026.02.26 |
| [악성코드 개발](1)[환경 구축] (0) | 2026.02.23 |