이번에 포스팅할 내용은 제목과 같이 리눅스환경에서 어셈블리어를 사용할건데요

Ubuntu에서 nano 에디터를 사용하여 다음과 같이 코드를 작성했습니다.

파일명은 test.s로 작성했습니다. 

section .data
	msg db "Hello world"
section .text
	global _start
    
_start:
	mov rax, 1 ; 문자열을 읽어오기 
    mov rdi, 1 ; 문자열을 출력
    mov rsi, msg ; Hello world 저장
    mov rdx, 12 ; Hello world를 출력할 수 있도록 문자열 길이를 만들어줌 
    syscall ; printf("Hello world");
    mov rax, 60 ; exit
    mov rsi, 0 
    syscall

 

우분투에서 코드작성을 하였고 64bit 운영체제라서 64bit 어셈블리로 작성했습니다.

이제 nasm 어셈블리 컴파일러를 통해서 목적 파일로 만든 후 실행을 해보도록 하겠습니다.

nasm -f elf64 -o 파일명.o 파일명.s 
ld -o 실행파일명 파일명.o

 

앞서 test.s 로 파일을 생성했기 때문에 편하게 알아볼 수 있도록 다음과 같이 하였습니다.

이렇게  컴파일을 하면 실행파일이 하나 생길겁니다.

nasm -f elf64 -o test.o test.s
ld -o test test.o

 

생성된걸 확인 할 수 있습니다.

test 실행파일 생성

이제 실행을 해보면? 

실행 후 화면

아주 멀쩡하게 실행이 잘 됩니다. 

오늘은 리눅스에서 어셈블리어로 코딩을 하는방법을 알아보았습니다.

다음 포스팅에서는 앞전에 있었던 내용들을 전부 활용해서 조금 더 어셈블리를 심화적으로 다뤄보도록 하겠습니다.

'Theory > Pwnable' 카테고리의 다른 글

찬희의 포너블 기초 Stack Overflow 2  (0) 2021.09.29
찬희의 포너블 기초 Stack Overflow 1  (0) 2021.09.29
Shellcode list  (0) 2021.09.26
Pwn tools 소개 2  (0) 2021.09.22
Pwntools 소개 1  (0) 2021.09.14

+ Recent posts