DLL—动态链接库
- lib中包含 如何调用动态链接库中的代码
- 有一个动态链接库 dll 真正的代码是存在与dll中
- 本地程序从lib中读取 如何调用动态链接库代码的方法,去调用dll
LIB—静态链接库
- 一堆程序指令和数据,构成静态链接库
- 将lib文件拷贝到当前运行的程序中
一、列举出当前系统中的所有进程
列举出进程中的线程
1、通过函数CreateToolhelp32Snapshot函数,创建一个快照句柄
2、通过*32First函数获得第一个要列举的对象
3、通过*32Next获取其他要列举的对象
注意:列举进程最好是X64位进程,因为32位进程不能列举64位进程
尽量在列举进程前,提升自己的权限等级,如果使用了UAC机制,还要使用到前面的UAC搭桥机制
#include<Windows.h>#include<tchar.h>#include<Tlhelp32.h>int _tmain(){HANDLE hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);PROCESSENTRY32 pe={0};pe.dwSize=sizeof(pe);Process32First(hSnapshot,&pe);DWORD processID=0;do{_tprintf(L"%d:%s\n",pe.th32ProcessID,pe.szExeFile);if(CSTR_EQUAL==CompareStringOrdinal(L"Thunder.exe",7,pe.szExeFile,7,TRUE)){processID=pe.th32ProcessID;}}while(Process32Next(hSnapshot,&pe));if(!processID){_tprintf(L"not fund Thunder.exe process\n");_gettchar();return 0;}CloseHandle(hSnapshot);hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPALL,processID);//注意,这个快照,并不是拍摄的某个进程中线程的id,他拍到的是系统中所有线程。THREADENTRY32 te={0};te.dwSize=sizeof(te);BOOL re=Thread32First(hSnapshot,&te);do{if(te.th32OwnerProcessID==processID){DWORD code=0;GetExitCodeThread(OpenThread(THREAD_ALL_ACCESS,FALSE,te.th32ThreadID),&code);_tprintf(L"%d:%d:%d\n",te.th32OwnerProcessID,te.th32ThreadID,code);}}while(Thread32Next(hSnapshot,&te));DWORD code=0;HANDLE hThread=OpenThread(THREAD_ALL_ACCESS,FALSE,15264);GetExitCodeThread(hThread,&code);_gettchar();CloseHandle(hSnapshot);return 0;}
二、列举出当前系统中的所有线程
————————————————
版权声明:本文为CSDN博主「poppy飞翔」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_22423659/article/details/53365955
