Skip to content

Assembly x86_64 - Hello World!

Assembly Code

We're going to use vim to write our code

[ 192.168.0.18/24 ] [ /dev/pts/88 ] [~/binexp/asm]
β†’ vim 0.asm




section .data
        text db "Hello, World!",10

section .text
        global _start

_start:
        mov rax, 1
        mov rdi, 1
        mov rsi, text
        mov rdx, 14
        syscall

        mov rax, 60
        mov rdi, 0
        syscall

Compiling

Here we're going to use nasm to compile our assembly code:

[ 192.168.0.18/24 ] [ /dev/pts/89 ] [~/binexp/asm]
β†’ nasm -f elf64 0.asm -o 0.o

[ 192.168.0.18/24 ] [ /dev/pts/89 ] [~/binexp/asm]
β†’ ls -lash
total 16K
4.0K drwxr-xr-x 2 nothing nothing 4.0K Mar  2 16:17 .
4.0K drwxr-xr-x 5 nothing nothing 4.0K Mar  2 16:01 ..
4.0K -rw-r--r-- 1 nothing nothing  179 Mar  2 16:09 0.asm
4.0K -rw-r--r-- 1 nothing nothing  848 Mar  2 16:17 0.o

Now we have our 0.asm code and the 0.o object file, now we need to link it using the gnu linker (ld) to make an executable file

[ 192.168.0.18/24 ] [ /dev/pts/89 ] [~/binexp/asm]
β†’ ld 0.o -o 0

[ 192.168.0.18/24 ] [ /dev/pts/89 ] [~/binexp/asm]
β†’ ls -lash
total 28K
4.0K drwxr-xr-x 2 nothing nothing 4.0K Mar  2 16:19 .
4.0K drwxr-xr-x 5 nothing nothing 4.0K Mar  2 16:01 ..
 12K -rwxr-xr-x 1 nothing nothing 8.7K Mar  2 16:19 0
4.0K -rw-r--r-- 1 nothing nothing  179 Mar  2 16:09 0.asm
4.0K -rw-r--r-- 1 nothing nothing  848 Mar  2 16:17 0.o

[ 192.168.0.18/24 ] [ /dev/pts/89 ] [~/binexp/asm]
β†’ file 0
0: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped

and now we have our executable file called '0', we make it executable with chmod +x and then execute it:

[ 192.168.0.18/24 ] [ /dev/pts/89 ] [~/binexp/asm]
β†’ chmod +x 0

[ 192.168.0.18/24 ] [ /dev/pts/89 ] [~/binexp/asm]
β†’ ./0
Hello, World!

And that concludes our first assembly code! in the next part we're going to explain everything about this code here.


Nihilist
Donate XMR to Nihilist:
8AUYjhQeG3D5aodJDtqG499N5jXXM71gYKD8LgSsFB9BUV1o7muLv3DXHoydRTK4SZaaUBq4EAUqpZHLrX2VZLH71Jrd9k8