第2章:win32程序运行原理
内核对象:对象句柄,标示符,进程相关的,只能被1个进程里面的其他线程访问,不透明的,封装过的。
创建进程:返回STARTUPINFO类型的变量对象,包含了父进程传递给子进程的显示信息,
STARTUPINFO是一种类类型,和内含的类型是一样的,
STARTUPINFO si={sizeof(&si)}; //初始化startupinfo的大小 ::GetStartupinfo(&si); //调用startupinfo对象
创建进程:CreateProcess()函数 ,函数包含了很多的参数
例如打开notepad
1 STARTUPINFO si={sizeof(&si)}; //新进程的大小,位置,STARTUPINFO类型 2 3 PROCESS_INFORMATION pi; //新进程的句柄,ID号,PROCESS_INFO类型 4 5 char* szCommandLine="notepad"; 6 7 ::CreateProcess(NULL,szCommandLine,NULL,NULL,FALSE,NULL,NULL,NULL,&si,&pi);
类型的匈牙利表示法,前缀表示法
b BOOL
sz string zero(以0结尾的字符串)
lp long pointer(长指针)
WINDEF.h里面包含了变量类型对应的宏名
DWORD 无符号长整型 unsigned long int WORD 无符号短整型 unsigned short int BOOL 整型 int INT 整型 int BYTE 无符号字符型 unsigned char LPCSTR 常字符指针 const char* LPVOID 空指针 void far
进程控制:
0:获取系统进程: ToolHelp()函数
CreateToolHelp32Snapshot()函数得到当前系统正在运行的进程快照列表
Process32First()和Process32Next()遍历快照列表
1.终止当前进程:1)当前进程中的一个线程调用了ExitProcess()函数
2)其他进程中的线程调用了TerminateProcess()函数
3)当前进程中的线程都运行完毕
2.终止其他进程:TerminateProcess()函数
3:保护进程:防止当前进程被关闭
HOOK掉其他进程对于当前进程的检测和终止
检测:ToolHelp()函数、
终止:TerminateProcess()函数
时间: 2024-10-19 03:19:48