32 bit TO 64 bit

Тема в разделе "WASM.X64", создана пользователем sasha_s, 7 дек 2006.

  1. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    интересно, те кто советовали сплайсинг под х64 - они делали его или так, титиретически
    [тут много чего титиретически заявляется ваще ;')]
    хотелось бы узнать процент сакцесса ... для прикола

    лично я в кернеле х64 только лонг_птр-ы подменяю и то далеко-далеко не везде

    юзайте новые колбэк-функции кстати, там кое-что есть, реестр например неплохо так
     
  2. wr123

    wr123 New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2008
    Сообщения:
    6
    а можно немного поподробнее? что за технология и если где чего есть почитать? а контроль операций с файловой системой и процессами там реализован?
     
  3. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    МСДН
    пока только реестр могу похвалить - остальное в зачаточном виде
    CmRegisterCallback, ObRegisterCallbacks ...

    ^_^ а драйвер-фильтр на что? легаси, мини - чего не хватает-то?
     
  4. wr123

    wr123 New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2008
    Сообщения:
    6
    Решив попытаться всё-таки заставить работать драйвер с хуками функций из SSDT, столкнулся с невозможностью загрузить драйвер. В качестве теста использовался пример из 4 главы книги Хоглунда и Батлера "Руткиты Внедрение в ядро Windows". Ниже приведу ключевую часть исходника. Полная версия лежит здесь http://www.rootkit.com/vault/fuzen_op/HideProcessHookMFL.zip
    Код (Text):
    1. #pragma pack(1)
    2. typedef struct ServiceDescriptorEntry {
    3.         unsigned int *ServiceTableBase;
    4.         unsigned int *ServiceCounterTableBase; //Used only in checked build
    5.         unsigned int NumberOfServices;
    6.         unsigned char *ParamTableBase;
    7. } ServiceDescriptorTableEntry_t, *PServiceDescriptorTableEntry_t;
    8. #pragma pack()
    9.  
    10. __declspec(dllimport)  ServiceDescriptorTableEntry_t KeServiceDescriptorTable;
    11.  
    12. #define SYSTEMSERVICE(_function)  KeServiceDescriptorTable.ServiceTableBase[ *(PULONG)((PUCHAR)_function+1)]
    13. #define SYSCALL_INDEX(_Function) *(PULONG)((PUCHAR)_Function+1)
    14. #define HOOK_SYSCALL(_Function, _Hook, _Orig )  \
    15.        _Orig = (PVOID) InterlockedExchange( (PLONG) &MappedSystemCallTable[SYSCALL_INDEX(_Function)], (LONG) _Hook)
    16.  
    17. NTSTATUS DriverEntry(IN PDRIVER_OBJECT theDriverObject,
    18.                      IN PUNICODE_STRING theRegistryPath)
    19. {
    20.    theDriverObject->DriverUnload  = OnUnload;
    21.  
    22.    m_UserTime.QuadPart = m_KernelTime.QuadPart = 0;
    23.  
    24.    OldZwQuerySystemInformation =(ZWQUERYSYSTEMINFORMATION)(SYSTEMSERVICE(ZwQuerySystemInformation));
    25.  
    26.    g_pmdlSystemCall = MmCreateMdl(NULL, KeServiceDescriptorTable.ServiceTableBase, KeServiceDescriptorTable.NumberOfServices*4);
    27.    if(!g_pmdlSystemCall)
    28.       return STATUS_UNSUCCESSFUL;
    29.    MmBuildMdlForNonPagedPool(g_pmdlSystemCall);
    30.    g_pmdlSystemCall->MdlFlags = g_pmdlSystemCall->MdlFlags | MDL_MAPPED_TO_SYSTEM_VA;
    31.    MappedSystemCallTable = MmMapLockedPages(g_pmdlSystemCall, KernelMode);
    32.  
    33.    HOOK_SYSCALL( ZwQuerySystemInformation, NewZwQuerySystemInformation, OldZwQuerySystemInformation );
    34.                              
    35.    return STATUS_SUCCESS;
    36. }
    При попытке загрузить данный драйвер при помощи OsLoader или NET START возникает ошибка 127: Не найдена указанная процедура. Многочисленные эксперименты показали что проблема заключается в структуре KeServiceDescriptorTable, которая вероятно экспортируется отличным образом от 32-битной windows. Рабочей мтеодики получения адреса и работы с KeServiceDescriptorTable под x64 пока найти не удалось.

    подскажите кто знает в чём может быть пролема и как её можно решить?
     
  5. Av0id

    Av0id New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2004
    Сообщения:
    87
    неважно какой проц, на то и она и виртуальная машина, на x86 тоже работать будет
     
  6. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    мммда? а это тогда зачем? так просто от [...] делать написали?

    утилита чтобы узнать будет ли на вашем конкретном процессоре запускаться 64-вара:
    http://download3.vmware.com/software/vi/VMware-CPU-Compatibility-e.x.p-102204.zip
     
  7. wr123

    wr123 New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2008
    Сообщения:
    6
    а есть ли в учебных целях рабочие примеры легаси и смини драйвер-фильтров?(совсем простые, чтобы понять основной смысл)
     
  8. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    wr123
    DDK samples, filemon sources
     
  9. wr123

    wr123 New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2008
    Сообщения:
    6
    проблема всё ещё актуальна, буду рад любым идеям