Перехват API, что не так

Тема в разделе "WASM.WIN32", создана пользователем xenom0rph, 2 май 2009.

  1. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    А зачем вобще импорт. Подобный код следует реализовать в виде пикода.
     
  2. onSide

    onSide New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    476
    Clerk
    Это что шутка такая ?)
    Пипод это как в бейсике? Хотя как в бейсике я плохо представляю.
    Там этот пикод типа на виртуалке бейсика выполняется? Погуглил, таки да) Только каким боком это тут?))
     
  3. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    (PIC) - Position Independent Code .D
     
  4. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    В руткитах импорт ахаха.)
     
  5. xenom0rph

    xenom0rph New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    59
    Clerk
    думаю на данном этопе можно без этого обойтись!
    так как всё же убрать эту:
    unresolved external symbol _memcmp referenced in function "long __stdcall NewZwQuerySystemInformation(unsigned long,void *,unsigned long,unsigned long *)" (?NewZwQuerySystemInformation@@YGJKPAXKPAK@Z)
     
  6. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    =))))))))))))))))))))
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Ну так ядро ведь не экспортирует memcmp(), конечно что неоткуда взять. Наверно асм вставки не известно как делать, тогда подойдёт чтолибо типа RtlCompareMemory().
     
  8. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    #pragma intrinsic(memcmp) + Enable Intrinsic Functions /Oi
     
  9. xenom0rph

    xenom0rph New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    59
    вообще незамсловато я убрал это так
    #pragma intrinsic( memcmp )
    щаз буду тестировать, но походу не рабоатет, ну хоть, скомпилировалось, аля отладчик
     
  10. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    да, не экспортируется увы
    ну сам напиши ее
    10 сток ведь
     
  11. xenom0rph

    xenom0rph New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    59
    вообщем не рабоатает, ставлю бряк на функцию NewZwQuerySystemInformation, вызываю диспетчер, в отладчике ни каких эмоций, процесс виден.
     
  12. ntcdm

    ntcdm New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2007
    Сообщения:
    247
    onSide
    Она и в кернел моде загружена, висит в списке модулей.
    Смысл в том, что можно узнать № системного вызова, стандарнтым методом, считав +1 байт от начала функции.
     
  13. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    KiSystemServiceRepeat трассировать.
     
  14. ntcdm

    ntcdm New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2007
    Сообщения:
    247
    xenom0rph
    Попробуй проставить побольше вызовов DbgPrint в разных местах а потом смотреть результат через DebugView
     
  15. xenom0rph

    xenom0rph New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    59
    ну тут вроде понятно что не ставится хук на NtQuerySystemInformation, вообщем вот что меня смущает, а исходника что я копаю вот такой код
    Код (Text):
    1. ...
    2. #define HOOK_SYSCALL(_Function, _Hook, _Orig )  \
    3.        _Orig = (POVID) InterlockedExchange( (PLONG) &MappedSystemCallTable[SYSCALL_INDEX(_Function)], (LONG) _Hook)
    4.  
    5. ...
    6. ZWQUERYSYSTEMINFORMATION        OldZwQuerySystemInformation;
    7. ...
    8. OldZwQuerySystemInformation =(ZWQUERYSYSTEMINFORMATION)(SYSTEMSERVICE(ZwQuerySystemInformation));
    9. HOOK_SYSCALL( ZwQuerySystemInformation, NewZwQuerySystemInformation, OldZwQuerySystemInformation );
    Так вот тут естественоо ошибка в макросе 3 параметр имеет тип PVOID а мы ему пытаемя подсунуть ZWQUERYSYSTEMINFORMATION.

    Я не долго думая переписал макрос и поставил туда за место PVOID , ZWQUERYSYSTEMINFORMATION! но что то мне подсказывает, что это не правильно и причина в этом. Вот я только пока не могу понять. как тут это всё правильно привести к общему виду?
     
  16. xenom0rph

    xenom0rph New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    59
    да и ещё я функцию DrvUnload не написал до конца, т.е. всё что он у меня создает в процессе работы он не выгружает. может быть из за этого проблеммы какие. я имеюю виду что не вообще вообщем, а именно с утсановкой хука?
     
  17. onSide

    onSide New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    476
    Помоему весь этот пример из книжки Хогланда "Руткиты". Там все это есть с подробнейшими описаниями, рекомендую ознакомиться ))
     
  18. xenom0rph

    xenom0rph New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    59
    onSide
    не книга у меня только Колисниченоко "Руткиты под Windows", да исходники с rootkit.com вот и весь арсенал)
    там есть тоже описание, но как то размыто, вроде всё понятно, а на деле всё надо править. может в этом свой прикол, но хоть какие подсказки были)) Вообщем не фига не работает как не крути. вот что расковырял в отладчике
    если посмотреть что там творится наведением курсором на параметры
    HOOK_SYSCALL( ZwQuerySystemInformation, NewZwQuerySystemInformation, OldZwQuerySystemInformation );
    OldZwQuerySystemInformation - получает адрес функции ZwQuerySystemInformation.
    А вот сама ZwQuerySystemInformation, если на неё навести пишет одни error.
     
  19. xenom0rph

    xenom0rph New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    59
    ну не в какую не хочет, он работать. Я вот даже ради интереса, взял исходники с руткит.ком и скомпилировал их командой build. всё нормально всё работает, компилирую в студии ошибки
    Код (Text):
    1. 1>.\include\hide.cpp(196) : error C2440: '=' : cannot convert from 'PVOID' to 'PVOID *'
    2. 1>        Conversion from 'void*' to pointer to non-'void' requires an explicit cast
    3. 1>.\include\hide.cpp(198) : error C2440: '=' : cannot convert from 'PVOID' to 'ZWQUERYSYSTEMINFORMATION'
    4. 1>        Conversion from 'void*' to pointer to non-'void' requires an explicit cast
    Ошибки то элементарные, но почему build их пропускает, а сутдия, нет? Если же всё подправить, что бы компилировалось в студии, так тогда не работает. ппц.
     
  20. K10

    K10 New Member

    Публикаций:
    0
    Регистрация:
    3 окт 2008
    Сообщения:
    1.590
    xenom0rph
    ассемблер не пробовал?