본문 바로가기
Security/Reversing

[어셈블리어 분석 실습] 기본 내용

by 단월໒꒱ 2022. 5. 8.

이번 실습에서 어셈블리어는 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 프로그램 : 오브젝트 파일)

 

 

 

댓글