📄 proclist.pas
字号:
unit ProcList;
interface
uses
windows, advApiHook, NativeAPI, TlHelp32, UList, SysUtils;
type
PProcessRecord = ^TProcessRecord;
TProcessRecord = packed record
Visible: boolean;
SignalState: dword;
Present: boolean;
ProcessId: dword;
ParrentPID: dword;
pEPROCESS: dword;
ProcessName: array [0..255] of Char;
end;
procedure GetFullProcessesInfo(var List: PListStruct);
function OpenDriver(): boolean;
function SetSwapcontextHook(): boolean;
function SetSyscallHook(): boolean;
function UnhookAll(): boolean;
function DrvGetLogString(): string;
var
hDriver: dword = 0;
implementation
uses
Unit1;
type
JOBOBJECTINFOCLASS =
(
JobObjectBasicAccountingInformation = 1,
JobObjectBasicLimitInformation,
JobObjectBasicProcessIdList,
JobObjectBasicUIRestrictions,
JobObjectSecurityLimitInformation,
JobObjectEndOfJobTimeInformation,
JobObjectAssociateCompletionPortInformation,
MaxJobObjectInfoClass
);
PJOBOBJECT_BASIC_PROCESS_ID_LIST = ^JOBOBJECT_BASIC_PROCESS_ID_LIST;
JOBOBJECT_BASIC_PROCESS_ID_LIST = packed record
NumberOfAssignedProcesses,
NumberOfProcessIdsInList: dword;
ProcessIdList: array [0..0] of dword;
end;
function QueryInformationJobObject(hJob: dword; JobObjectInfoClass: JOBOBJECTINFOCLASS;
lpJobObjectInfo: pointer;
bJobObjectInfoLength: dword;
lpReturnLength: pdword): bool; stdcall; external 'kernel32.dll';
const
MSG_BUFF_SIZE = 4096;
BASE_IOCTL = (FILE_DEVICE_UNKNOWN shl 16) or (FILE_READ_ACCESS shl 14) or METHOD_BUFFERED;
IOCTL_SET_SWAPCONTEXT_HOOK = BASE_IOCTL or (1 shl 2);
IOCTL_SWAPCONTEXT_UNHOOK = BASE_IOCTL or (2 shl 2);
IOCTL_SET_SYSCALL_HOOK = BASE_IOCTL or (3 shl 2);
IOCTL_SYSCALL_UNHOOK = BASE_IOCTL or (4 shl 2);
IOCTL_GET_EXTEND_PSLIST = BASE_IOCTL or (5 shl 2);
IOCTL_GET_NATIVE_PSLIST = BASE_IOCTL or (6 shl 2);
IOCTL_GET_EPROCESS_PSLIST = BASE_IOCTL or (7 shl 2);
IOCTL_SCAN_THREADS = BASE_IOCTL or (8 shl 2);
IOCTL_SCAN_PSP_CID_TABLE = BASE_IOCTL or (9 shl 2);
IOCTL_HANDLETABLES_LIST = BASE_IOCTL or (10 shl 2);
IOCTL_GET_MESSAGES = BASE_IOCTL or (11 shl 2);
var
CsrPid: dword;
Version: TOSVersionInfo;
Res: boolean = false;
IsWin2K: boolean = false;
ZwQuerySystemInfoCall: function(ASystemInformationClass: dword;
ASystemInformation: Pointer;
ASystemInformationLength: dword;
AReturnLength: pdword): dword; stdcall;
{
项塍麇龛
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -