졸업작품으로 만든 프로그램이며 학습용으로 봐주세요~
FPS를 기반으로 한 게임들에서 에임을 쉽게 할 수 있도록 보조하는 프로그램들의 총칭이다. 국내에서는 게임산업진흥에 관한 법률에 따라 프로그램 제작/유포자만 처벌되고 이용자에 관한 처벌 규정은 없다. 전세계 대부분의 다른 국가에서는 관련 법령이 없기 때문에 만들어진 핵을 상용으로 판매하는 등 저작권법에 저촉되는 부분이 없다면 적법한 것으로 본다. 2010년대 이전에는 핵의 개념에 들어갔었지만, 리플레이 등에서 핵 사용유무를 유저가 판독하지 못하게끔 하거나 부가 기능을 추가하기 위해 정교해지면서 점차 봇의 개념을 끌어오기 시작했다.
-출처 나무위키
aimbot을 구글에 검색하니 github로 연결됐는데 학습이라고 해놓고 디스코드 연결해서 구매를 유도하고 있었다.
판매하는 곳들을 살펴보니 나랑 같은 기술을 사용했다. 물론 더 좋겠지만 과정은 거의 같을 것이다.
다음은 과정이다.
과정은 간단하다. 사람이랑 같이 작동합니다.
화면 속 적이 인식이 되면 마우스를 제어하는 간단한 구조.
그렇다면 화면 속 적은 어떻게 인식을 하는가?
YOLOv5 라는 객체탐지 모델을 사용하면 된다.
이건 인공지능 모델로 학습을 통해 적을 식별할 수 있다.
다음은 적을 학습 시키는 과정
정확한 학습을 하려면 10000장의 사진이 필요한데 누가 이걸 하겠냐고... 그래서 1000장 정도만 직접 캡쳐했다.
캡쳐도 코딩으로하면 쉽다. - 코딩을 배워야 하는 이유
1000장의 사진에서 적의 위치를 네모박스 쳐주면 된다. 그러면 txt파일로 이미지상의 적의 네모를 시작좌표와 끝나는좌표를 같이 저장해준다.
데이터 라벨링이라는 작업이 바로 이것이다.
라벨링하는 알바를 많이 구하길래 알려드림. 이거 진짜 너무 귀찮음........
이렇게 1000장의 이미지를 라벨링하고 학습 train, valid, test 로 나눠야함. 이건 인공지능 공부하면 알겠지만 학습,검증,테스트 데이터가 각각 필요하다.
학습 할 때 필요한 데이터, 정답 데이터, 학습이 안된데이터 라고 생각하면 조금 쉽다.
이렇게 데이터를 완성했으면 YOLOv5에 학습시켜주면 된다.
이건 내 컴퓨터가 사양이 좀 부족해서 google colab을 사용했다.
YOLOv5 공식홈페이지 들어가면 학습방법이 적당히 설명되어있으니 하고싶으면 직접하시길... 이걸보고 누가 따라하진 않겠지만
300 에폭을 돌렸다.
쉽게 얘기하면 전공책 300번을 읽게 시켰다고 하면된다.
300번 읽으면 분명 전공책을 달달 외우게 될 것이다. 얘도 그렇다.
학습하다가 화났는지 더 이상 학습안해도 된다고 지가 멈췄다.
그러면 best.pt 와 last.pt 라는 파일이 생성된다.
best.pt는 학습이 가장 잘된 것 last.pt는 마지막으로 학습이 된 것 이다
best.pt만 씀
학습 끝나고 best.pt만 가지고 사용하면 된다.
학습 된 모델을 이제 pytorch로 불러온다.
자세히 보면 model = 로 시작하는 줄 끝에 보면 best.pt를 불러온게 보인다.
이렇게 불러온 모델을 발로란트 게임을 실행하고 작은 스크린샷을 띄운다 여기서 찾아봐 라고 시키면
오른쪽 화면이 인식된 화면이다. 파란색 네모가 쳐진다.
이제 적을 인식했으니 마우스를 이동시키고 클릭시키면 완성이다.
1번 방법은 발로란트자체에서 막혀있어서 내 수준에서는 못할 것 같다. 하려면 게임을 뜯어야하는데 그건 이제 역공학으로 들어가니 불가.. (메모리변조의 영역..)
2번 방법은 코딩으로 마우스(하드웨어)를 제어하는데 하드웨어로 인식하게 하는 것이다. 이것이 가능하려면 아두이노 레오나르도 라는 제품을 사용해야 한다.
키보드입력이나 마우스 입력을 코드로 작동하게하고 마우스로 인식하게 해주는 제품이다.
다양한 게임들을 하다보면 채팅을 무한반복하는 사람들이 보일 것이다.
특히 과거 메이플스토리 자유시장.
저 말풍선을 계속 올리는 사람들은 아마 대부분 이걸 사용했을 것이다. 아마 옛날이라 다른 방법도 있겠지만...? 이게 제일 안전하다.
각설하고 이제 이어가면 어떻게 마우스를 제어하냐?
방법은 간단하다. 위에서 인식시킨 객체의 파란 네모박스는 거의 일정하게 그려진다.
그 네모안에서 적의 머리에 해당하는 좌표를 계산하면 됩니다.
xim,xmax,ymin,ymax는 네모의 네개의 꼭지점의 좌표로 이걸 이용해서 머리에 해당하는 좌표를 계산하면 된다. 코드 참고.
그리고 아두이노로 보내주면 된다.
아두이노 코드는 생략하겠습니다. 그냥 받은 좌표를 조금씩 이동하면서 도착하면 클릭하게 하면 됩니다.
너무 자세하게 적으면 문제가 될 수도 있으니...??
마치며
글은 되게 짧고 쉽게 말했지만 인생을 갈아넣을 정도로 힘들었다. 제작하는데 2달정도 걸렸습니다. 블로그 쓰면서 정보를 많이 찾아봤는데 대부분 에임핵을 판매하고 있었다. (핵은 나빠요)
이상 코린이의 에임핵 제작기였습니다.
여담)
요새 이미지를 생성해주는 많은 모델이 개발되면서 세상에 정말 많은 데이터가 쏟아지고 있다. 대학원을 가게되었기에 나중에 데이터가 쌓이게 되어 내가 일을 시작할 때에는 많은 데이터로 재밌게 뭔가를 제작하고 싶다. (취업시켜줘...ㅠ)
ps) 2022년 말 졸업작품으로 제작한 프로그램입니다. 이 글도 네이버에 작성한 걸 가져온 내용입니다. 현재는 yoloV10이 나와서 벌써 이게 옛날모델이 되어버렸네요....그럼 20000 :)