본문으로 바로가기

파일의 IT 블로그

  1. Home
  2. 프로그래밍/Talk
  3. PC방 프로그램 불법 프로그램 감지에 대한 고찰 Feat. Python - 크롬 창 이름 못보게 하기

PC방 프로그램 불법 프로그램 감지에 대한 고찰 Feat. Python - 크롬 창 이름 못보게 하기

· 댓글개 · KRFile

 

윗집 층간소음 문제때문에 기분도 잡치고 짜증나고 해서 밖에 나와 PC방에 갔습니다.

사실 가서 할건 별거 없는데, 집 PC랑 스트리밍(Moonlight) 연동해서 못 본 레데리2 엔딩 정도만 보고 왔습니다.

이렇게 할거면 걍 집에서 하는게 낫긴한데 아무래도 소음덩어리인 집에 있는거보단 그냥 밖에 나가 있는게 훨씬 낫습니다. 집에 있으면 살인 충동만 계속 들거든요.

 

어쨌던 밖에서 나름의 평화를 되찾고 커피 빨고 있는데 알바가 갑자기 찾아오더라구요.

 

??? : 혹시 이상한 프로그램 까셨나요? 불법 프로그램 설치 됐다고 해서요

뭐지..? 난 아무것도 안했는데..? 그냥 LDPlayer 정도만 깔아서 스마트폰 앱 게임중이였다고 하니 어쨌던 이상한 프로그램 깔면 안된다고 하고 가더라구요.

 

그래서 왜 이런게 걸렸지 곰곰히 생각해보니깐 아마 제가 블로그에 쓴 글 때문인 거 같습니다.

 

요즘 작성하고 있는 치트엔진 튜토리얼 다음편을 작성하기 위해 PC방에서 제가 저번에 썼던 튜토리얼 9번 문제 풀이 글을 잘 썼나 다시 읽어보고 있었는데 글 제목에 Cheat Engine 이라는 문구가 들어가 있어서 이거 때문에 걸린 거 같습니다.

 

크롬이던 대부분 인터넷 브라우저는 글 제목을 저렇게 윈도우 타이틀 제목에 띄어두는데 PC방 프로그램이 현재 실행중인 프로세스 타이틀 이름에서 "Cheat Engine" 이라는 문자열이 있는걸 감지해 불법 프로그램 감지를 한 듯 싶습니다.

 

이 PC방은 게X 매니저 라는 프로그램을 사용중인데 집와서 치트엔진 프로그램을 켜서 확인해보니 프로그램 타이틀 제목이 정확히 "Cheat Engine" 으로 일치하더라구요.. 역시 이래서 블로그 제목도 잘써야하나 봅니다..

 

치트엔진 프로그램에서 뒤에 버전은 계속 바뀌니 모든 프로세스를 검사하면서 타이틀 네임에 "Cheat Engine" 라는 문자열이 포함되면 바로 불법 프로그램 감지를 하는 걸로 추정됩니다.

 

막아 놓은 이유는.. 당연하겠지만 핵 쓰지 말란거겠죠.. PC방에서 새로 만든 계정으로 핵쓰는 사람 많으니;;

 

그래도.. 진짜 치트엔진 킨 것도 아닌데 그저 인터넷 글을 읽었을 뿐인데 이런 합리적 의심에 걸리다니 좀 슬프더라구요.

그리고! 갑자기 아이디어가 샘솟아서 이 감지 코드를 한번 파이썬 코드로 재현해보았습니다 ㅋㅋ

 

PC방 불법 프로그램 감지 재현

# win32~~ 계열 설치법
# pip install pywin32
import time
import win32gui


# 현재 실행중인 모든 프로세스의 타이틀 제목을 리스트로 반환
def get_process_title_name_list() -> list[str]:
    def callback(hwnd, titles) -> bool:
        # 윈도우 창이 보이는 경우만
        if win32gui.IsWindowVisible(hwnd):
            # 타이틀 제목이 없는 창은 제외
            if win32gui.GetWindowText(hwnd):
                titles.append(win32gui.GetWindowText(hwnd))
        return True

    titles = []
    win32gui.EnumWindows(callback, titles)
    return titles


while True:
    title_list = get_process_title_name_list()
    for title in title_list:
        if "Cheat Engine" in title:
            print("불법 프로그램 감지!!")
    time.sleep(1)

