Size: a a a

2020 August 08

DP

Denis Paukaev in supapro.cxx
Упростить имеется ввиду убираем пока часть функционала
источник

DP

Denis Paukaev in supapro.cxx
Убеждаемся что работает более простой вариант
источник

VD

Vlad Doc in supapro.cxx
Евгений Горелов
народ подскажите кой-что
DWORD32 *buffer = (DWORD32 *)pIrp->AssociatedIrp.SystemBuffer;
DWORD32 processesPid = *buffer;
PEPROCESS process;
NTSTATUS status = PsLookupProcessByProcessId(processesPid, &process);

if (!NT_SUCCESS(status))
{
 return;
}

PULONG ptr = (PULONG)process;
ULONG offset = 0;

for (ULONG i = 0; i < 512; i++)
{
 if (ptr[i] == processesPid)
 {
  offset = (ULONG)&ptr[i + sizeof(INT_PTR)] - (ULONG)process;
  break;
 }
}

if (!offset)
{
 return;
}

PLIST_ENTRY currListEntry = (PLIST_ENTRY)((ULONG)process + offset);

DbgPrint("Current: %#x", process);
DbgPrint("Prev: %#x", currListEntry);
DbgPrint("process: %#x", process);
DbgPrint("offset: %#x", offset);
DbgPrint("blink: %#x",  currListEntry->Blink);
есть такой код
ищу где записан Pid в PEPROCESS
за ним идет структура PLIST_ENTRY
когда пытаюсь обратится к currListEntry->Blink
наступает хана компу)
Дебаж. А вообще судя по всему ты нащупал адрес фреймбуфера или тип того.
источник

ЕГ

Евгений Горелов... in supapro.cxx
Классно знать бы ещё как дебажить драйвер в кернелмоде
источник

VD

Vlad Doc in supapro.cxx
Евгений Горелов
Классно знать бы ещё как дебажить драйвер в кернелмоде
Принтфом)))
источник

ЕГ

Евгений Горелов... in supapro.cxx
Ну так там в коде на притэфе и вылитает))
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
+, логируй все, что логируется, и смотри потом
источник

VD

Vlad Doc in supapro.cxx
Евгений Горелов
Ну так там в коде на притэфе и вылитает))
Так логируй не после всего, а после каждой строки. И постепенно сужай область факапа.
источник

ЕГ

Евгений Горелов... in supapro.cxx
Ладно, думал мож кто на глаз увидит, чё я там на говнокодил
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Евгений Горелов
народ подскажите кой-что
DWORD32 *buffer = (DWORD32 *)pIrp->AssociatedIrp.SystemBuffer;
DWORD32 processesPid = *buffer;
PEPROCESS process;
NTSTATUS status = PsLookupProcessByProcessId(processesPid, &process);

if (!NT_SUCCESS(status))
{
 return;
}

PULONG ptr = (PULONG)process;
ULONG offset = 0;

for (ULONG i = 0; i < 512; i++)
{
 if (ptr[i] == processesPid)
 {
  offset = (ULONG)&ptr[i + sizeof(INT_PTR)] - (ULONG)process;
  break;
 }
}

if (!offset)
{
 return;
}

PLIST_ENTRY currListEntry = (PLIST_ENTRY)((ULONG)process + offset);

DbgPrint("Current: %#x", process);
DbgPrint("Prev: %#x", currListEntry);
DbgPrint("process: %#x", process);
DbgPrint("offset: %#x", offset);
DbgPrint("blink: %#x",  currListEntry->Blink);
есть такой код
ищу где записан Pid в PEPROCESS
за ним идет структура PLIST_ENTRY
когда пытаюсь обратится к currListEntry->Blink
наступает хана компу)
offset в улонгах считаешь, а парой строк ниже прибавляешь в байтах
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Даже винапи не предполагает такого обилия кастов на квадратную строку кода
источник

ЕГ

Евгений Горелов... in supapro.cxx
Да я ж только залез в эту скользкую тему, руткиты читаю)
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Вирусы пишешь небось?
источник

ЕГ

Евгений Горелов... in supapro.cxx
Ага, вот начал читать и сразу вирус)
источник

ЕГ

Евгений Горелов... in supapro.cxx
Думаю дай напишу)
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Проблема вероятно в адресной армфметике
источник

ЕГ

Евгений Горелов... in supapro.cxx
Ну да, явно
источник

AB

Artöm Bakri Al-Sarmi... in supapro.cxx
Но без трех окон с открытым мсдн тут не обойтись
источник

ЕГ

Евгений Горелов... in supapro.cxx
Хотя вроде адрес нормальный выводится
источник

VD

Vlad Doc in supapro.cxx
Artöm Bakri Al-Sarmini
Проблема вероятно в адресной армфметике
++. Зафакапил конверсию небось.
источник