-프로세스 리스트를 얻어와 프로세스 리스트를 구조체에 저장한다.
-PLIST : 프로세스 경로, PID 값을 가지는 간단한 이중 연결리스트 구조체
-DeleteProcessList : 프로세스 리스트를 제거한다.
-GetProcessList_TI : TlHelp32를 이용한 프로세스 리스트 획득 함수
(히든 프로세스 탐지 불가능)
-GetProcessList_BF : Psapi를 이용한 프로세스 리스트 획득 함수
(Brute Force식 PID 탐색을 통한 히득 프로세스 탐지 가능)
#include #define BUFSIZE 512 /** 프로세스 리스트 저장 구조체 **/
if(pList == NULL){ while(pList->next != NULL){ } // 히든 프로세스를 찾지 못하는 검색 방법 (TlHelp32.h include 필요) hSnapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); procEntry.dwSize=sizeof(procEntry); do{ strncpy(tempList->path,procEntry.szExeFile,BUFSIZE-1); if(pList == NULL){ CloseHandle(hSnapshot); return pList;
for(pid=0;pid <= 32768;pid++){ hProc=OpenProcess(PROCESS_QUERY_INFORMATION | if(hProc == NULL){ EnumProcessModules(hProc,&hMod,sizeof(hMod),&cbNeeded); GetModuleFileNameExA(hProc,hMod,buffer,BUFSIZE-1); //구조체 저장 strncpy(tempList->path,buffer,BUFSIZE-1); if(pList == NULL){ CloseHandle(hProc); return pList; |