해당 파이썬 코드는 1초마다 모든 프로세스 타이틀 제목을 가져온다음에 "Cheat Engine" 이라는 문구가 포함된 타이틀 창이 있으면 불법 프로그램 감지를 띄우는 예제입니다.

 

 

보다 싶이 그냥 치트엔진을 켜놓으면 당연히 걸리고

 

아까 제 억울한 상황을 재현해보면 이렇게 제 치트엔진 글을 인터넷으로 켜놓기만 해도 걸립니다.

크롬 창 이름에 "Cheat Engine" 이라는 문구가 포함 되어 있기 때문에 ㅠㅠ

 

어떻게 우회하는가? (Bypass)

우회라고 하니깐 굉장히 나쁜 짓을 하는 기분인데. 저는 그냥 단순히 제가 작성한 치트엔진 글을 읽고 싶을 뿐이였습니다. 당연하지만 PC방에서 치트엔진으로 핵쓰면 불법이니깐 하지마시구요.

 

일단 위 제가 추정한대로 타이틀 이름으로 감지하는거라면, 그냥 프로그램 타이틀을 안띄우게 없애버리면 됩니다.

어떤 방법을 사용하던 간에 일단 프로그램 타이틀 명에 민감한 문구만 포함 안되게 하면 됩니다.

 

저 같은 경우엔 그냥 글 제목에서 "Cheat Engine" 이라는 부분을 다른 문자로 바꾸거나, 아니면 윈도우 API 같은걸로 크롬 창 이름을 바꿔서 숨겨도 됩니다.

 

아니면.. 오늘 안 사실인데 크롬 설정탭의 "창 이름 지정" 기능을 활용해도 됩니다.

 

창 이름에 원하는 이름을 적어두면.

 

프로세스에서 타이틀을 가져와도 현재 크롬에서 내가 보고 있는 창 이름이 뜨는게 아니라 그냥 설정한 대로 "Chrome" 이란거만 뜹니다.

 

만약 저 값을 설정하지 않았다면 크롬 디폴트 값대로 내가 열어서 보고 있는 크롬 창이 그대로 프로세스 타이틀 명으로 노출되게 됩니다.

 

제가 알기론 PC방 매니저 프로그램으로 사람들이 열고 있는 창 이름을 전부 확인할 수 있는걸로 압니다. (예전에 아는형 알바할 때 본거같음)

 

솔직히 PC방 알바가 매니저 프로그램으로 내가 인터넷으로 뭐 열어서 보고 있는지 다 감시할 수 있으면 불ㅡㅡ편하지 않습니까?

 

PC방이나 기타 서드 파티 프로그램이 내가 열고 있는 인터넷 창의 이름을 함부로 훔쳐보지 못하게 하고 싶다면 크롬을 기준으로 "창 이름 지정" 기능을 활용하면 좋을 거 같습니다.

 

외부에선 인터넷 할 때 시크릿 모드 키고, 저렇게 창 이름 지정까지 해두면 꽤 안전해질 거 같습니다.

(물론 크롬에서만 설정한거기 때문에 크롬 이외에 다른 프로그램을 키면 그 창의 이름은 알 수 있지만요;;)

이렇게 크롬에서 창 이름을 고정시켜놔도 열고 있는 인터넷 창의 이름을 알 수 있는 또 다른 방법이 있을랑가..? 여기까진 잘 모르겠네요 ㅎㅎ;

 

일단 창 이름을 지정해둔 상태로는 제가 작성한 치트엔진 코드 글을 열어도 불법 프로그램을 감지하지 못했습니다. 타이틀 명에 이제 "Chrome" 말고는 표시되지 않기 때문에.

 

그리고 여담이지만 PC방 관리 프로그램들은 생각보다 보안이 허접합니다. 제어판만 열어놓은 곳이여도 쉽게 로그인창을 우회할 수 있습니다. 그냥 그렇다구요.. 이상한 짓거리하면 바로 CCTV 검사 후 콩밥먹으니 PC방에선 그냥 게임만 해야겠다고 다짐하는 하루였습니다. 그래놓고 위 파이썬 코드 작성하고 있엇음

SNS 공유하기
💬 댓글 개
이모티콘창 닫기
울음
안녕
감사해요
당황
피폐

이모티콘을 클릭하면 댓글창에 입력됩니다.