Linux Kernel IA32 Syscall Emulation

Discussion in 'Безопасность и Анонимность' started by b10NT, 26 Apr 2009.

  1. b10NT

    b10NT New Member

    Joined:
    13 Apr 2009
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    Ай нид хелп - есть хост, ядро 2.4.30 #2 SMP , выбрал вот этот сплоит http://www.securityfocus.com/data/vulnerabilities/exploits/linux-ia32-emul-exp.c , но не могу скомпилить - сначало ругалось на андефайн ORIG_RAX, поставил его 120, теперь выдает следующее:
    Code:
    Assembler message:
    ****.s:12 Error: suffix or operand invalid for 'movq'
    ****.s:120 Error: suffix or operand invalid for 'movq'
    
    я так понимаю из-за этой строчки:
    Code:
            __asm__("\n"
            "\tmovq $0x101, %rax\n"
            "\tint $0x80\n");
    
    Что делать и кто виноват?
     
  2. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    У самого очень часто такие траблы появляются при сборке чего либо под х86_64, приходится подкручивать.
    По сабжу, напиши просто mov вместо movq
     
  3. b10NT

    b10NT New Member

    Joined:
    13 Apr 2009
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    Все равно не получаеться...
    Code:
    /tmp/ccMRs3sA.s: Assembler messages:
    /tmp/ccMRs3sA.s:129: Error: bad register name `%rax'
    
    Вообще команда "\tmovq $0x101, %rax\n", должно быть наоборот, в регистр засовываеться число, но я попробывал так тоже не компилиться..
    Какой регистр должен быть на месте %rax%?
     
  4. winterfrost

    winterfrost Elder - Старейшина

    Joined:
    18 Aug 2008
    Messages:
    42
    Likes Received:
    18
    Reputations:
    15
    не должна быть на оборот, это синтаксис такой AT&T. А rax это вроде-как аналог eax в 64-битной системе. Похоже что ты на 32-битной системе компилируеш, отсюда и ошибки.
     
  5. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    если собираешь под 32битную архитектуру то %rax замени на %eax