본문 바로가기
Reversing

리버싱 용어 공부 (+ c언어 컴파일 과정)

by sseddi 2020. 10. 12.
728x90

리버싱 용어

Assembly/Assembly languaage(어셈블리/어셈블리어) : 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급언어

기계어를 사람이 이해하기 쉽게 간단한 문자로 만든 언어

Disassembly(디어셈블리) :  기계어를 어셈블리어로 변환하는 것

 

Compile(컴파일) : 사람이 이해하는 언어를 컴퓨터가 이해할 수 있는 기계어 구조로 변환하는 과정

Decompile(디컴파일) : 컴파일된 소스를 다시 반대로 되돌리는 과정

 

C언어 컴파일 과정

1. 전처리기

소스파일에서 #include 구문을 만나면 해당 헤더파일을 찾아 삽입해준다.

이외에도 매크로 치환작업도 진행한다.(#define)

전처리기를 지나면 소스파일이 전처리기된 소스 파일이 된다.

 

2. 컴파일러

컴파일 과정에서는 전처리기된 소스 파일을 받아 어셈블리 소스 코드를 생성한다

그리고 그 어셈블리 소스 코드를 어셈블러가 받아 오브젝트 파일을 생성한다.

오브젝트 파일부터 기계어 코드가 된다.

 

3. 링커

앞서 생성된 오브젝트 파일을 받고, 프로그램에서 사용된 표준 C 라이브러리, 사용자 라이브러리들을 링크 시켜주는 역할을 한다.  이 과정을 통해 실행파일이 생성된다.

 

참고)

gracefulprograming.tistory.com/16

 

[C언어 강좌-2] C언어 컴파일 과정

안녕하세요 피터입니다. 오늘은 지난시간에 이어 C언어의 컴파일 과정에 대해 설명드리겠습니다. 앞서 여러분이 작성했던 Hello world 코드가 컴퓨터에서 실행이 되려면 우선 컴파일(Compile) 과정��

gracefulprograming.tistory.com

 

728x90

댓글