윈도우 실행파일의 생성과 실행과정

2025. 2. 17. 16:50·리버싱

개념 이해를 위한 용어 정리

DLL:
동적 링크 라이브러리, 여러 프로그램에서 동시에 사용할 수 있는 코드와 데이터를 포함하는 라이브러리

폰노이만 구조:

실행 파일이 평소에는 스토리지에, 실행 시 메모리에 매핑되고 CPU에 의해 실행됨. cpu는 기계어만 이해할 수 있다

 

윈도우 실행파일 생성 및 실행과정

 

 

 

위에서 말했듯이 실행파일은 원래는 스토리지에 저장되어 있다가 실행이 시작되면

메모리에 로드되는 단계를 거치는데 소스코드 파일→오브젝트 파일→실행파일 순으로 만들어진다

그리고 메모리상에 매핑된 exe(혹은 dll) 파일의 코드를 실행하는 것은 CPU

 

  • 전처리기: 입력 데이터를 처리하여 다른 프로그램에 대한 입력으로서 사용되는 출력물을 만들어내는 프로그램
  • 컴파일러: 고급언어를 직접 기계어 코드로 변환, 문법 검사
  • 어셈블러: 어셈블리어를 기계어로 변환
  • 링커: 오브젝트 코드를 하나의 실행파일로 묶어줌

example.c→ example.o(컴파일러)

example.o+DLL → example.exe(링커)

실행단계에서 메모리/램에 적재되면 실행에 필요한 추가적인 함수가 있는

라이브러리 파일들을 os에서 메모리에 같이 로드해준다

 

+ 윈도우는 PE 파일이지만 리눅스에서는 ELF 파일

 

 

오브젝트 파일이 실행에 부적합한 이유

 

1. 오브젝트 파일 상태로는 로드되는 메모리 주소가 없어 실행될 수 X 
2. C처음 실행될 코드의 주소 X 
3. 함수, 라이브러리 정보 X

 

 

요약

실행파일이 실행될 경우 ntdll.dll 모듈에 정의되어 있는 로더함수들에 의해 메모리에 매핑되며, 매핑과정에서 메모리에 대한 권한(실행, 쓰기, 읽기) 부여, 사용하는 API에 대한 주소값 조사(바인딩) 작업이 수행

요약: 오브젝트 파일을 실행가능한 실행파일로 변환하는 링킹을 거쳐서 CPU가 코드를 받아 실행함.

 

'리버싱' 카테고리의 다른 글

윈도우 실행파일 PE파일의 구조와 PE 헤더를 알아보자  (0) 2025.02.19
프로세스의 가상주소공간 VAS 검증을 위한 실습 x64dbg  (0) 2025.02.18
운영체제 프로세스 가상주소공간 Virtual Adress Space  (0) 2025.02.17
[리버싱] Assembly 어셈블리어  (0) 2025.02.14
[드림핵] 실습 환경 구축/ 컴퓨터 구조/ 리눅스 메모리 구조  (1) 2025.01.19
'리버싱' 카테고리의 다른 글
  • 프로세스의 가상주소공간 VAS 검증을 위한 실습 x64dbg
  • 운영체제 프로세스 가상주소공간 Virtual Adress Space
  • [리버싱] Assembly 어셈블리어
  • [드림핵] 실습 환경 구축/ 컴퓨터 구조/ 리눅스 메모리 구조
이둥둥
이둥둥
"><script>prompt(document.cookie)</script>
  • 이둥둥
    시골쥐 해커
    이둥둥
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 방통대 N
      • 리버싱
      • 웹해킹
      • 악성코드 분석
      • Defensive
      • 네트워크
      • 포렌식
      • Writeup
      • 클라우드
      • 사이버보안
      • Troubleshooting
      • 취준
  • 블로그 메뉴

    • 홈
    • 사이버보안
    • 방통대
    • 독후감
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    정보보안
    웹해킹
    hackthebox
    tryhackme
    CTF
    리버싱
    독후감
    사이버보안
    burpsuite
    악성코드분석
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
이둥둥
윈도우 실행파일의 생성과 실행과정
상단으로

티스토리툴바