이번에 포스팅할 내용은 제목과 같이 리눅스환경에서 어셈블리어를 사용할건데요
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
생성된걸 확인 할 수 있습니다.
이제 실행을 해보면?
아주 멀쩡하게 실행이 잘 됩니다.
오늘은 리눅스에서 어셈블리어로 코딩을 하는방법을 알아보았습니다.
다음 포스팅에서는 앞전에 있었던 내용들을 전부 활용해서 조금 더 어셈블리를 심화적으로 다뤄보도록 하겠습니다.
'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 |