var
ProcessHandle, PID: longword;
begin
GetWindowThreadProcessId(FindWindow('Shell_TrayWnd', nil), @PID);//获取c的PID
ProcessHandle := OpenProcess(PROCESS_ALL_ACCESS, False, PID);//打开进程
Inject(ProcessHandle, @Main);//插入代码
CloseHandle(ProcessHandle);//关闭线程句柄
end.
语法
OpenProcess(
dwDesiredAccess: DWORD; {access flags}
bInheritHandle: BOOL; {handle inheritance flag}
dwProcessId: DWORD {the process identifier}
): THandle; {returns the handle of the open process}
说明:
OpenProcess函数执行成功将根据传入参数的PID返回该PID进程的句柄.执行失败返回0.执行失败的错误信息请使用GetLastError 函数.
参数说明:
dwDesiredAccess: 指定打开后,该进程的访问权限
PROCESS_ALL_ACCESS 给予进程所有可能允许的权限.
PROCESS_DUP_HANDLE 允许使用DuplicateHandle函数进行进程句柄的复制操作.
PRO
CESS_QUERY_INFORMATION 允许函数GetExitCodeProcess 或函数GetPriorityClass functions 查询进程的信息时使用该句柄.
PROCESS_SET_INFORMATION 允许函数SetPriorityClass使用此句柄进行优先级设置.
PROCESS_TERMINATE 允许函数TerminateProcess 使用此句柄关柄进程.
PROCESS_VM_OPERATION 允许函数VirtualProtectEx使用此句柄修改进程的虚拟内存.
PROCESS_VM_READ or PROCESS_VM_WRITE 允许函数访问和写入权限
SYNCHRONIZE Windows NT 专用: 允许同步函数使用此句柄.
bInheritHandle: 指定返回的句柄是继承dwProcessId指定的进程..
dwProcessId: 指定打开需要打开的进程的PID
OpenProcess
最新推荐文章于 2022-01-22 01:02:33 发布