Fórum Obter Nome/Descrição Ou Startaddress De Uma Thread Em Um Processo #399654

24/04/2011

0

Venho lhe pedir uma ajuda, porque o meu conhecimento é limitado
e vire para o conhecimento de vocês.

A situação é esta, alguns devem saber um programa chamado
Process Hacker fez um gerenciador de processos em C. Ele tem uma opção
interessante que quando você clica duas vezes um processo de constantes
Messenger exemplo Explorer ou ... ele traz várias informações
incluindo
Tópicos relacionados com o processo. Ele tem PDD, Ciclos Delta, Start
Endereço prioridade. Bem que eu tentei fazer algo semelhante em Delphi, mas
apenas
Recebo o TID e prioritário ... Eu não posso colocar o Start info
Endereço da seguinte forma: "msiltcfg.dll 0x258!"ou só pode retornar
00630EFA.

O aplicativo Process Hacker traz as informações na imagem abaixo:
 



Como resolver isso? com base no código exemplo a seguir. Se alguém
pode me ajudar eu agradeço. ( weder.fs@gmail.com )

procedure TForm1.Button7Click (Sender: TObject); 
var 
tbi: THREAD_BASIC_INFORMATION; 
hThreadSnap, Process, hThread, ThreadInfo: THandle; 
te32: tagTHREADENTRY32; 
me32: MODULEENTRY32; 
th32: THREADENTRY32; 
dwPID: DWORD; 

startaddr: Pointer; 
Status: LongInt; 
Error: DWORD; 
modname: String; 
hToken: DWORD; 
TKP: TOKEN_PRIVILEGES; 
otkp: TOKEN_PRIVILEGES; 
dwLen: dword; 


begin 
hThreadSnap: = CreateToolhelp32Snapshot (TH32CS_SNAPTHREAD, 0); 
= INVALID_HANDLE_VALUE then if hThreadSnap 
Exit; 
try 
dwPID: = GetProcessID (Trim (Edit1.Text)); 

te32.dwSize: = SizeOf (THREADENTRY32); 

me32.dwSize: = SizeOf (MODULEENTRY32); 

ListBox1.Items.Clear; 
ListBox2.Items.Clear; 

if not Thread32First (hThreadSnap, te32) then 
Exit; 
repeat 
then if te32.th32OwnerProcessID = dwPID 
begin 
hThread: = OpenThread (THREAD_ALL_ACCESS, 
False, te32.th32ThreadID); 
status: = ZwQueryInformationThread (hThread, 
9, { ThreadQuerySetWin32StartAddress, }
@ Startaddr, 
SizeOf (startaddr) 
@ DwLen); 

listbox1.Items.AddObject (Format ('StartAddress:% p' 
[Startaddr]) + 'ID:' + IntToStr (te32.th32ThreadID), TObject (hThread)); 
if hThread <> 0 then 
CloseHandle (hThread); 
end; 
Until not Thread32Next (hThreadSnap, te32); 
finally 
CloseHandle (hThreadSnap); 
end; 
end;
Weder S

Weder S

Responder

Posts

18/04/2013

José

Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar