Basic/정보보안

[리버싱] 프로그램 실행 구조

카고형 2021. 10. 18. 13:01
728x90

 

프로그램 실행 구조

 

컴퓨터의 기본적인 요소 CPU메모리 그리고 저장 공간인 하드디스크가 있다. 

프로그램을 만들어서 배포하면 프로그램을  실행 시킬수 있는 파일(.EXE)은 기본적으로 하드디스크에 저장된다.

 

 

 

 

 

 

CPU의 구성

cpu 구성

 

 

 

메모리의 구성

memory

 

윈도우에서의 실행파일을 PE(Portable Executable) 파일 이라 한다. PE 파일에는 실행에 필요한 기본정보와 파일을 메모리 어디에 저장해야 할지 알려주는 배치 정보가 들어있다. PE 파일은 헤더(header)와 바디(body)로 구성 되어있고, 헤더에는 중요 정보가 들어있고 바디에는 코드와 데이터가 들어간다 PE 파일의 종류는 .exe .dll ocx 등이 있다

 

PE 포맷(해더+바디)으로 구성된 실행 파일을 클릭하면 운영체제에 있는 로더(Loader)는 PE헤더에 있는 정보를 분석해서 PE바디에 있는 코드와 데이터를 메모리에 배치한다 메모리는 프로그램 코드가 들어가는 코드영역, 정적 변수와 전역 변수가 들어가는 데이터 영역, 함수 호출 시 사용되는 매개 변수와 지역 변수가 저장되는 스택영역, 그리고 동적 메모리 할당에 사용 되는 히프영역으로 구성됨. PE 파일이 메모리에 로딩될 떄는 코드영역과 데이터 영역에 자료가 들어간다 프로그램이 실행되면서 스택영역과 히프 영역에 데이터가 쌓이게 된다 

 

PE 파일의 처음 시작되는 위치를 엔트리 포인트(Entry point)라고 함 운영체제는 메모리에 있는 PE 파일을 실행하기 위해 PE 헤더 정보에서 엔트리 포인트 위치를 찾아 거기서 부터 프로그램을 실행 한다.

 

프로그램 안에 명령어를 실행하는 것은 CPU에 제어장치와 연산장치가 하고, 이때 프로그램 실행시 필요한 데이터는 레지스터에 있어야 한다 >> 메모리에 있는 데이터를 레지스터에 복사하는 과정

 

컴퓨터는 동시에 여러개의 프로그램을 작동하는데 하나의 프로그램이 CPU를 사용하려면 자신에게 필요한 데이터로 레지스터 내용을 전부 바꿔야 한다. 여러개 프로그램이 동시에 실행되기 떄문에 번갈아 가면서 CPU를 사용 함

CPU 사용 권한을 넘겨 줄 때는 자신의 모든 레지스터 값을 메모리 영역으로 복사후 CPU사용 권한을 넘겨준다 이것을 컨텍스트 스위칭(Context Switching)이라 한다. 

 

 

 

 

 

 

 

 

 

 

 

728x90

'Basic > 정보보안' 카테고리의 다른 글

로맨스 스캠  (0) 2022.10.06
스미싱이란  (0) 2022.09.14
악성 코드 종류(malware or Malicious code)  (0) 2021.08.23
세션 하이재킹(Session Hijacking) 공격  (0) 2021.07.06
스푸핑(Spoofing)공격  (0) 2021.07.05