Je suis en train de produire un code d'assemblage comme celui-ci (pour que cela fonctionne avec nasm)De quel style s'agit-il (intel, att ... etc?) Et comment puis-je le produire?
;hello.asm
[SECTION .text]
global _start
_start:
jmp short ender
starter:
xor eax, eax ;clean up the registers
xor ebx, ebx
xor edx, edx
xor ecx, ecx
mov al, 4 ;syscall write
mov bl, 1 ;stdout is 1
pop ecx ;get the address of the string from the stack
mov dl, 5 ;length of the string
int 0x80
xor eax, eax
mov al, 1 ;exit the shellcode
xor ebx,ebx
int 0x80
ender:
call starter ;put the address of the string on the stack
db 'hello'
Tout d'abord, quel style assemblage est-ce et deuxièmement, comment puis-je produire à partir d'un fichier C en utilisant une commande semblable à gcc -S code.c -o code.S -masm=intel
'-masm = intel' est exactement ce qui produit ce style (syntaxe Intel, par opposition à la syntaxe AT & T par défaut). Mais cela ne gouverne que les instructions réelles. Des choses comme '[SECTION]' sont spécifiques à NASM, et GCC génère toujours celles spécifiques au GAS. –
Alors comment se fait-il que je lance la commande ci-dessus avec (-masm = intel) et que j'essaie d'exécuter la commande 'nasm -f elf code.S' Je reçois beaucoup d'erreurs? – Nosrettap
Parce que nasm n'est pas gazeux. Les directives sont fausses. –