Модификация /dev/kmem

Тема в разделе "WASM.UNIX", создана пользователем ShadOS, 28 мар 2007.

  1. ShadOS

    ShadOS New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2006
    Сообщения:
    39
    Адрес:
    0x48k
    Читаем статью "Перехват системных вызовов в OS Linux" раздел, посвященную сабжу:
    Выполняем те же самые действия на 2.6.19 ядре:
    Код (Text):
    1. (gdb) disassemble system_call
    2. Dump of assembler code for function system_call:
    3. 0xc0102c68 <system_call+0>:     push   %eax
    4. 0xc0102c69 <system_call+1>:     cld    
    5. 0xc0102c6a <system_call+2>:     push   %es
    6. 0xc0102c6b <system_call+3>:     push   %ds
    7. 0xc0102c6c <system_call+4>:     push   %eax
    8. 0xc0102c6d <system_call+5>:     push   %ebp
    9. 0xc0102c6e <system_call+6>:     push   %edi
    10. 0xc0102c6f <system_call+7>:     push   %esi
    11. 0xc0102c70 <system_call+8>:     push   %edx
    12. 0xc0102c71 <system_call+9>:     push   %ecx
    13. 0xc0102c72 <system_call+10>:    push   %ebx
    14. 0xc0102c73 <system_call+11>:    mov    $0x7b,%edx
    15. 0xc0102c78 <system_call+16>:    movl   %edx,%ds
    16. 0xc0102c7a <system_call+18>:    movl   %edx,%es
    17. 0xc0102c7c <system_call+20>:    mov    $0xfffff000,%ebp
    18. 0xc0102c81 <system_call+25>:    and    %esp,%ebp
    19. 0xc0102c83 <system_call+27>:    testl  $0x100,0x30(%esp)
    20. 0xc0102c8b <system_call+35>:    je     0xc0102c91 <no_singlestep>
    21. 0xc0102c8d <system_call+37>:    orl    $0x10,0x8(%ebp)
    22. End of assembler dump.
    Я не знаток ассемблера, посему вопрос: Работает ли данный метод в 2.6.x Ядрах и если работает, то как быть здесь. Линки на источники где почитать по теме особо приветствуются.
     
  2. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Может быть, имеет смысл загрузить этот модуль в IDA и посмотреть на полный дамп функции?
     
  3. Bob

    Bob New Member

    Публикаций:
    0
    Регистрация:
    2 авг 2004
    Сообщения:
    112
    Адрес:
    Ukraine
    метод работает, в некоторых rootkit-ах используется. Сделай disas syscall_call и посмотри entry.S, ф-ия ENTRY(system_call).
     
  4. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    на некоторых дистрах kmem вообще отсутсвует как класс, а на других к нему не имеет доступа даже root.
     
  5. Bob

    Bob New Member

    Публикаций:
    0
    Регистрация:
    2 авг 2004
    Сообщения:
    112
    Адрес:
    Ukraine
    Какие плохие дистры :)
     
  6. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    Bob
    "тенденция, однако" (с)
    kmem обречен на вымирание. это факт.
    да он и не сильно нужен. ведь есть /dev/mem
     
  7. Bob

    Bob New Member

    Публикаций:
    0
    Регистрация:
    2 авг 2004
    Сообщения:
    112
    Адрес:
    Ukraine
    Да, Вы правы (а кто бы сомневался).

    Кстати, всем заинтересованным рекомендую статью Криса http://www.insidepro.com/kk/043/043r.shtml
    Там рассказано как работать с /dev/mem.

    Крис, спасибо Вам за этот качественный материал :)
     
  8. ShadOS

    ShadOS New Member

    Публикаций:
    0
    Регистрация:
    20 сен 2006
    Сообщения:
    39
    Адрес:
    0x48k
    Кстати насчёт статьи: а она в журнале Хакер не публиковалась? И ещё мне всегда интересно было почему именно "thunk"? =)
     
  9. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    ShadOS

    > И ещё мне всегда интересно было почему именно "thunk"? =)
    а почему бы и нет? см. http://en.wikipedia.org/wiki/Thunk