ObQueryNameString

Тема в разделе "WASM.WIN32", создана пользователем LuckyDevil, 12 май 2005.

  1. LuckyDevil

    LuckyDevil New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2005
    Сообщения:
    278
    Адрес:
    Uzbekistan
    Всем доброго!!!

    Хотелось бы получить помощь или разъяснение, что и почему.

    Я пытаюсь переписать чужой драйвер, я новичек в этом деле, даже более, многие вещи для меня "темный лес", но все же...

    Суть проблемы такова,

    функция ObQueryNameString на определенном шагу подвисает, т.е. не возарашет никакого результат, в частности это происходит при попытвке получить данные с SERVICES.EXE;

    0264: Thread SERVICES.EXE(000000E8):dntknw:00000388)

    0268: Token

    026C: Event

    0270: File

    в чем может быть проблема?
     
  2. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
  3. LuckyDevil

    LuckyDevil New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2005
    Сообщения:
    278
    Адрес:
    Uzbekistan
    Four-F, я обзательно просмотрю данные ссылки, но прежде хотел кинуть часть кода, быть сожет у тебя будут предложения, каким образом можно было бы получить тот же рузультат иным способом, и так вот они(на С++ оригинал, на дельфи мой вариант адаптации):



    С++, Delphi
     
  4. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine


    На Делфи? Ну-ну..
     
  5. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    На дельфи драйвер лучше не пробуй писать, куда проще это делать на си.



    З.Ы А где ты DDK для дельфи взял? или сам переписывал?
     
  6. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    Дожили. Уже дрова на делфи пишут :dntknw: Куды ж бедному крестьянину податься...
     
  7. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576




    Да, можно по разному извращаться, я например писал

    плагин для Иды на fasm :derisive:



    Главное что на VB дрова ещё не начали писать :derisive:
     
  8. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    <font color="gray][ LuckyDevil</font><!--color--><font color="gray]: ...каким образом можно было бы получить тот же рузультат иным способом... ]</font><!--color-->



    ???
     
  9. LuckyDevil

    LuckyDevil New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2005
    Сообщения:
    278
    Адрес:
    Uzbekistan
    Four-F,Asterix,Ms Rem, да я знал, что услышу что-то подобное ))), вот почему в первом посте я промолчал о дельфи )))).

    Вообщем, я просто пытаюсь написать на дельфи более менее серьезный драйвер, пусть и не свой, но сейчас для главное знать и быть уверенным, что это реально ))).

    Из потраченного месяца, на все это дело, можно сказать что писать драйверы можно, но... не все так просто. В большей степени из-за моих кривых ручек и не знания С++. И конечно же я не думаю что в Дельфи удасться написать сложный драйвер, все-таки существуют проблемы и это проблемы представлений типов в самом дельфи (((.

    Это лирика, а вопрос остается открытым, я предлогаю отбросить Ваши возмущения по поводу как и на чем, а просто помочь мне разобраться, с данным кодом, потому как повторюсь , скорей всего я сделал ошибки, но самому разобраться сложно, все-что я смог сделать я выложил на все общее обозрение.

    Ms Rem, коммерческая весия ДДК для дельфи.... скажу так, я общался с человеком , который этим занимается в серьез, просто так он никому ничего не даст, потому как, потрать не один месяц на перенос всех структур ДДК...., не очень простое дело. То, на чем я пишу, это моего собственного изготовления, по ходу тестирования, обнаруживаю ошибки в описании структур, правлю на лету. Хочу сразу же всех предупредить, не стоит возмущаться и клеймить меня ))), в первую очеред я это делаю, для себя.

    Кстати особый фэнкс создателям сайта и не посредственно Four-F за статьи, так же я тут нашел много не документированных структур. Если у когто-то есть более свежие и полные недокументированные описания структур и функций ядра и вам не жалко этим поделиться, кинте на мыло lucky.devul@mail.ru.
     
  10. LuckyDevil

    LuckyDevil New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2005
    Сообщения:
    278
    Адрес:
    Uzbekistan
    Ребята, я жду вашей помоши, уж очень она мне нужна!!!

    Спасибо за ответы и советы.
     
  11. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    LuckyDevil

    Раньше, когда я начинал писать драйвера то тоже шел твоим путем, но потом понял что это ужасный гимор.

    Забей на это дело и учи с++, так как если занялся дровами то все равно придется.



    А коммерческий ддк для дельфи имхо никто не купит, так как смысла в нем нет.
     
  12. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    LuckyDevil, присоединяясь к мнению Ms Rem, скажу, что ты делаешь бесполезную работу. Если бы ты портировал DDK для делфистов как коммерческий проект, в этом ещё был бы какой-то смысл, но перекладывать из пустого в порожнее... Посмотри на приведенный тобой код...
    Код (Text):
    1. =    -> :=
    2. {}   -> begin/end
    3. 0x70 -> $70


    и т.д и т.п.



    Ну и какой в этом смысл? Изменения чисто косметические и говорить о незнании С не приходится. Ты же смог портировать эту функцию. Значит основы есть, а месяца тебе за глаза и за уши хватить, чтоб с деталями разобраться. Прибавь к этому огромное кол-во готового дровяного кода на С, который можно просто прикручивать + оф. поддержка ms + все инструменты/утилиты/библиотеки заточены под С. Короче, бросай ты это гнилое занятие.



    Касательно вопроса. Ответ на него содержится в самом конце по второй ссылке, которую я привёл выше. У тебя же всё виснет на объекте "файл". Из принципиально других способов я вижу только ручное прохождение по структурам ядра. Если это нужно только для объектов одного типа, то можно попарится. Если же нужно общее решение, то флаг тебе в руки и исходники системы на винт ;)
     
  13. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
  14. LuckyDevil

    LuckyDevil New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2005
    Сообщения:
    278
    Адрес:
    Uzbekistan
    Four-F, mdya...

    Ya vse ponimayu, prosto zaciklilo. Po povodu <font color="red]Касательно вопроса. Ответ на него содержится в самом конце по второй ссылке, которую я привёл выше. У тебя же всё виснет на объекте "файл".</font><!--color--> , u menya to visnet, a vot v origenal'noi versii net, otsyuda vivod ya ne pravilno chto-to sdelal. Jalko chto nikto ne vsyalsya za analiz moego koda

    (((((
     
  15. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    <font color="gray][ LuckyDevil</font><!--color--><font color="gray]: u menya to visnet, a vot v origenal'noi versii net, otsyuda vivod ya ne pravilno chto-to sdelal ]</font><!--color-->



    Из вопроса совершенно не понятно, что оригинал не виснет, а твой код виснет. Это несколько меняет дело. Тебе нужно выяснить, а пытается ли вообще оригинальный код вызывать ObQueryNameString на том хендле, на котором обламывается твой код. Очень может быть, что клиент драйвера каким-то образом определяет потенциально опасные хендлы и не дергает для них драйвер. Если твой код всё таки работает для других хендлов, значит портирование правильно сделано. Хотя работать он не может...


    Код (Text):
    1. //
    2. // тут у меня вообщем облом при попытке выполнить
    3. // KrRtlUnicodeStringToAnsiString появляется синий экран
    4. //
    5. {if(NT_SUCCESS(KrRtlUnicodeStringToAnsiString(
    6.                         <font color="red]@(PDOB_NAME_STRING(out_buffer)^.name.Buffer),</font><!--color-->
    7.                         PUNICODE_STRING(buffer),FALSE)))




    Читай внимательно доку и см. оригинал. Первый параметр д.б. указателем на ANSI_STRING, но не на ANSI_STRING.Buffer!



    Откуда код то? С Rootkit.com ? ;)





    <font color="gray][ LuckyDevil</font><!--color--><font color="gray]: Jalko chto nikto ne vsyalsya za analiz moego koda ]</font><!--color-->



    Тут по-китайского мало кто балакает ;) К тому же код довольно тяжело читается. Постоянное приведение типов - глазам больно. А в сутках всего 24 часа.
     
  16. LuckyDevil

    LuckyDevil New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2005
    Сообщения:
    278
    Адрес:
    Uzbekistan
    Four-F, vot imenno chto on rabotaet, no pri oprose services.exe visnet

    <font color="red]Читай внимательно доку и см. оригинал. Первый параметр д.б. указателем на ANSI_STRING, но не на ANSI_STRING.Buffer!</font><!--color-->, skorei vsego ya prosto metodom tika pitalsya dobit'sya resul'tata, v pervonachal'noi moei versii bilo tak :

    KrRtlUnicodeStringToAnsiString(@(PDOB_NAME_STRING(out_buffer)^.name),P UNICODE_STRING(buffer),FALSE)

    BSOD taje voznikal ((((

    a kod deistvitel'no s Rootkit.com
     
  17. LuckyDevil

    LuckyDevil New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2005
    Сообщения:
    278
    Адрес:
    Uzbekistan
    Mne kak raz i nujno znat' mnenye o tom, pravil'no li ya delayu prvidenya tipov, esli net to kak eto mojno sdelat' pravil'no.

    ((( samomu ne razobrat'sya
     
  18. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    Тут я не помошник - в делфи я не шарю.
     
  19. wish3

    wish3 New Member

    Публикаций:
    0
    Регистрация:
    31 янв 2005
    Сообщения:
    29
    Адрес:
    Ukraine
    С первого взгляда правильно.

    ...

    @(PDOB_NAME_STRING(out_buffer)^.name.Buffer)

    Скорее всего Buffer указатель?? Зачем еще его смещение брать??

    Второй вариант

    @PDOB_NAME_STRING(out_buffer)^.name

    Как я могу что-то сказать, если я не знаю что с себя представляет PDOB_NAME_STRING??

    ...

    Поработай отладчиком, ... подампь выше наведеные строчки и все проясниться.
     
  20. LuckyDevil

    LuckyDevil New Member

    Публикаций:
    0
    Регистрация:
    10 мар 2005
    Сообщения:
    278
    Адрес:
    Uzbekistan
    wish3, вот:
    Код (Text):
    1.  
    2. type
    3.     DIB_NAME_STRING = record
    4.        pid: ULONG;
    5.        hwnd: HANDLE;
    6.     end;
    7.     PDIB_NAME_STRING = ^DIB_NAME_STRING;
    8. type
    9.     DIB_TOKEN_HANDLE = record
    10.        hwnd: HANDLE;
    11.     end;
    12.     PDIB_TOKEN_HANDLE = ^DIB_TOKEN_HANDLE;
    13. type
    14.     DOB_UNKNOWN = record
    15.        status: ULONG;
    16.     end;
    17.     PDOB_UNKNOWN = ^DOB_UNKNOWN;
    18. type
    19.     DOB_NAME_STRING = record
    20.        status: ULONG;
    21.        name: ANSI_STRING;
    22.     end;
    23.     PDOB_NAME_STRING = ^DOB_NAME_STRING;
    24. type
    25.     DOB_TOKEN_HANDLE = record
    26.        status: ULONG;
    27.        hwnd: HANDLE;
    28.     end;
    29.     PDOB_TOKEN_HANDLE = ^DOB_TOKEN_HANDLE;
    30.  


    а какой отладчик надо использовать?