Перехват Native API через Драйвер

Тема в разделе "WASM.NT.KERNEL", создана пользователем FromRing0, 10 окт 2006.

  1. FromRing0

    FromRing0 New Member

    Публикаций:
    0
    Регистрация:
    10 окт 2006
    Сообщения:
    73
    Сразу говорю что юзал не только поиск этого форума, я гугл просто за*рахал :) меня помоему в блэк лист добавили гугловцы :)
    Значит так , у меня вопрос , пожалуйста , на пальцах обьясните мне как нужно перехватывать Native API. Я понимаю по этому коду (взято с http://www.wasm.ru/article.php?article=apihook_3)
    Код (Text):
    1.     //устанавливаем перехват  
    2.         TrueNtOpenProcess  = NTCALL(OpenProcId);
    3.  
    4.     __asm
    5.     {
    6.         cli                     // запрещаем прерывания
    7.         mov eax, cr0
    8.         mov CR0Reg,eax
    9.         and eax,0xFFFEFFFF      // сбросить WP bit
    10.         mov cr0, eax
    11.     }
    12.  
    13.     NTCALL(OpenProcId) = NewNtOpenProcess;
    14.  
    15.     __asm
    16.     {
    17.         mov eax, CR0Reg    
    18.         mov cr0, eax            // востановить содержимое CR0
    19.         sti                     // разрешаем прерывания
    20.     }
    Что "где то" заменяеться адрес обработчика Api вызовов, т.е наша функция стоит как стена между юзер модом и обработчиком API. Но не понятно что и куда передаёться.
    Гуру пожалуйста обьясните на пальцах что и куда идёт :dntknw:
    Не помешает хорошо закомментированный кусок кода драйвера для перехвата АПИ где обьясняеться что и как работает , т.е можно было под себя менять.
    Если не хотите писать код то подробно пожалуйста опишите.Перечёл все статьи на русском про API перехват в юзер мод и кернел мод, так что можете ссылки не кидать.
    В общем думаю тема понадобиться новичкам как я :)
     
  2. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    1.
    сохранили старый адрес апи
    2.
    запретили прерывания, чтобы не было ахтунг в случае чего ;)
    3.
    установили свой обработчик, hint:
    #define NTCALL(_function)KeServiceDescriptorTable->ntoskrnl.ServiceTable[_function]
    4.
    восстановили прерывания, система функционирует так же как и прежде.
    техника, работающая еще с времен доса.
    АВ монитор может такое и не разрешить, что имхо верно.
    ахтунг на х86-64 :)
     
  3. FromRing0

    FromRing0 New Member

    Публикаций:
    0
    Регистрация:
    10 окт 2006
    Сообщения:
    73
    Супер !!!!! РЕспект спасибо , ты открыл мне глаза !!! Респект :)))
    блин супер...
     
  4. FromRing0

    FromRing0 New Member

    Публикаций:
    0
    Регистрация:
    10 окт 2006
    Сообщения:
    73
    Кто ещё может добавить по теме пишите не помешает
     
  5. FromRing0

    FromRing0 New Member

    Публикаций:
    0
    Регистрация:
    10 окт 2006
    Сообщения:
    73
    Код (Text):
    1. __asm
    2.     {
    3.         cli                     // запрещаем прерывания
    4.         mov eax, cr0
    5.         mov CR0Reg,eax
    6.         and eax,0xFFFEFFFF      // сбросить WP bit
    7.         mov cr0, eax
    8.     }
    и

    Код (Text):
    1. __asm
    2.     {
    3.         mov eax, CR0Reg    
    4.         mov cr0, eax            // востановить содержимое CR0
    5.         sti                     // разрешаем прерывания
    6.     }
    По подробнее можно ? я могу его всегда юзать ? обьясните пожалуйста что он делает чтоб не чуствовать себя неполноценным :)
     
  6. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Что тебе ещё надо?
    Надо подробнее читай про флаги в cr0. Вроде как есть в цикле "Защишенный ражим" от Broken_Sword'a.
     
  7. fr0b-p

    fr0b-p New Member

    Публикаций:
    0
    Регистрация:
    1 окт 2006
    Сообщения:
    118
    FromRing0, погугли книжку Шрайбера

    >> запретили прерывания, чтобы не было ахтунг в случае чего ;)
    ... , что бы бит WP восстановился у _этого_же_ процессора.
    главный смысл кода это замаскировать защиту от записи (что бы не было BSOD)
     
  8. FromRing0

    FromRing0 New Member

    Публикаций:
    0
    Регистрация:
    10 окт 2006
    Сообщения:
    73
    всё я понял :) спасибо.
     
  9. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    FromRing0
    А статьи и мануалы интела почитать невдомёк?
     
  10. FromRing0

    FromRing0 New Member

    Публикаций:
    0
    Регистрация:
    10 окт 2006
    Сообщения:
    73
    а есть ссылки ?
     
  11. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    www.intel.com