이번 실습에서 어셈블리어는 AT&T 문법을 바탕으로 되어 있다.
기본적인 내용은 아래와 같으니 참고하자.
.file "example1.c" # 디버거에서 사용하는 원본 파일 이름을 가리킴
(Intel 문법이 아니기 때문에 오른쪽 값을 왼쪽으로 넣음!!)
.section .rodata # ./rodatd 섹션 정의, 이 섹션은 읽기 전용 데이터 변수
.text # text section. 코드들을장한 섹션/프로그램 코드 실행할 때 사용
.globl main # 전 코드에 걸쳐 접근 가능한 함수
.type main, @function # main 함수 정의. 이것을 해야만 global main 코드 얻을 수 있음
main: # main:~ret까지가 실제 코드
.LFB0: # 함수의 시작을 의미하는 'local label'
.cfi_startproc # 'call froam information'.
어셈블러에게 dwarf format 디버깅 information을 지시
.cfi_endproc # 함수 끝
.size main, .-main # size 인스트럭션은 메인 함수의 크기를 세팅함
.-main은 오브젝트 파일에 쓰여질 main 함수의 정확한 크기를 가지고 있음
.ident "GCC: (Ubuntu 4.8.4-2ubuntu1~14.04.1) 4.8.4"
# ident 인스트럭션은 어떤 컴파일러를 사용해서 컴파일하고 실행하였는지에 대한 정보 문자열"~"을
오브젝트 파일에 저장하기 위한 instruction
(ex) Hello World 프로그램 : 오브젝트 파일)
'Security > Reversing' 카테고리의 다른 글
[어셈블리어 분석 실습] example 2 (0) | 2022.05.08 |
---|---|
[어셈블리어 분석 실습] example 1 (0) | 2022.05.08 |
[Dreamhack Reverse Engineering] STAGE 4 (0) | 2022.05.06 |
[Dreamhack Reverse Engineering] STAGE 3 (0) | 2022.04.28 |
[Dreamhack Reverse Engineering] STAGE 2 (0) | 2022.04.28 |
댓글