🧼C, C++/WinAPI, UX(UI)
프로세스 죽이기 Win32API
안녕하세요!
Win32 API 관련 함수들을 소개하기 위해서
새로운 카테고리를 하나 더 만들었습니다~!
Win32 API를 해본 결과 소켓이 함수 암기 20 이해 80이라면
이건 거의 함수암기80이해20이네요~
함수 이해 자체는 쉬웠고 외워야 할 함수가 많았습니다!
엄청 나중에 있을 C++ 기반의 해킹 툴 제작 프로젝트의
밑밥을 깔기 위해 지금 이렇게 글 써봅니다.. 흐흐...
우선 시작하기 앞서서 이 녀석을 사용하려면
헤더 파일을 추가해줍니다!
#include <windows.h>
#include <TlHelp32.h>
[[ 프로세스 죽이기 ]]
void kill(const char *process){
HANDLE hndl = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
//TlHelp32핸들
HANDLE h;
//찾은 프로세스 핸들
PROCESSENTRY32 proc = {0};
//프로세스를 리스트해줄 구조체
proc.dwSize = sizeof(PROCESSENTRY32);
//크기선언
Process32First(hndl,&proc);
//시작포인터 지정!
while(1){
if(!strcmp(proc.szExeFile,process)){
//만약 내가 매개변수로 넘겨준 변수와 같은이름의 프로세스가 리스트에있다면
h = OpenProcess(PROCESS_ALL_ACCESS,0,proc.th32ProcessID);
//그 프로세스를 열고
TerminateProcess(h,0);
//종료시킨다
}
if(!Process32Next(hndl,&proc)) break;
//아닐시 포인터를 한칸앞으로 가주되, 끝에도달할경우 break
}
CloseHandle(h);
CloseHandle(hndl);
return;
}
사실 이 주석 문들은 확실한 내용은 아니고 저가 공부하면서
추측한 기능들입니다......ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
원래 저가 공부했었던 곳에서는 이것보다 코드가 더 복잡했는데 쓸데없는 변수도 많고
필요 없는 기능도 있어서 머리에 안 들어오더라고요.
그래서 저만의 방식으로 코드를 줄이고 편집한 최종 코드입니다~!
그럼 만약에 실제 사용방법은 어떻까요??
[[ 사용 예제 ]]
#include <windows.h>
#include <TlHelp32.h>
bool kill(const char *process){ //bool값으로선언
HANDLE hndl = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
HANDLE h;
PROCESSENTRY32 proc = {0};
proc.dwSize = sizeof(PROCESSENTRY32);
Process32First(hndl,&proc);
while(1){
if(!strcmp(proc.szExeFile,process)){
h = OpenProcess(PROCESS_ALL_ACCESS,0,proc.th32ProcessID);
TerminateProcess(h,0);
}
if(!Process32Next(hndl,&proc)) break;
}
CloseHandle(h);
CloseHandle(hndl);
return true; //끝날시 true를 반환
}
int main(){
while(kill("cmd.exe")); //만약 결과값이 true일때만 반복 (한마디로 무한반복)
//함수도 void에서 bool값으로 바꾼이유도 코드단축을 목적으로함이였습니다~!
}
'🧼C, C++ > WinAPI, UX(UI)' 카테고리의 다른 글
파일 자가복제 C++ #2 (0) | 2020.11.23 |
---|---|
WINAPI C++ #2 (0) | 2020.11.07 |
WINAPI C++ #1 (0) | 2020.11.04 |
무한HP 핵 만들기 Win32API (0) | 2020.10.18 |
프로세스 관리자권한으로 실행 Win32API (0) | 2020.10.15 |
댓글