본문 바로가기

Penetration/etc

개인 공부 - 리버싱 분야(프로그램의 생성)

컴퓨터에서 정수를 저장하는 방식 - 엔디언(Endian)

 

빅엔디언은 16진수 0x12345678을 저장할 때 [12 34 56 78] 순서대로 저장하는 방식이다.

리틀엔디언은 16진수 0x12345678을 저장할 때 [78 56 34 12] 순서대로 저장하는 방식이다.

그리고, 이 둘을 선택적으로 사용할 수 있는 바이엔디언 방식이 있다.

 

고급 언어로 작성된 원시 프로그램을 기계어로 번역하는 프로그램 - 컴파일러

고급 프로그래밍 언어로 작성된 프로그램 - 원시 프로그램

컴파일러에 의해서 생성되는 기계어 프로그램 - 목적 프로그램

원시 프로그램을 컴파일 과정 없이 직접 실행하는 방법 - 인터프리터

 

C프로그램의 컴파일 과정

전처리기(preprocessor), 컴파일러, 어셈블러(assembler), 링커(linker)과정을 거쳐서 목적프로그램을 생성함

생성된 목적 프로그램은 로더(loader)에 의해 메모리에 적재되고 프로그램 명령어를 실행할 수 있게 된다.

 

전처리기(preprocessor) - 데이터를 처리하기 전에 변경이 필요한 부분을 처리하는 과정

컴파일러(compiler) - 고급 언어로 작성된 원시 프로그램을 기계어로 번역하는 프로그램

어셈블러(assembler) - 어셈블리어 코드를 목적코드로 변환함

링커(linker) - 여러 목적 프로그램을 하나로 연결하는 역할 수행

 

컴파일러(compiler)는 어휘 분석, 구문 분석, 의미 분석, 코드 최적화 과정을 거친다.