список потоков

Тема в разделе "WASM.WIN32", создана пользователем cresta, 11 мар 2006.

  1. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    В компе живёт клоп в виде выскакивающего рекламного окошка. Решил его поймать. Spy++ показал ID процесса (csrss) и ID потока. Не удается найти стартовый адрес клопа, чтобы рассмотреть его внимательней. Делаю так:

    получаю SystemProcessesAndThreadsInformation, затем по количеству ThreadCount просматриваю стартовые адреса:


    Код (Text):
    1. SYSTEM_PROCESSES *      ptr;
    2. SYSTEM_THREADS*         pThreads;
    3.  
    4. if (ptr->ProcessId==424){
    5.     pThreads = &ptr->Threads[0];
    6.     thCnt = ptr->ThreadCount;
    7.     while (thCnt) {
    8.         DbgPrint ("ThreadID = %X, addr = %X", pThreads->ClientId.UniqueThread, pThreads->StartAddress);
    9.         pThreads ++;
    10.         thCnt --;
    11.     }
    12. }




    В DbgView выводится:



    ThreadID = 0, addr = 8231C

    ThreadID = F, addr = 1B0

    ThreadID = 1B4, addr = 1A8

    ThreadID = 1A8, addr = 75B141F0

    ThreadID = 75B137E2, addr = 7FB

    ThreadID = EF44, addr = 1C6452F

    ThreadID = 1C6452F, addr = 46BF8998

    ThreadID = 46BF8998, addr = 0

    ThreadID = 0, addr = 0

    ThreadID = 0, addr = 0



    В списке нет ID потока, да и сами адреса какие-то левые.

    Почему?
     
  2. OlegA11

    OlegA11 New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2006
    Сообщения:
    102
    Возможно она перешватывает эту API и видоизменяет выходные данные...

    Хм... а физически(на харде) ты его поймал?
     
  3. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Апи не перехватывается. К тому же такого рода данные выводятся для всех процессов.
     
  4. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    если не перехватываются апи то через тулхелп не проще ?

    hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);

    if ( hSnap != INVALID_HANDLE_VALUE )

    {

    Thread.dwSize = sizeof(THREADENTRY32);

    if ( Thread32First(hSnap, &Thread) )

    do

    {

    if ( Thread.th32OwnerProcessID == dProcessId )



    и получаешь заветный поток )

    Попробуй .. если не получится - значит перехватывает



    А еще оля может аттачится к процессам и показывать треды. И их процедуры. Попробуй и этот вариант.
     
  5. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Да сначала именно через Toolhelp решил, а глянул в THREADENTRY32 - нет там поля StartAddress, толку от информации в THREADENTRY32 ноль.



    Олю попробуем, интересно то, почему в SYSTEM_THREADS должна была оказаться осмысленная информация, а там - мусор :dntknw:
     
  6. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Может, я неправильно адресую структуру? Использую такие объявления:


    Код (Text):
    1. typedef struct _SYSTEM_THREADS {
    2.     LARGE_INTEGER   KernelTime;
    3.     LARGE_INTEGER   UserTime;
    4.     LARGE_INTEGER   CreateTime;
    5.     ULONG           WaitTime;
    6.     PVOID           StartAddress;
    7.     CLIENT_ID       ClientId;
    8.     KPRIORITY       Priority;
    9.     KPRIORITY       BasePriority;
    10.     ULONG           ContextSwitchCount;
    11.     DWORD           State;
    12.     DWORD           WaitReason;
    13. } SYSTEM_THREADS, *PSYSTEM_THREADS;
    14.  
    15. typedef struct _SYSTEM_PROCESSES { // Information Class 5
    16.     ULONG           NextEntryDelta;
    17.     ULONG           ThreadCount;
    18.     ULONG           Reserved1[6];
    19.     LARGE_INTEGER   CreateTime;
    20.     LARGE_INTEGER   UserTime;
    21.     LARGE_INTEGER   KernelTime;
    22.     UNICODE_STRING  ProcessName;
    23.     KPRIORITY       BasePriority;
    24.     ULONG           ProcessId;
    25.     ULONG           InheritedFromProcessId;
    26.     ULONG           HandleCount;
    27.     ULONG           Reserved2[2];
    28.     VM_COUNTERS     VmCounters;
    29.     //IO_COUNTERS   IoCounters; // Windows 2000 only
    30.     SYSTEM_THREADS  Threads[1];
    31. } SYSTEM_PROCESSES, *PSYSTEM_PROCESSES;
     
  7. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    typedef struct SYSTEM_THREADS

    {

    LARGE_INTEGER KernelTime,

    UserTime,

    CreateTime;

    DWORD WaitTime;

    PVOID StartAddress;

    CLIENT_ID ClientId;

    DWORD Priority,

    BasePriority,

    ContextSwitchCount;

    DWORD State;

    DWORD WaitReason;

    } SYSTEM_THREADS, *PSYSTEM_THREADS;



    typedef struct SYSTEM_PROCESSES

    {

    DWORD NextEntryDelta;

    DWORD ThreadCount;

    DWORD Reserved1[6];

    LARGE_INTEGER CreateTime;

    LARGE_INTEGER UserTime;

    LARGE_INTEGER KernelTime;

    UnicodeString ProcessName;

    DWORD BasePriority;

    DWORD ProcessId;

    DWORD InheritedFromProcessId;

    DWORD HandleCount;

    DWORD Reserved2[2];

    VM_COUNTERS VmCounters;

    IO_COUNTERS IoCounters;

    SYSTEM_THREADS Threads[];

    } SYSTEM_PROCESSES, *PSYSTEM_PROCESSES;



    вот у меня так
     
  8. OlegA11

    OlegA11 New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2006
    Сообщения:
    102


    Думаю, не лишним бы было, если бы ты назвал свою ОСь.:)
     
  9. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Судя по закомментированному IO_COUNTERS IoCounters

    у меня вероятно XP
     
  10. CARDINAL

    CARDINAL Member

    Публикаций:
    0
    Регистрация:
    23 янв 2004
    Сообщения:
    551
    Адрес:
    Moscow
    cresta

    возьми айс выставь бряку на окошко а дальше смотри уже кому код принадлежит и по шаблону поищи на диске, для начала можно даже дампануть.
     
  11. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    CARDINAL



    Клопа я уже поймал вручную, а вот непонятности с информацией в SYSTEM_THREADS остались...