Что-то не получается перезаписать SYSENTER_EIP_MSR :(

Тема в разделе "WASM.WIN32", создана пользователем ANDLL, 9 авг 2006.

  1. ANDLL

    ANDLL New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2006
    Сообщения:
    24
    Адрес:
    Russia
    Делаю, короче так:
    Код (Text):
    1. typedef void asmfunc();
    2. asmfunc* OldSysenterEntry;
    3. void SysenterHook();
    4. /* ... */
    5.  
    6. // Внутри DeviceControlRoutine
    7. /* ... */
    8.         __asm
    9.         {
    10.             mov ecx, 0x176
    11.             rdmsr
    12.             mov OldSysenterEntry, eax
    13.             mov eax, SysenterHook
    14.             xor edx, edx
    15.             wrmsr
    16.         }
    17. /* ... */
    18.  
    19. // Ну и наконец
    20.  
    21. void __declspec(naked) SysenterHook()
    22. {
    23.     __asm
    24.     {
    25.         jmp OldSysenterEntry
    26.     }
    27. }
    Вроде бы все сделано в лучших русских традициях, но почему то при попытке переписать SYSENTER_MSR_EIP компьютер перезагружается... Ну вообщето трудно сказать, когд именно он перехагруэаеться, то ли на wrmsr то ли на jmp OldSysenterEntry... Но то что перехагружается это факт... :dntknw:
    Вопрос, почему?
    И как исправить? :)
     
  2. MegaZu

    MegaZu New Member

    Публикаций:
    0
    Регистрация:
    22 июл 2005
    Сообщения:
    290
    А продебажить процес установки ? , и узнать где вылетает ?
     
  3. ANDLL

    ANDLL New Member

    Публикаций:
    0
    Регистрация:
    17 фев 2006
    Сообщения:
    24
    Адрес:
    Russia
    Продебажил. wrmsr срабатывает нормально.
    Значит, рушиться видимо на jmp...