728x90
리버싱 용어
Assembly/Assembly languaage(어셈블리/어셈블리어) : 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급언어
기계어를 사람이 이해하기 쉽게 간단한 문자로 만든 언어
Disassembly(디어셈블리) : 기계어를 어셈블리어로 변환하는 것
Compile(컴파일) : 사람이 이해하는 언어를 컴퓨터가 이해할 수 있는 기계어 구조로 변환하는 과정
Decompile(디컴파일) : 컴파일된 소스를 다시 반대로 되돌리는 과정
C언어 컴파일 과정
1. 전처리기
소스파일에서 #include 구문을 만나면 해당 헤더파일을 찾아 삽입해준다.
이외에도 매크로 치환작업도 진행한다.(#define)
전처리기를 지나면 소스파일이 전처리기된 소스 파일이 된다.
2. 컴파일러
컴파일 과정에서는 전처리기된 소스 파일을 받아 어셈블리 소스 코드를 생성한다
그리고 그 어셈블리 소스 코드를 어셈블러가 받아 오브젝트 파일을 생성한다.
오브젝트 파일부터 기계어 코드가 된다.
3. 링커
앞서 생성된 오브젝트 파일을 받고, 프로그램에서 사용된 표준 C 라이브러리, 사용자 라이브러리들을 링크 시켜주는 역할을 한다. 이 과정을 통해 실행파일이 생성된다.
참고)
gracefulprograming.tistory.com/16
728x90
'Reversing' 카테고리의 다른 글
[Practice] LAB 6-4 (0) | 2021.11.19 |
---|---|
[Practice] LAB 6-3 (0) | 2021.11.19 |
[Reversing 개념] 안티 디버깅 (Anti Debugging) (0) | 2021.02.22 |
리버싱 엔지니어링? (0) | 2021.02.15 |
간단한 코드 exe 파일 리버싱(함수 프롤로그, 에필로그 공부+ 어셈블리 공부) (2) | 2020.10.12 |
댓글