|
Автор |
Сообщение |
zwuti
Зарегистрирован: 21.02.2009 Сообщения: 2 Откуда: Россия
|
|
|
|
Привет купил Вашу книгу про руткиты , книга отличная не пожалел что купил её.
А вопрос уменя следущий:
в ф-и DriverEntry создал поток
status = PsCreateSystemThread(&hThread,
THREAD_ALL_ACCESS,
NULL,
NtCurrentProcess(),
NULL,
Func,
(PVOID)dev_ext );
if (status != STATUS_SUCCESS)
{
DbgPrint("++DR.sys++ THREAD not create!!");
}
else{
DbgPrint("THREAD go........\r\n");
status = ObReferenceObjectByHandle(hThread,
THREAD_ALL_ACCESS,
NULL,
KernelMode,
(PVOID*)&dev_ext->pThreadObj,
NULL);
if (ntstatus != STATUS_SUCCESS)
{
DbgPrint("ObReferenceObjectByHandle shto-to ne to ....");
}
else
{
DbgPrint("Error");
}
ZwClose(hThread);
ObDereferenceObject( dev_ext->pThreadObj );
далее
VOID Func(PVOID a)
{
PDEVICE_EXTENSION pDeviceExtension = (PDEVICE_EXTENSION) a;
NTSTATUS stat;
LARGE_INTEGER delay;
delay.QuadPart = -10000000*10; // 10 Seconds
stat = ( KeDelayExecutionThread(KernelMode,FALSE,&delay));
if (stat !=STATUS_SUCCESS){
DbgPrint("KEDELAY OK...........");
}
DbgPrint(">> thread message");
DbgPrint("Kill thread may be OK ... ");
//if (pDeviceExtension->bThreadStop)
KeSetPriorityThread ( KeGetCurrentThread(),
LOW_REALTIME_PRIORITY);
PsTerminateSystemThread(STATUS_SUCCESS);
}
Поток создаётся всё работает доходит при отладке в softice до PsTerminateSystemThread и сразу вылетает BSOD: остановлен системный рабочий поток и если не создовать поток всё равно при вызове PsTerminateSystemThread(0) BSOD c той же ошибкой. Писал согласно
DDk и в инете искал многое перепробавал одно и тоже в чём дело то ? |
|
Вернуться к началу |
|
|
zwuti
Зарегистрирован: 21.02.2009 Сообщения: 2 Откуда: Россия
|
|
|
|
Всем спасибо за просмотр после некоторых дороботок перестал BSOD
вылетать. Теперь
Код: |
NTSTATUS DriverEntry.......
................
VOID Func(PVOID a)
{
PDEVICE_EXTENSION pDeviceExtension = (PDEVICE_EXTENSION) a;
KeSetPriorityThread ( KeGetCurrentThread(),
LOW_REALTIME_PRIORITY);
DbgPrint("<== Thread Stop ");
PsTerminateSystemThread(STATUS_SUCCESS);
DbgPrint("==>ThreadStop");
}
ф-я ожидания завершения потока
VOID ExitTHREAD (PDEVICE_EXTENSION dev)
{
DbgPrint("<== ExitTHREAD");
KeWaitForSingleObjects(....dev->htreadObj........ );
ObDereference(.........)
DbgPrint("==>ExitThread");
}
DriverUnload
{
DbgPrint("==>ExitDR");
}
|
1 поток запускается
2 далее последнее что вижу "<== Thread Stop " и всё а где остальные сообщения ?
3 Далее выгружаю драйвер " exitDR" |
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Дело может быть в сервиспаке. Весь код писался под SP1. Почитай там есть замечания относительно SP2. Уже отошел от этой темы и давно не следил за изменениями, вносимыми сервис-паками на системном уровне.
А хотя стоп... Я так понял что ты не видишь DbgPrint("==>ThreadStop"); А как ты его собрался видеть после завершения потока? Ты же завершил его функцией PsTerminateSystemThread |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
|
|
 Главная страница сайта
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|