一、全局句柄表(操作系统)
成功创建进程以后,createprocess会返回4个数据,进程编号,进程句柄,线程编号,线程句柄
每个进程都有一个私有的表叫做(进程)句柄表,全局句柄表包含当前系统所有正在运行的进程和线程,pid和进程句柄的区别,pid是全局的,进程句柄只在当前进程有意义。
二、相关API介绍
1、openprocess()
用来打开已经存在进程
HANDLE OpenProcess(
DWORD dwDesiredAccess, // 打开的进程拥有什么样的权利
BOOL bInheritHandle, // 是否允许被继承
DWORD dwProcessId // pid
);
createprocess,CREATE_SUSPENDED以挂起形式创建一个新的进程,使用该参数,进程的创建流程发生改变
1.映射EXE文件
2.创建内核对象eprocess
3.映射系统DLL
4.创建线程内核对象ETHREAD
5.如果是挂起的方式运行
...............(可以做手脚)
6.恢复以后再继续执行
7.映射DLL开始执行
2、GetMouleFileName()获取当前执行程序的路径
3、GetCurrenDirectory()获取当前工作路径