помогите с ZwCreateThread

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

  1. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Код (Text):
    1. ThreadProc proc scr:dword
    2.        invoke MessageBox,0,scr,$CTA0("Thread"),0
    3.        ret
    4. ThreadProc endp
    5. start proc
    6.      local hProcess:HANDLE
    7.      local hThread:HANDLE
    8.      local oa:OBJECT_ATTRIBUTES
    9.      local cid:CLIENT_ID
    10.      local context:CONTEXT
    11.      local stack:USER_STACK
    12.  
    13.        invoke GetCurrentProcess
    14.        mov hProcess,eax
    15.        
    16.        invoke ZwCreateThread,addr hThread,THREAD_ALL_ACCESS,addr oa,hProcess,\
    17.           addr cid,addr context,addr stack,TRUE
    18.  
    19.        invoke ZwClose,hThread
    20.        
    21.        invoke Sleep,2000
    22.        invoke ExitProcess,0
    23. start endp
    24.  


    Подскажите пожайлуста как правильно собрать USER_STACK, и что именно должно быть в oa.ObjectName?

    Спасибо!
     
  2. Ms Rem

    Ms Rem New Member

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

    Собственно сам поток запустить будет несложно:



    <font color="red]Ms-Rem, имей совесть, не ленись делать аттачи</font><!--color-->



    Самая большая проблема не в этом, а в том, что в таком потоке нельзя будет использовать win32 API, так как о нем ничего не знает сервер подсистемы csrss.exe.

    Например MessageBoxA в таком потоке работать не будет, и большинство других API тоже.

    Для запуска полноценного потока нужно информировать сервер подсистемы с помощью CsrClientCallServer, но тут возникает еще одна проблема - коды сообщений csrss различаются в разных версиях windows NT и они недокументированы. Если для 2000 их можно посмотреть в исходниках, то в хр придется дизасмить kernel32.



    [​IMG] _1687450158__CreateThread.c
     
  3. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640




    Если даже загружу MessageBoxA вручную через LoadLibrary/GetProcAddress ?



    Дык, лучше юзать просто CreateThread и не рыпаться ? :)
     
  4. DelExe

    DelExe New Member

    Публикаций:
    0
    Регистрация:
    22 авг 2005
    Сообщения:
    165
    Ms rem

    Если для 2000 их можно посмотреть в исходниках



    А вот с этого места поподробней :)
     
  5. Sickle

    Sickle New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2003
    Сообщения:
    181
    Flasher





    если я правильно понял, LoadLibrary/GetProcAddress тоже работать не будут :)



    — Все в руках Аллаха, — ответила девушка.

    — Позвольте, — вдруг повернулся к ней молодой человек с широкими зрачками, мирно глядевший до этого в огромный хрустальный шар. — Как это все? А сознание Будды? Руки Аллаха ведь есть только в сознании Будды. С этим вы не станете спорить?

    Девушка за прилавком вежливо улыбнулась.

    — Конечно, нет, — сказала она. — Руки Аллаха есть только в сознании Будды. Но вся фишка в том, что сознание Будды все равно находится в руках Аллаха.



    (С)Виктор Пелевин / Generation П
     
  6. Ms Rem

    Ms Rem New Member

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




    GetProcAddress может и будет, а LoadLibrary точно нет.

    Да и нет разницы, каким образом получен адрес функции, все равно она работать не будет.





    Бери e-mule, ищи по запросу windows 2000 source code и качай 200 метров.
     
  7. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia
    лучше искать NT4 src - там во-первых больше сырцов, а во-вторых 2k лишь дополняет но не замещает сырки nt4
     
  8. CARDINAL

    CARDINAL Member

    Публикаций:
    0
    Регистрация:
    23 янв 2004
    Сообщения:
    551
    Адрес:
    Moscow
    Flasher

    Пишись мне на мыло, дам сцылку