几种获取进程列表的方法
2016-07-18 21:52
344 查看
1.CreateToolhelp32Snapshot法: // ////////////////////////////////////////////////////////////////////////// // // CreateToolhelp32Snapshot 法 #include <Tlhelp32.h> // ////////////////////////////////////////////////////////////////////////// PROCESSENTRY32 pe32; pe32.dwSize = sizeof(PROCESSENTRY32); BOOL bRet; HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL); bRet = Process32First(hProcessSnap,&pe32); while (bRet) { bRet = Process32Next(hProcessSnap,&pe32); printf("%s\n",&pe32.szExeFile); } return 0; 复制代码 如果想输出文件路径,在其中加入提权代码后再OpenProcess,GetModuleFileNameEx即可。 2.EnumProcesses 法 /// 4000 /////////////////////////////////////////////////////////////////////// // EnumProcesses 法 #include <Psapi.h> #pragma comment(lib,"Psapi.lib") ////////////////////////////////////////////////////////////////////////// DWORD PID[1024]; DWORD needed,NumProcess; EnumProcesses(PID,sizeof(PID),&needed); NumProcess = needed/sizeof(DWORD); char FilePatch[MAX_PATH]; for (DWORD i=0;i<NumProcess;i++) { HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,FALSE,PID[i]); if (hProcess) { GetModuleFileNameEx(hProcess,NULL,FilePatch,sizeof(FilePatch)); printf("%s\n",FilePatch); } } CloseHandle(hProcess); printf("一共%d个进程\n",NumProcess); return 0; 复制代码 3.WTSOpenServer 法 ////////////////////////////////////////////////////////////////////////// // WTSOpenServer 法 #include <Wtsapi32.h> #pragma comment(lib,"Wtsapi32.lib") 用nbtstat -an获取本机NetBios名称,并在命令行下输入即可 ////////////////////////////////////////////////////////////////////////// char *szServerName = argv[1]; PWTS_PROCESS_INFO wts; DWORD dwCount; HANDLE hWtsServer = WTSOpenServer(szServerName); if(!WTSEnumerateProcesses(hWtsServer,0,1,&wts,&dwCount)) return 0; for (DWORD i=0;i<dwCount;i++) { printf("%s\n",wts[i].pProcessName); } return 0; 复制代码 4. ZwQuerySystemInformation 法 ////////////////////////////////////////////////////////////////////////// // ZwQuerySystemInformation 法 ////////////////////////////////////////////////////////////////////////// /* * Author: Leng_que * Date: 2010年1月26日23:44:28 * E-mail: [email]leng_que@yahoo.com.cn[/email] * Description: 演示了如何通过ZwQuerySystemInformation这个函数获取系统的相关信息 */ #include <stdio.h> #include <windows.h> typedef LONG NTSTATUS; #define STATUS_SUCCESS ((NTSTATUS)0x00000000L) #define STATUS_UNSUCCESSFUL ((NTSTATUS)0xC0000001L) #define STATUS_NOT_IMPLEMENTED ((NTSTATUS)0xC0000002L) #define STATUS_INVALID_INFO_CLASS ((NTSTATUS)0xC0000003L) #define STATUS_INFO_LENGTH_MISMATCH ((NTSTATUS)0xC0000004L) typedef enum _SYSTEM_INFORMATION_CLASS { SystemBasicInformation, // 0 Y N SystemProcessorInformation, // 1 Y N SystemPerformanceInformation, // 2 Y N SystemTimeOfDayInformation, // 3 Y N SystemNotImplemented1, // 4 Y N SystemProcessesAndThreadsInformation, // 5 Y N SystemCallCounts, // 6 Y N SystemConfigurationInformation, // 7 Y N SystemProcessorTimes, // 8 Y N SystemGlobalFlag, // 9 Y Y SystemNotImplemented2, // 10 Y N SystemModuleInformation, // 11 Y N SystemLockInformation, // 12 Y N SystemNotImplemented3, // 13 Y N SystemNotImplemented4, // 14 Y N SystemNotImplemented5, // 15 Y N SystemHandleInformation, // 16 Y N SystemObjectInformation, // 17 Y N SystemPagefileInformation, // 18 Y N SystemInstructionEmulationCounts, // 19 Y N SystemInvalidInfoClass1, // 20 SystemCacheInformation, // 21 Y Y SystemPoolTagInformation, // 22 Y N SystemProcessorStatistics, // 23 Y N SystemDpcInformation, // 24 Y Y SystemNotImplemented6, // 25 Y N SystemLoadImage, // 26 N Y SystemUnloadImage, // 27 N Y SystemTimeAdjustment, // 28 Y Y SystemNotImplemented7, // 29 Y N SystemNotImplemented8, // 30 Y N SystemNotImplemented9, // 31 Y N SystemCrashDumpInformation, // 32 Y N SystemExceptionInformation, // 33 Y N SystemCrashDumpStateInformation, // 34 Y Y/N SystemKernelDebuggerInformation, // 35 Y N SystemContextSwitchInformation, // 36 Y N SystemRegistryQuotaInformation, // 37 Y Y SystemLoadAndCallImage, // 38 N Y SystemPrioritySeparation, // 39 N Y SystemNotImplemented10, // 40 Y N SystemNotImplemented11, // 41 Y N SystemInvalidInfoClass2, // 42 SystemInvalidInfoClass3, // 43 SystemTimeZoneInformation, // 44 Y N SystemLookasideInformation, // 45 Y N SystemSetTimeSlipEvent, // 46 N Y SystemCreateSession, // 47 N Y SystemDeleteSession, // 48 N Y SystemInvalidInfoClass4, // 49 SystemRangeStartInformation, // 50 Y N SystemVerifierInformation, // 51 Y Y SystemAddVerifier, // 52 N Y SystemSessionProcessesInformation // 53 Y N } SYSTEM_INFORMATION_CLASS; typedef struct _LSA_UNICODE_STRING { USHORT Length; USHORT MaximumLength; PWSTR Buffer; } LSA_UNICODE_STRING, *PLSA_UNICODE_STRING, UNICODE_STRING, *PUNICODE_STRING; typedef struct _CLIENT_ID { HANDLE UniqueProcess; HANDLE UniqueThread; } CLIENT_ID; typedef enum _THREAD_STATE { StateInitialized, StateReady, StateRunning, StateStandby, StateTerminated, StateWait, StateTransition, StateUnknown } THREAD_STATE; typedef enum _KWAIT_REASON { Executive, FreePage, PageIn, PoolAllocation, DelayExecution, Suspended, UserRequest, WrExecutive, WrFreePage, WrPageIn, WrPoolAllocation, WrDelayExecution, WrSuspended, WrUserRequest, WrEventPair, WrQueue, WrLpcReceive, WrLpcReply, WrVirtualMemory, WrPageOut, WrRendezvous, Spare2, Spare3, Spare4, Spare5, Spare6, WrKernel } KWAIT_REASON; typedef struct _IO_COUNTERS { LARGE_INTEGER ReadOperationCount; //I/O读操作数目 LARGE_INTEGER WriteOperationCount; //I/O写操作数目 LARGE_INTEGER OtherOperationCount; //I/O其他操作数目 LARGE_INTEGER ReadTransferCount; //I/O读数据数目 LARGE_INTEGER WriteTransferCount; //I/O写数据数目 LARGE_INTEGER OtherTransferCount; //I/O其他操作数据数目 } IO_COUNTERS, *PIO_COUNTERS; typedef struct _VM_COUNTERS { ULONG PeakVirtualSize; //虚拟存储峰值大小 ULONG VirtualSize; //虚拟存储大小 ULONG PageFaultCount; //页故障数目 ULONG PeakWorkingSetSize; //工作集峰值大小 ULONG WorkingSetSize; //工作集大小 ULONG QuotaPeakPagedPoolUsage; //分页池使用配额峰值 ULONG QuotaPagedPoolUsage; //分页池使用配额 ULONG QuotaPeakNonPagedPoolUsage; //非分页池使用配额峰值 ULONG QuotaNonPagedPoolUsage; //非分页池使用配额 ULONG PagefileUsage; //页文件使用情况 ULONG PeakPagefileUsage; //页文件使用峰值 } VM_COUNTERS, *PVM_COUNTERS; typedef LONG KPRIORITY; typedef struct _SYSTEM_THREADS { LARGE_INTEGER KernelTime; LARGE_INTEGER UserTime; LARGE_INTEGER CreateTime; ULONG WaitTime; PVOID StartAddress; CLIENT_ID ClientId; KPRIORITY Priority; KPRIORITY BasePriority; ULONG ContextSwitchCount; THREAD_STATE State; KWAIT_REASON WaitReason; } SYSTEM_THREADS, *PSYSTEM_THREADS; typedef struct _SYSTEM_PROCESSES { ULONG NextEntryDelta; ULONG ThreadCount; ULONG Reserved1[6]; LARGE_INTEGER CreateTime; LARGE_INTEGER UserTime; LARGE_INTEGER KernelTime; UNICODE_STRING ProcessName; KPRIORITY BasePriority; ULONG ProcessId; ULONG InheritedFromProcessId; ULONG HandleCount; ULONG Reserved2[2]; VM_COUNTERS VmCounters; IO_COUNTERS IoCounters; SYSTEM_THREADS Threads[1]; } SYSTEM_PROCESSES, *PSYSTEM_PROCESSES; typedef struct _SYSTEM_BASIC_INFORMATION { BYTE Reserved1[24]; PVOID Reserved2[4]; CCHAR NumberOfProcessors; } SYSTEM_BASIC_INFORMATION; typedef NTSTATUS (WINAPI *NTQUERYSYSTEMINFORMATION)(IN SYSTEM_INFORMATION_CLASS, IN OUT PVOID, IN ULONG, OUT PULONG OPTIONAL); int main(void) { HINSTANCE ntdll_dll = GetModuleHandle("ntdll.dll"); if ( ntdll_dll!=NULL ) { NTQUERYSYSTEMINFORMATION dwFunAddress = (NTQUERYSYSTEMINFORMATION)GetProcAddress(ntdll_dll, "ZwQuerySystemInformation"); if ( dwFunAddress!=NULL ) { //执行 SystemBasicInformation SYSTEM_BASIC_INFORMATION sbi = {0}; NTSTATUS status = dwFunAddress(SystemBasicInformation, (PVOID)&sbi, sizeof(sbi), NULL); if ( status == STATUS_SUCCESS ) { printf("处理器个数:%d\r\n", sbi.NumberOfProcessors); printf("\r\n"); } else { printf("\r\n SystemBasicInformation error"); } //执行 SystemProcessesAndThreadsInformation PSYSTEM_PROCESSES pSp=NULL; ULONG retureSize=0; status = dwFunAddress(SystemProcessesAndThreadsInformation, NULL, 0, &retureSize); if ( status == STATUS_INFO_LENGTH_MISMATCH ) { unsigned char *buf = new unsigned char[retureSize]; if ( buf!=NULL ) { status = dwFunAddress(SystemProcessesAndThreadsInformation, (PVOID)buf, retureSize, NULL); if ( status == STATUS_SUCCESS ) { pSp = (PSYSTEM_PROCESSES)buf; printf("===============所有进程信息=============\r\n"); do { printf("进程ID:%d\r\n", pSp->ProcessId); printf("进程名:"); wprintf(L"%s\r\n", pSp->ProcessName.Buffer); printf("线程数:%d\r\n", pSp->ThreadCount); printf("工作集大小:%dKB\r\n", pSp->VmCounters.WorkingSetSize/1024); printf("\r\n\r\n"); pSp = (PSYSTEM_PROCESSES)( (unsigned long)pSp + pSp->NextEntryDelta ); } while ( pSp->NextEntryDelta != 0 ); printf("========================================\r\n"); delete[] buf; buf = NULL; pSp = NULL; } else if ( status == STATUS_UNSUCCESSFUL ) { printf("\r\n STATUS_UNSUCCESSFUL"); } else if ( status == STATUS_NOT_IMPLEMENTED ) { printf("\r\n STATUS_NOT_IMPLEMENTED"); } else if ( status == STATUS_INVALID_INFO_CLASS ) { printf("\r\n STATUS_INVALID_INFO_CLASS"); } else if ( status == STATUS_INFO_LENGTH_MISMATCH ) { printf("\r\n STATUS_INFO_LENGTH_MISMATCH"); } } else { printf("\r\n new operation error!"); } } } else { printf("\r\n get ZwQuerySystemInformation address error!"); } FreeLibrary(ntdll_dll); } system("pause > nul"); return 0; } 复制代码 |
1.CreateToolhelp32Snapshot法: // ////////////////////////////////////////////////////////////////////////// // // CreateToolhelp32Snapshot 法 #include <Tlhelp32.h> // ////////////////////////////////////////////////////////////////////////// PROCESSENTRY32 pe32; pe32.dwSize = sizeof(PROCESSENTRY32); BOOL bRet; HANDLE hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,NULL); bRet = Process32First(hProcessSnap,&pe32); while (bRet) { bRet = Process32Next(hProcessSnap,&pe32); printf("%s\n",&pe32.szExeFile); } return 0; 复制代码 如果想输出文件路径,在其中加入提权代码后再OpenProcess,GetModuleFileNameEx即可。 2.EnumProcesses 法 ////////////////////////////////////////////////////////////////////////// // EnumProcesses 法 #include <Psapi.h> #pragma comment(lib,"Psapi.lib") ////////////////////////////////////////////////////////////////////////// DWORD PID[1024]; DWORD needed,NumProcess; EnumProcesses(PID,sizeof(PID),&needed); NumProcess = needed/sizeof(DWORD); char FilePatch[MAX_PATH]; for (DWORD i=0;i<NumProcess;i++) { HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,FALSE,PID[i]); if (hProcess) { GetModuleFileNameEx(hProcess,NULL,FilePatch,sizeof(FilePatch)); printf("%s\n",FilePatch); } } CloseHandle(hProcess); printf("一共%d个进程\n",NumProcess); return 0; 复制代码 3.WTSOpenServer 法 ////////////////////////////////////////////////////////////////////////// // WTSOpenServer 法 #include <Wtsapi32.h> #pragma comment(lib,"Wtsapi32.lib") 用nbtstat -an获取本机NetBios名称,并在命令行下输入即可 ////////////////////////////////////////////////////////////////////////// char *szServerName = argv[1]; PWTS_PROCESS_INFO wts; DWORD dwCount; HANDLE hWtsServer = WTSOpenServer(szServerName); if(!WTSEnumerateProcesses(hWtsServer,0,1,&wts,&dwCount)) return 0; for (DWORD i=0;i<dwCount;i++) { printf("%s\n",wts[i].pProcessName); } return 0; 复制代码 4. ZwQuerySystemInformation 法 ////////////////////////////////////////////////////////////////////////// // ZwQuerySystemInformation 法 ////////////////////////////////////////////////////////////////////////// /* * Author: Leng_que * Date: 2010年1月26日23:44:28 * E-mail: [email]leng_que@yahoo.com.cn[/email] * Description: 演示了如何通过ZwQuerySystemInformation这个函数获取系统的相关信息 */ #include <stdio.h> #include <windows.h> typedef LONG NTSTATUS; #define STATUS_SUCCESS ((NTSTATUS)0x00000000L) #define STATUS_UNSUCCESSFUL ((NTSTATUS)0xC0000001L) #define STATUS_NOT_IMPLEMENTED ((NTSTATUS)0xC0000002L) #define STATUS_INVALID_INFO_CLASS ((NTSTATUS)0xC0000003L) #define STATUS_INFO_LENGTH_MISMATCH ((NTSTATUS)0xC0000004L) typedef enum _SYSTEM_INFORMATION_CLASS { SystemBasicInformation, // 0 Y N SystemProcessorInformation, // 1 Y N SystemPerformanceInformation, // 2 Y N SystemTimeOfDayInformation, // 3 Y N SystemNotImplemented1, // 4 Y N SystemProcessesAndThreadsInformation, // 5 Y N SystemCallCounts, // 6 Y N SystemConfigurationInformation, // 7 Y N SystemProcessorTimes, // 8 Y N SystemGlobalFlag, // 9 Y Y SystemNotImplemented2, // 10 Y N SystemModuleInformation, // 11 Y N SystemLockInformation, // 12 Y N SystemNotImplemented3, // 13 Y N SystemNotImplemented4, // 14 Y N SystemNotImplemented5, // 15 Y N SystemHandleInformation, // 16 Y N SystemObjectInformation, // 17 Y N SystemPagefileInformation, // 18 Y N SystemInstructionEmulationCounts, // 19 Y N SystemInvalidInfoClass1, // 20 SystemCacheInformation, // 21 Y Y SystemPoolTagInformation, // 22 Y N SystemProcessorStatistics, // 23 Y N SystemDpcInformation, // 24 Y Y SystemNotImplemented6, // 25 Y N SystemLoadImage, // 26 N Y SystemUnloadImage, // 27 N Y SystemTimeAdjustment, // 28 Y Y SystemNotImplemented7, // 29 Y N SystemNotImplemented8, // 30 Y N SystemNotImplemented9, // 31 Y N SystemCrashDumpInformation, // 32 Y N SystemExceptionInformation, // 33 Y N SystemCrashDumpStateInformation, // 34 Y Y/N SystemKernelDebuggerInformation, // 35 Y N SystemContextSwitchInformation, // 36 Y N SystemRegistryQuotaInformation, // 37 Y Y SystemLoadAndCallImage, // 38 N Y SystemPrioritySeparation, // 39 N Y SystemNotImplemented10, // 40 Y N SystemNotImplemented11, // 41 Y N SystemInvalidInfoClass2, // 42 SystemInvalidInfoClass3, // 43 SystemTimeZoneInformation, // 44 Y N SystemLookasideInformation, // 45 Y N SystemSetTimeSlipEvent, // 46 N Y 1d506 SystemCreateSession, // 47 N Y SystemDeleteSession, // 48 N Y SystemInvalidInfoClass4, // 49 SystemRangeStartInformation, // 50 Y N SystemVerifierInformation, // 51 Y Y SystemAddVerifier, // 52 N Y SystemSessionProcessesInformation // 53 Y N } SYSTEM_INFORMATION_CLASS; typedef struct _LSA_UNICODE_STRING { USHORT Length; USHORT MaximumLength; PWSTR Buffer; } LSA_UNICODE_STRING, *PLSA_UNICODE_STRING, UNICODE_STRING, *PUNICODE_STRING; typedef struct _CLIENT_ID { HANDLE UniqueProcess; HANDLE UniqueThread; } CLIENT_ID; typedef enum _THREAD_STATE { StateInitialized, StateReady, StateRunning, StateStandby, StateTerminated, StateWait, StateTransition, StateUnknown } THREAD_STATE; typedef enum _KWAIT_REASON { Executive, FreePage, PageIn, PoolAllocation, DelayExecution, Suspended, UserRequest, WrExecutive, WrFreePage, WrPageIn, WrPoolAllocation, WrDelayExecution, WrSuspended, WrUserRequest, WrEventPair, WrQueue, WrLpcReceive, WrLpcReply, WrVirtualMemory, WrPageOut, WrRendezvous, Spare2, Spare3, Spare4, Spare5, Spare6, WrKernel } KWAIT_REASON; typedef struct _IO_COUNTERS { LARGE_INTEGER ReadOperationCount; //I/O读操作数目 LARGE_INTEGER WriteOperationCount; //I/O写操作数目 LARGE_INTEGER OtherOperationCount; //I/O其他操作数目 LARGE_INTEGER ReadTransferCount; //I/O读数据数目 LARGE_INTEGER WriteTransferCount; //I/O写数据数目 LARGE_INTEGER OtherTransferCount; //I/O其他操作数据数目 } IO_COUNTERS, *PIO_COUNTERS; typedef struct _VM_COUNTERS { ULONG PeakVirtualSize; //虚拟存储峰值大小 ULONG VirtualSize; //虚拟存储大小 ULONG PageFaultCount; //页故障数目 ULONG PeakWorkingSetSize; //工作集峰值大小 ULONG WorkingSetSize; //工作集大小 ULONG QuotaPeakPagedPoolUsage; //分页池使用配额峰值 ULONG QuotaPagedPoolUsage; //分页池使用配额 ULONG QuotaPeakNonPagedPoolUsage; //非分页池使用配额峰值 ULONG QuotaNonPagedPoolUsage; //非分页池使用配额 ULONG PagefileUsage; //页文件使用情况 ULONG PeakPagefileUsage; //页文件使用峰值 } VM_COUNTERS, *PVM_COUNTERS; typedef LONG KPRIORITY; typedef struct _SYSTEM_THREADS { LARGE_INTEGER KernelTime; LARGE_INTEGER UserTime; LARGE_INTEGER CreateTime; ULONG WaitTime; PVOID StartAddress; CLIENT_ID ClientId; KPRIORITY Priority; KPRIORITY BasePriority; ULONG ContextSwitchCount; THREAD_STATE State; KWAIT_REASON WaitReason; } SYSTEM_THREADS, *PSYSTEM_THREADS; typedef struct _SYSTEM_PROCESSES { ULONG NextEntryDelta; ULONG ThreadCount; ULONG Reserved1[6]; LARGE_INTEGER CreateTime; LARGE_INTEGER UserTime; LARGE_INTEGER KernelTime; UNICODE_STRING ProcessName; KPRIORITY BasePriority; ULONG ProcessId; ULONG InheritedFromProcessId; ULONG HandleCount; ULONG Reserved2[2]; VM_COUNTERS VmCounters; IO_COUNTERS IoCounters; SYSTEM_THREADS Threads[1]; } SYSTEM_PROCESSES, *PSYSTEM_PROCESSES; typedef struct _SYSTEM_BASIC_INFORMATION { BYTE Reserved1[24]; PVOID Reserved2[4]; CCHAR NumberOfProcessors; } SYSTEM_BASIC_INFORMATION; typedef NTSTATUS (WINAPI *NTQUERYSYSTEMINFORMATION)(IN SYSTEM_INFORMATION_CLASS, IN OUT PVOID, IN ULONG, OUT PULONG OPTIONAL); int main(void) { HINSTANCE ntdll_dll = GetModuleHandle("ntdll.dll"); if ( ntdll_dll!=NULL ) { NTQUERYSYSTEMINFORMATION dwFunAddress = (NTQUERYSYSTEMINFORMATION)GetProcAddress(ntdll_dll, "ZwQuerySystemInformation"); if ( dwFunAddress!=NULL ) { //执行 SystemBasicInformation SYSTEM_BASIC_INFORMATION sbi = {0}; NTSTATUS status = dwFunAddress(SystemBasicInformation, (PVOID)&sbi, sizeof(sbi), NULL); if ( status == STATUS_SUCCESS ) { printf("处理器个数:%d\r\n", sbi.NumberOfProcessors); printf("\r\n"); } else { printf("\r\n SystemBasicInformation error"); } //执行 SystemProcessesAndThreadsInformation PSYSTEM_PROCESSES pSp=NULL; ULONG retureSize=0; status = dwFunAddress(SystemProcessesAndThreadsInformation, NULL, 0, &retureSize); if ( status == STATUS_INFO_LENGTH_MISMATCH ) { unsigned char *buf = new unsigned char[retureSize]; if ( buf!=NULL ) { status = dwFunAddress(SystemProcessesAndThreadsInformation, (PVOID)buf, retureSize, NULL); if ( status == STATUS_SUCCESS ) { pSp = (PSYSTEM_PROCESSES)buf; printf("===============所有进程信息=============\r\n"); do { printf("进程ID:%d\r\n", pSp->ProcessId); printf("进程名:"); wprintf(L"%s\r\n", pSp->ProcessName.Buffer); printf("线程数:%d\r\n", pSp->ThreadCount); printf("工作集大小:%dKB\r\n", pSp->VmCounters.WorkingSetSize/1024); printf("\r\n\r\n"); pSp = (PSYSTEM_PROCESSES)( (unsigned long)pSp + pSp->NextEntryDelta ); } while ( pSp->NextEntryDelta != 0 ); printf("========================================\r\n"); delete[] buf; buf = NULL; pSp = NULL; } else if ( status == STATUS_UNSUCCESSFUL ) { printf("\r\n STATUS_UNSUCCESSFUL"); } else if ( status == STATUS_NOT_IMPLEMENTED ) { printf("\r\n STATUS_NOT_IMPLEMENTED"); } else if ( status == STATUS_INVALID_INFO_CLASS ) { printf("\r\n STATUS_INVALID_INFO_CLASS"); } else if ( status == STATUS_INFO_LENGTH_MISMATCH ) { printf("\r\n STATUS_INFO_LENGTH_MISMATCH"); } } else { printf("\r\n new operation error!"); } } } else { printf("\r\n get ZwQuerySystemInformation address error!"); } FreeLibrary(ntdll_dll); } system("pause > nul"); return 0; } 复制代码 |
相关文章推荐
- 37、面向对象-继承
- 酷派 手机 stop charging
- iOS开发从入门到精通--定时器UITimer和视图对象移动
- PipeValid.js 2.0 数据验证
- HDU 2795 Billboard
- Spring事务管理机制的实现原理-动态代理
- Uva 11324 The Largest Clique
- 常用的数据库索引优化语句总结
- 手机重装,联系人备份等重要数据备份
- 如何用卷积神经网络CNN识别手写数字集?
- AC自动机の总结
- Android静态安全检测 -> Intent隐式调用
- 宾馆wifi,宽带网络解决方案
- POJ2187:Beauty Contest
- 如何提高自己名气
- UVA11609Teams
- 状态栏动画切换效果
- 小波变换C++实现(一)----单层小波变换
- ubuntu 16.04 mysql 相关
- ubuntu apt 安装