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;
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
Curtir tópico
+ 0
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
Clique aqui para fazer login e interagir na Comunidade :)