Salutations, SO.Erreur d'assemblage en ligne, contrecarrant les tentatives de compilation gcc
J'ai du code que j'ai essayé de compiler en utilisant gcc, mais mes tentatives ont été contrecarrées. Quelqu'un de plus versé pourrait m'aider avec le sujet, peut-être qu'il y a quelque chose qui me manque.
Je compile ce code sur Linux Kitchen 2.6.28-15-générique # 49-Ubuntu SMP mar 18 août 19:25:34 UTC 2009 x86_64 GNU/Linux.
int
main(void)
{
__asm__(
"xorq %rdx,%rdx"
"movq $0x68732f6e69622fff, %rdx"
"shr $0x8, %rbx"
"push %rbx"
"movq %rsp,%rdi"
"xorq %rax,%rax"
"pushq %rax"
"pushq %rdi"
"movq %rsp,%rsi"
"mov $0x3b, %al"
"syscall"
"pushq $0x1"
"pop %rdi"
"pushq $0x3c"
"pop %rax"
"syscall"
);
return 0;
}
L'erreur renvoyée est:
$ gcc -o shellcode shellcode.c
shellcode.c: Assembler messages:
shellcode.c:4: Error: bad register name `%rdxmovq $0x68732f6e69622fff'
Merci, tout le monde.
vous pouvez également inline votre assemblage (si c'est plus facile pour vous). Voir http://stackoverflow.com/questions/3139772/check-if-carry-flag-is-set/6399855#6399855. – jww