multithreading - Få den aktuelle lokalitet af en tråd i en anden Windows-proces

Indlæg af Hanne Mølgaard Plasc

Problem



Er det muligt at få den aktuelle lokalitet af en tråd, der lever i en anden Windows-proces? Er der et værktøj, der viser dette eller måske et Win32 API-opkald?

Bedste reference


Lokaliteten er gemt i TEB'en, så du skal kunne åbne processen med PROCESS\_VM\_READ rettigheder og tråden med THREAD\_QUERY\_INFORMATION og derefter kalde OpenThread () + NtQueryInformationThread (ThreadBasicInformation) og derefter få TEB-adressen i THREAD\_BASIC\_INFORMATION og læs den med ReadProcessMemory (). [1] [2] [3] [4]


Alt dette er ukodificeret og kan ændre sig når som helst, du skal også håndtere WOW64 osv. ...

Andre referencer 1


Der er ingen API-opkald til dette. Hvis du antager, at du ikke kan ændre mål appen for at give oplysningerne på efterspørgsel, er den eneste løsning, jeg kan se, en global krog. Dette giver dig mulighed for at indsprøjte din kode i den pågældende tråd.