перехват int1 из драйвера

Тема в разделе "WASM.BEGINNERS", создана пользователем fralik, 12 май 2006.

  1. fralik

    fralik New Member

    Публикаций:
    0
    Регистрация:
    27 июл 2004
    Сообщения:
    2
    Привет всем!



    Написал простенький драйвер, чтобы выйти на нулевое кольцо. Пытаюсь заменить обработчик int1 на свой собственный,в перспективе, чтобы попытаться мешать работать айсу. Пока что мой обротчик всего лишь вызывает старый:
    Код (Text):
    1.  
    2. __declspec( naked ) void myint1( void )
    3. {
    4.     __asm { jmp     dword ptr cs:[oldInt1.Handler] };
    5. }
    6.  


    Устанавливаю прерывание так (использую processor.c/.h от Ms Rem`а):
    Код (Text):
    1.  
    2. typedef struct _INTDESC
    3. {
    4.     USHORT OffsetLo;
    5.     USHORT Selector;
    6.     UCHAR  Unused;
    7.     UCHAR  Access;
    8.     USHORT OffsetHi;
    9. } INTDESC, *PINTDESC;
    10. typedef struct _IDTR
    11. {
    12.     USHORT Limit;
    13.     ULONG  Base;
    14. } IDTR, *PIDTR;
    15. static void SetInt(IN INTERRUPT *Interrupt)
    16. {
    17.     IDTR      Idt;
    18.     PINTDESC  IntGate;
    19.  
    20.     __asm cli;
    21.     __asm sidt[Idt];
    22.  
    23.     IntGate = &((PINTDESC)Idt.Base)[Interrupt->IntNum];
    24.  
    25.       IntGate->OffsetHi = (USHORT)((ULONG)Interrupt-Handler >> 16);
    26.     IntGate->OffsetLo = (USHORT)Interrupt->Handler;
    27.     IntGate->Selector = Interrupt->Selector;
    28.     IntGate->Access   = Interrupt->Access;
    29.  
    30.     __asm sti;
    31. }
    32.  


    Соответственно вызов функции такой:
    Код (Text):
    1.  
    2. newInt1.IntNum = 1;
    3. newInt1.Handler = &myint1;
    4. newInt1.Access = 0x8E; // вентиль прерывания, 32b, DPL=0
    5. newInt1.Selector = 0x8;
    6. SetInt(&newInt1);
    7.  




    Ставлю bpm на тестовую переменную, которая меняется сразу после установки драйвера. Но такое ощущение, что до него программа не доходит, а виснет после SetInt.

    Может кто-нибудь знает в чем может быть проблема?
     
  2. fralik

    fralik New Member

    Публикаций:
    0
    Регистрация:
    27 июл 2004
    Сообщения:
    2
    кажется понял куда копать. с селектором я что-то невероятное сотворил...