-프로세스 리스트를 얻어와 프로세스 리스트를 구조체에 저장한다.
-PLIST : 프로세스 경로, PID 값을 가지는 간단한 이중 연결리스트 구조체
-DeleteProcessList : 프로세스 리스트를 제거한다.
-GetProcessList_TI : TlHelp32를 이용한 프로세스 리스트 획득 함수
(히든 프로세스 탐지 불가능)
-GetProcessList_BF : Psapi를 이용한 프로세스 리스트 획득 함수
(Brute Force식 PID 탐색을 통한 히득 프로세스 탐지 가능)
#include <windows.h> #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; |
'프로그래밍 > C·C++' 카테고리의 다른 글
SEH(Structured Exception Handling) (0) | 2011.08.15 |
---|---|
strrstr 함수 구현 (문자열 역순 탐색 함수) (0) | 2011.07.20 |
프로세스 제거하기 (0) | 2011.07.04 |
프로세스 생성하기 (0) | 2011.07.04 |
레지스트리 삭제하기 (0) | 2011.07.04 |