进程隐藏检测---伪代码注释

来源:百度知道 编辑:UC知道 时间:2024/05/30 22:08:03
Code:

{
Acquiring the list of processes by using list of opened handles.
Returns only ProcessId.
}
procedure GetHandlesProcessList(var List: PListStruct);
var
Info: PSYSTEM_HANDLE_INFORMATION_EX;
NewItem: PProcessRecord;
r: dword;
OldPid: dword;
begin
OldPid := 0;
Info := GetInfoTable(SystemHandleInformation);
if Info = nil then Exit;
for r := 0 to Info^.NumberOfHandles do
if Info^.Information[r].ProcessId <> OldPid then
begin
OldPid := Info^.Information[r].ProcessId;
GetMem(NewItem, SizeOf(TProcessRecord));
ZeroMemory(NewItem, SizeOf(TProcessRecord));
NewItem^.ProcessId := OldPid;
AddItem(List, NewItem);
end;
VirtualFree(Info, 0, MEM_RELEASE);
end;
这是通过进程打开的句柄获得进程列表的方法来检测隐藏进程的过程。
请高手详细的解释每一句,每个数据类型。本人刚入门。把所有的分给你了!

许多隐藏进程无法隐藏他们打开的句柄,因此我们可以通过使用ZwQuerySystemInforma

这是通过进程打开的句柄获得进程列表的方法来检测隐藏进程的过程。
请高手详细的解释每一句,每个数据类型。本人刚入门。把所有的分给你了!

phc[irkvwqkdsk;fiew.9ewrjcgberoi]tuiv