HELLO_HELL?

블로그 이미지

준P

어셈블리어 프로그래밍 helloword

Development/Assembly 2014. 4. 30. 18:55

안녕 하세요 준P입니다.


오늘은 리눅스에서 어셈블리어로 프로그래밍을 해 보도록 합시다.


그러면 일단 리눅스에 nasm이 설치되어있어야함니다.


sudo apt-get install nasm


으로 설치해 줍시다.


자 nasm이 설치 되엇으면 vim으로 asm.asm을 만들어줍시다. 


그리고 나서 


section .data

                        ;여기에는 데이터를 넣는 곳 입니다.

msg db "hello world",0x0A

                        ; hello world 라는 단어와 새줄 이라는 16진수 코드

section .text


global _start

  

_start

mov eax,4          ; write의 시스템 콜 번호

mov ebx,1          ; write의 표준 출력은 1번이다.

mov ecx,msg      ; write의 두 번쨰 인자에 메세지 주소 저장

mov edx,12        ; write 의 세 번쨰 인자에 문자열 길이 저장

int 0x80             ; 실행


mov eax,1         ; exit의 시스템 콜 번호

mov ebx,0         ; exit의 정상적인 종료

int 0x80             ; 실행


자 이제 작성이 끝낫다면


컴파일을 해야죠


하지만 그전에 자신의 리눅스 시스템이 32비트인지 64비트인지 알아야 합니다.


uname -p 


이 명령어로  x86이 나왓다면 32비트인것이고 x86_64라면 64비트 인 것 입니다.



참고로 저는 64비트 입니다.


자 이제 자신이 몇 비트 인지 알았으니


컴파일을 해봅시다.


32비트라면 nasm -f elf asm.asm    


64비트라면 nasm -f elf64 asm.asm    


nasm -f elf asm.asm     ;이 명령어 후에는 asm.o가 만들어 짐니다.


ld asm.o                     ;실행 파일로 만들어 줌니다. 


./a.out                       ;실행 입니다.




저 위 에러를 해석 하면


경고 : 레이블을 혼자 선에 콜론없이하는 것은 오류가있을 수 있습니다


라고 하는데요 주석 떄문 입니다. 간단히 무시 하시면 됨니다.


네 정상적으로 컴파일이 되엇습니다.



저작자표시 비영리 변경금지 (새창열림)

'Development > Assembly' 카테고리의 다른 글

어셈블리 프로그래밍  (0) 2015.06.21
리눅스 syscall table for x86_64  (0) 2014.09.18
리눅스 system table for x86  (0) 2014.09.14
Posted by 준P
블로그 이미지

by 준P

공지사항

    최근...

  • 포스트
  • 댓글
  • 트랙백
  • 더 보기

태그

글 보관함

«   2025/06   »
일 월 화 수 목 금 토
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

링크

카테고리

HELLO? (157)
스터디 (6)
Windows 구조와 원리 OS를 관통하는 프로그.. (6)
Development (44)
Android (5)
Assembly (4)
C/C++ (11)
C# (0)
HTML (1)
JAVA (2)
JSP (3)
JS Script (2)
Linux Shell Script (2)
Open GL (1)
PHP (0)
Python (1)
QT library (3)
SQL (1)
Swift (1)
MongoDB (0)
Express JS (1)
Angular JS (1)
Node JS (1)
SpongePoweredForgePluginDev.. (2)
Unity3d (1)
Docker (0)
Linux (22)
Linux Kernel Study (1)
Network (9)
WireShark (1)
Network Theory (6)
Hack the packet 2013 (2)
Reversing (50)
Windows PE (10)
Windows Reversing (1)
Linux PE (0)
Linux Reversing (0)
Android Reversing (2)
Reversing Tools (8)
CodeEngn (25)
Reversing.kr (2)
abex's (2)
Sites (3)
System (12)
FTZ (9)
Buffer Over Flow (3)
GDGkr (1)

카운터

Total
Today
Yesterday
방명록 : 관리자 : 글쓰기
준P's Blog is powered by daumkakao
Skin info material T Mark3 by 뭐하라
favicon

HELLO_HELL?

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • HELLO? (157)
    • 스터디 (6)
      • Windows 구조와 원리 OS를 관통하는 프로그.. (6)
    • Development (44)
      • Android (5)
      • Assembly (4)
      • C/C++ (11)
      • C# (0)
      • HTML (1)
      • JAVA (2)
      • JSP (3)
      • JS Script (2)
      • Linux Shell Script (2)
      • Open GL (1)
      • PHP (0)
      • Python (1)
      • QT library (3)
      • SQL (1)
      • Swift (1)
      • MongoDB (0)
      • Express JS (1)
      • Angular JS (1)
      • Node JS (1)
      • SpongePoweredForgePluginDev.. (2)
      • Unity3d (1)
    • Docker (0)
    • Linux (22)
    • Linux Kernel Study (1)
    • Network (9)
      • WireShark (1)
      • Network Theory (6)
      • Hack the packet 2013 (2)
    • Reversing (50)
      • Windows PE (10)
      • Windows Reversing (1)
      • Linux PE (0)
      • Linux Reversing (0)
      • Android Reversing (2)
      • Reversing Tools (8)
      • CodeEngn (25)
      • Reversing.kr (2)
      • abex's (2)
    • Sites (3)
    • System (12)
      • FTZ (9)
      • Buffer Over Flow (3)
    • GDGkr (1)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바