Код (Text): ThreadProc proc scr:dword invoke MessageBox,0,scr,$CTA0("Thread"),0 ret ThreadProc endp start proc local hProcess:HANDLE local hThread:HANDLE local oa:OBJECT_ATTRIBUTES local cid:CLIENT_ID local context:CONTEXT local stack:USER_STACK invoke GetCurrentProcess mov hProcess,eax invoke ZwCreateThread,addr hThread,THREAD_ALL_ACCESS,addr oa,hProcess,\ addr cid,addr context,addr stack,TRUE invoke ZwClose,hThread invoke Sleep,2000 invoke ExitProcess,0 start endp Подскажите пожайлуста как правильно собрать USER_STACK, и что именно должно быть в oa.ObjectName? Спасибо!
Запуск полноценного потока с помощью ZwCreateThread не такое легкое дело, как это может показаться сначала. Собственно сам поток запустить будет несложно: <font color="red]Ms-Rem, имей совесть, не ленись делать аттачи</font><!--color--> Самая большая проблема не в этом, а в том, что в таком потоке нельзя будет использовать win32 API, так как о нем ничего не знает сервер подсистемы csrss.exe. Например MessageBoxA в таком потоке работать не будет, и большинство других API тоже. Для запуска полноценного потока нужно информировать сервер подсистемы с помощью CsrClientCallServer, но тут возникает еще одна проблема - коды сообщений csrss различаются в разных версиях windows NT и они недокументированы. Если для 2000 их можно посмотреть в исходниках, то в хр придется дизасмить kernel32. _1687450158__CreateThread.c
Если даже загружу MessageBoxA вручную через LoadLibrary/GetProcAddress ? Дык, лучше юзать просто CreateThread и не рыпаться ?
Flasher если я правильно понял, LoadLibrary/GetProcAddress тоже работать не будут — Все в руках Аллаха, — ответила девушка. — Позвольте, — вдруг повернулся к ней молодой человек с широкими зрачками, мирно глядевший до этого в огромный хрустальный шар. — Как это все? А сознание Будды? Руки Аллаха ведь есть только в сознании Будды. С этим вы не станете спорить? Девушка за прилавком вежливо улыбнулась. — Конечно, нет, — сказала она. — Руки Аллаха есть только в сознании Будды. Но вся фишка в том, что сознание Будды все равно находится в руках Аллаха. (С)Виктор Пелевин / Generation П
GetProcAddress может и будет, а LoadLibrary точно нет. Да и нет разницы, каким образом получен адрес функции, все равно она работать не будет. Бери e-mule, ищи по запросу windows 2000 source code и качай 200 метров.
лучше искать NT4 src - там во-первых больше сырцов, а во-вторых 2k лишь дополняет но не замещает сырки nt4