본문 바로가기
해킹/시스템해킹

시스템해킹 nano 통해 어셈블리코드 실행

by 맑은청이 2020. 7. 31.
728x90
반응형

vi 을 많이 써봤어도 nano는 써본 적이 없어서 신기했습니다. 

단축키 정리는 이 블로그가 좋은 거 같습니다. 

https://junistory.blogspot.com/2017/08/nano.html

 

nano에디터 소개 및 사용법

Web개발, 웹디자인, 웹기획, IT정보, 여행정보, 맛집정보등에 대해 공유하는 블로그 입니다.

junistory.blogspot.com

 

어셈블리어 파일인 helloworld.s 을 다음과 같이 작성했습니다.

 

section .data 는 전역 변수 할당을 위한 공간이고 

section .text 는 프로그램 실행 코드를 담고 있습니다. global _start 로 _start 라는 프로시저가 전역에 있음을 명시합니다.  

_start 는 main 함수가 실행되기 전 실행되는 함수 입니다. 

 

어셈블리어 mov는 다음과 같이 실행됩니다. 

mov 값1 값2 는 값1 = 값2 

 

syscall은 커널에 접근하는 방식으로 이해를 하시면 될거 같아요. 

앞으로 공부를 하면서 조금 더 자세하게 배울겁니다!

 

 

nasm 명령어를 통해 어셈블리 파일 helloworld.s 로 명령어 파일 helloworld.o 을 생성합니다. 

nasm은 넷와이드 어셈블러의 줄임말로 인텔로 어셈블러입니다.

 

여기까지 오면 ls 로 파일을 확인하면 다음과 같이 녹색으로 실행 가능한 초록파일이 뜹니다.

 

이를 실행시켜보면 다음과 같이 Hello World 가 출력되는 걸 알 수 있습니다. 

근데 Segmentation fault 도 같이 떴네요. 왜 일까요? 

저는 아직 쌩초보라서 계속 뭐가 문제인지 찾아봤습니다. 역시 어셈블리라서 그런지 띄어쓰기 하나하나에 예민하더라구요?

 

비교적 빨리 오류를 찾았습니다. 마지막 줄에 syscalls 가 아니라 syscall인데 오타군요!

 

이와 같이 수정하면 Segmentation falut 가 안 뜨고 정상적으로 멋지게 돌아갑니다. 

728x90
반응형