SSTD restore[unhook]

Тема в разделе "WASM.NT.KERNEL", создана пользователем 008888, 9 янв 2010.

  1. 008888

    008888 New Member

    Публикаций:
    0
    Регистрация:
    19 авг 2008
    Сообщения:
    17
    Код (Text):
    1. typedef struct _SERVICE_DESCRIPTOR_TABLE
    2. {
    3.     PVOID *ServiceTable;
    4.     PULONG CounterTable;
    5.     ULONG TableSize;
    6.     PUCHAR ArgumentTable;
    7. } SERVICE_DESCRIPTOR_TABLE, *PSERVICE_DESCRIPTOR_TABLE;
    8. DbgPrint("SSDT Count: 0x%X\nSSDT Count(ULONG): %lu\n",KeServiceDescriptorTable->TableSize,(ULONG)KeServiceDescriptorTable->TableSize);
    Выводит
    SSDT Count: 0x805E0F55
    SSDT Count(ULONG): 2153647957
    --
    KeServiceDescriptorTable->TableSize это ведь количество записей в таблице, так? Но я дико сомневаюсь, что ssdt содержит столько записей.
     
  2. Wizard109

    Wizard109 New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2006
    Сообщения:
    346
    Код (Text):
    1. typedef struct _SYSTEM_SERVICE_TABLE
    2. {
    3.     PNTPROC     ServiceTable;
    4.     ULONG       *CounterTable;
    5.     ULONG       ServiceLimit;
    6.     BYTE            *ArgumentTable;
    7. }SYSTEM_SERVICE_TABLE, * PSYSTEM_SERVICE_TABLE, * * PPSYSTEM_SERVICE_TABLE ;
    8.  
    9. typedef struct _SERVICE_DESCRIPTOR_TABLE {
    10.    SYSTEM_SERVICE_TABLE ntoskrnl;  //SST для ntoskrnl.exe
    11.    SYSTEM_SERVICE_TABLE win32k;    //SST для win32k.sys
    12.    SYSTEM_SERVICE_TABLE unused1;   //не используется
    13.    SYSTEM_SERVICE_TABLE unused2;   //не используется
    14. }SERVICE_DESCRIPTOR_TABLE, * PSERVICE_DESCRIPTOR_TABLE, * * PPSERVICE_DESCRIPTOR_TABLE ;
    15.  
    16. extern PSERVICE_DESCRIPTOR_TABLE KeServiceDescriptorTable;
    Однако...
     
  3. 008888

    008888 New Member

    Публикаций:
    0
    Регистрация:
    19 авг 2008
    Сообщения:
    17
    DbgPrint("SSDT Count: 0x%X\nSSDT Count(ULONG): %lu\n",KeServiceDescriptorTable->ntoskrnl.ServiceLimit,(ULONG)KeServiceDescriptorTable->ntoskrnl.ServiceLimit);
    SSDT Count: 0x805E0F55
    SSDT Count(ULONG): 2153647957
     
  4. Wizard109

    Wizard109 New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2006
    Сообщения:
    346
    Даже не знаю что сказать...

    DbgPrint("Count: 0x%p", KeServiceDescriptorTable->ntoskrnl.ServiceLimit);
    Count: 0x00000129
     
  5. CrystalIC

    CrystalIC New Member

    Публикаций:
    0
    Регистрация:
    26 июл 2008
    Сообщения:
    500
    Таблица выровнена в памяти на 4 байта. Читайте ссылку(есть такая проблема в некоторых версиях).
     
  6. 008888

    008888 New Member

    Публикаций:
    0
    Регистрация:
    19 авг 2008
    Сообщения:
    17
    что-то я по ссылке выше решения не нашел, впрочем как и поиском. Да, где-то Clerk упоминал про смещение, я так понимаю нужно использовать #pragma pack(1) ? статей бы по теме, насколько я понял смещение появляется только в xp и выше?
     
  7. maksim_

    maksim_ New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2009
    Сообщения:
    263
    А почему нельзя сделать мап, а оттуда уже выковыривать всё что нужно? тогда можно даже и с преобразованием оффсетов не возиться - система сразу загрузит секции по нужным адресам.
     
  8. 008888

    008888 New Member

    Публикаций:
    0
    Регистрация:
    19 авг 2008
    Сообщения:
    17
    Вообщем с количеством записей тоже разобрался.да и в коде разобрался..всем спасибо.
     
  9. d2k9

    d2k9 Алексей

    Публикаций:
    0
    Регистрация:
    14 сен 2008
    Сообщения:
    325
    Автор поделись получением оригинальной SSDT из файла ;)
     
  10. reader323

    reader323 New Member

    Публикаций:
    0
    Регистрация:
    8 июл 2009
    Сообщения:
    134
    d2k9
    Умник, ещё раз для непонятливых, качай SDTRestore и разбирайся. Да она для r3. Да она опенсурс. Да это можно приспособить для анхука. Да ты не умник. И да я знаю гораздо больше тебя.
     
  11. d2k9

    d2k9 Алексей

    Публикаций:
    0
    Регистрация:
    14 сен 2008
    Сообщения:
    325
    reader323
    И чё ты прицепился? Надоело сосать лапу? Я сам решу что мне делать. А знаешь ты только как в воздух пукать.
     
  12. d2k9

    d2k9 Алексей

    Публикаций:
    0
    Регистрация:
    14 сен 2008
    Сообщения:
    325
    Ухаха, нашёл дров написанный на дельфи который анхукает SSDT теневую таблицу и сработал без всяких правок с 1-ого раза (всякие примеры от мс-рема со встроенным LDasm и т.д. систему в бсод уводили) - йа в шоке, перевожу на Си :)
     
  13. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    d2k9
    http://tinyurl.com/ybmg4wl
     
  14. d2k9

    d2k9 Алексей

    Публикаций:
    0
    Регистрация:
    14 сен 2008
    Сообщения:
    325
    Clerk
    Проблема была не в детекте теневой, а чтении оригинала с файла.