PDA

Просмотр полной версии : Linux Kernel IA32 Syscall Emulation


b10NT
26.04.2009, 13:46
Ай нид хелп - есть хост, ядро 2.4.30 #2 SMP , выбрал вот этот сплоит http://www.securityfocus.com/data/vulnerabilities/exploits/linux-ia32-emul-exp.c , но не могу скомпилить - сначало ругалось на андефайн ORIG_RAX, поставил его 120, теперь выдает следующее:

Assembler message:
****.s:12 Error: suffix or operand invalid for 'movq'
****.s:120 Error: suffix or operand invalid for 'movq'


я так понимаю из-за этой строчки:

__asm__("\n"
"\tmovq $0x101, %rax\n"
"\tint $0x80\n");


Что делать и кто виноват?

razb
26.04.2009, 14:54
У самого очень часто такие траблы появляются при сборке чего либо под х86_64, приходится подкручивать.
По сабжу, напиши просто mov вместо movq

b10NT
03.05.2009, 13:05
Все равно не получаеться...

/tmp/ccMRs3sA.s: Assembler messages:
/tmp/ccMRs3sA.s:129: Error: bad register name `%rax'


Вообще команда "\tmovq $0x101, %rax\n", должно быть наоборот, в регистр засовываеться число, но я попробывал так тоже не компилиться..
Какой регистр должен быть на месте %rax%?

winterfrost
17.05.2009, 09:47
не должна быть на оборот, это синтаксис такой AT&T. А rax это вроде-как аналог eax в 64-битной системе. Похоже что ты на 32-битной системе компилируеш, отсюда и ошибки.

razb
17.05.2009, 13:45
если собираешь под 32битную архитектуру то %rax замени на %eax