N-PN White-Hat Project
[ASM] hello world 64bits (nasm) - Version imprimable

+- N-PN White-Hat Project (https://dev.n-pn.fr/forum)
+-- Forum : Programmation (https://dev.n-pn.fr/forum/forumdisplay.php?fid=72)
+--- Forum : Langages compilés (https://dev.n-pn.fr/forum/forumdisplay.php?fid=25)
+--- Sujet : [ASM] hello world 64bits (nasm) (/showthread.php?tid=2452)



[ASM] hello world 64bits (nasm) - gruik - 30-11-2012

comme son nom l'indique, à la sauce shellcode, pour ceux que ça interesse...
les questions/optimisations/remarques sont évidement les bienvenues Wink

ps: pour ceux à qui geshi manque sur ce forum je mets la version colo ici aussi

Code ASM :

; nasm -f elf64 -o prout.o prout.asm
; ld -m elf_x86_64 -o prout prout.o

section .text

global _start
_start:
        ; sys_write == 1
        mov rax, 0xff0a2120646c726f     ; "orld !\n" + \xff pour padd
        push rax
        mov rax, 0x77202c6f6c6c6568     ; "hello, w"
        push rax
        push rsp
        pop rsi
        xor rax, rax
        inc eax
        mov edi, eax
        xor rdx, rdx
        mov dl, 0x0f
        syscall         ; rax + params dans rdi, rsi, rdx, rcx, r8, r9

        ; sys_exit == 60 (0x3c)
        mov al, 0x3c
        syscall
 



RE: [ASM] hello world 64bits (nasm) - spin - 01-12-2012

Pourquoi xorer rax avec lui-même à la place de xorer eax avec lui-même, avant de l'incrémenter (de toute façon Linux ne regarde que le contenu de eax, et pas de tout rax il me semble) ? Et même question pour le xor de edx avec lui-même. On pourrait se contenter de faire avec edx, ça serait encore plus court :

Code :
$ ndisasm -b64 test.bin
00000000  31D2              xor edx,edx
00000002  4831D2            xor rdx,rdx
00000005  31C0              xor eax,eax
00000007  4831C0            xor rax,rax

Et aucun null byte à l'horizon Wink


RE: [ASM] hello world 64bits (nasm) - gruik - 01-12-2012

effectivement (après vérif) un xor eax, eax mettra à zéro également la partie haute de rax (et idem pour edx du coup)

bien vu Smile