Как найти таблицу описателей процесса в Windows XP SP2-3

Тема в разделе "WASM.NT.KERNEL", создана пользователем int2eh, 20 мар 2009.

  1. int2eh

    int2eh Alexander Leevy

    Публикаций:
    0
    Регистрация:
    19 авг 2007
    Сообщения:
    106
    Адрес:
    Москва
    Более-менее документированно/легально subj? Кто знает?
    Помогите!!!
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    ObjectTable ?
    Считать из EPROCESS.ObjectTable указатель. Но смещение этого поля может меняться в версиях, чтобы его найти можно раздизасмить например экспортируемую ObQueryObjectAuditingByHandle(). Хотя лучше сделать таблицу версия/смещение.
     
  3. int2eh

    int2eh Alexander Leevy

    Публикаций:
    0
    Регистрация:
    19 авг 2007
    Сообщения:
    106
    Адрес:
    Москва
    Clerk
    EPROCESS.ObjectTable у меня уже в XP SP2 не правильное, скорее всего надо через ObQueryObjectAuditingByHandle()
     
  4. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    int2eh
    Почему не правильное ?
    У меня вроде валидное значение, щас ольгой ядро открыл(ядерным не могу пока), вот часть EPROCESS:
    Код (Text):
    1. ;EPROCESS
    2. $ ==>     001B0003
    3. $+4       00000000
    4. $+8       81635330
    5. $+C       81635330
    6. $+10      81635338
    7. $+14      81635338
    8. $+18      18DFC000
    9. $+1C      1145D000
    10. $+20      00000000
    11. $+24      00000000
    12. $+28      00000000
    13. $+2C      00000000
    14. $+30      000020AC
    15. $+34      00000001
    16. $+38      00000002
    17. $+3C      00000002
    18. $+40      81635368
    19. $+44      81635368
    20. $+48      00000000
    21. $+4C      00000000
    22. $+50      8179C740
    23. $+54      8179C740
    24. $+58      00000000
    25. $+5C      00000003
    26. $+60      06080002
    27. $+64      00000000
    28. $+68      3A000000
    29. $+6C      00000000
    30. $+70      FE563B26
    31. $+74      01C9A8E4
    32. $+78      00000000
    33. $+7C      00000000
    34. $+80      00000002
    35. $+84      00000E0C
    36. $+88      80569658
    37. $+8C      817F0B40
    38. $+90      000005C8
    39. $+94      00004404
    40. $+98      0000005D
    41. $+9C      00000770
    42. $+A0      000044DC
    43. $+A4      000000BD
    44. $+A8      0000005D
    45. $+AC      00F0E000
    46. $+B0      00EB0000
    47. $+B4      F8A63014
    48. $+B8      817F0B6C
    49. $+BC      FD283BE8
    50. $+C0      E1656B60
    51. $+C4      E54FF6F8  ;<---
    52. $+C8      E41B28C1
    E54FF6F8 Валидный указатель вполне.., другое что формат таблицы может быть изменён. Да и та функция это поле читает:
    Код (Text):
    1. 00507A9D            .  64:A1 24010000  mov eax,dword ptr fs:[124]   ;KPRCB.CurrentThread:PKTHREAD
    2. 00507AA3            .  8B55 08         mov edx,dword ptr ss:[ebp+8]
    3. 00507AA6            .  8BF0            mov esi,eax
    4. 00507AA8            .  B9 00000080     mov ecx,80000000
    5. 00507AAD            .  8BC2            mov eax,edx
    6. 00507AAF            .  23C1            and eax,ecx
    7. 00507AB1            .  3BC1            cmp eax,ecx
    8. 00507AB3            .  0F84 82290200   je ntoskrnl.0052A43B
    9. 00507AB9            >  8B46 44         mov eax,dword ptr ds:[esi+44]    ;KPRCB.ApcState.Process:PEPROCESS
    10. 00507ABC            .  8BB8 C4000000   mov edi,dword ptr ds:[eax+C4]    ;EPROCESS.ObjectTable:PHANDLE_TABLE
    В общем нужно в сурцах смотреть.
     
  5. int2eh

    int2eh Alexander Leevy

    Публикаций:
    0
    Регистрация:
    19 авг 2007
    Сообщения:
    106
    Адрес:
    Москва
    Clerk

    Спасибо.
    У меня HANDLE_TABLE валидная, но неправильная. Однако, и один скрытый процесс с именем образа "яяяя" я нашел у себя :) который может и портит всё!
     
  6. int2eh

    int2eh Alexander Leevy

    Публикаций:
    0
    Регистрация:
    19 авг 2007
    Сообщения:
    106
    Адрес:
    Москва
    Да, всё портит(ил) гад "яяяя"!!!
    Даже через LIST_ENTRY HandleTableList ничего не выходит, только вижу одну испорченную HANDLE_TABLE для UniqueProcessId = 0