dreamhack ReversingCource #1
프로그램: 컴퓨터가 실행해야 할 명령어의 집합. 바이너리라고도 불린다.
전처리: 소스코드가 컴파일에 필요한 형식으로 가공되는 과정이다.
- 주석 제거, 매크로 치환, 파일 병합의 과정을 거침.
- -E 옵션을 사용하여 소스 코드의 전처리 결과를 확인 가능.
컴파일: 소스 코드를 어셈블리어로 번역하는 과정이다.
- -S 옵션을 이용하여 소스코드를 어셈블리 코드로 컴파일 가능
어셈블: 어셈블리 코드를 기계어로 번역하고, 실행 가능한 형식으로 변환하는 과정
- 컴파일로 생성된 어셈블리어 코드를 ELF 형식의 목적파일로 변환.
- -c 옵션을 통해 opt.S를 목적파일로 변환.
- file 명령어 통해 파일 형식을 확인
- 해당 결과를 hexdump 통해 16진수로 출력
링크: 여러 개의 목적 파일을 하나로 묶고, 필요한 라이브러리와 연결해주는 과정
- 링크는 함수가 잘 실행될 수 있도록 라이브러리와 함수를 연결해주는 것.
- 링크를 거치고 나면 실행할 수 있는 프로그램이 완성됨
- 링크 과정에서 링커는 main()함수를 찾는데, opt 소스에는 main함수 없음. 에러 방지하기 위해 --unresolved-sumbols 옵션 추가.
디스어셈블: 바이너리를 어셈블리어로 번역하는 과정
- objdump -d 파일명 -M intel 명령어 통해 디스어셈블된 결과 확인 가능
디컴파일: 바이너리를 고급 언어로 번역하는 과정
- 고급언어로 바이너리를 번역하여 코드를 이해하기 쉽도록.
'보안 > 리버싱' 카테고리의 다른 글
reversing.kr - Easy ELF (0) | 2024.08.26 |
---|---|
x64 assembly basic (0) | 2022.07.10 |
Dreamhack Quiz: x86 Assembly 2 (0) | 2022.07.10 |
86 Assembly: Essential Part(1) quiz (0) | 2022.07.08 |
#2 동적분석과 정적분석 (0) | 2022.07.01 |