멘토지원
파트너스
현직자 클래스
멘토 찾기
Best 질문답변
게임 보안, 이렇게 시작해보는 건 어떨까요?
SegFault · 모의해킹
약 2년 전
💬 멘티의 질문


진로의 갈피를 못 잡고 있는 대학생입니다. 제가 생각한 진로 중 하나가 게임 관련 보안인데 어떻게 공부를 시작해야 하는지 잘 모르겠습니다.


게임 보안과 일반 보안이 다르겠지만 일반적인 보안을 공부하기 앞서 이에 대해 공부해본 적도 없고 학교에서도 배우는 것은 아직 언어에 대한 부분이라 어떤 언어를 공부해야 하는지 궁금합니다.


©FLY:D 🔶Art Photographer


1. 멘토님. 저는 c, c++을 주로 사용하는데 보안 계열에 입문하기 편한 언어가 따로 있을까요?


2. 혹시 독학하셨다면 언어를 배우고 어떻게 공부를 시작하셨는지 궁금합니다.


기초적인 질문만 드린 것 아닌지 걱정입니다. 현직자 멘토님의 답변 기다리겠습니다. 감사합니다.


💬 Hansoo Kim 멘토의 답변


안녕하세요! 게임 관련 보안에 관심이 있다니 멋지십니다!

 

일단 게임 보안이 관심이 있다면 직접 게임을 개발해 볼 것을 추천드립니다. 지금부터 제일 먼저 할 것은 간단한 게임을 개발해보는 것이겠네요. 그리고 간단한 게임을 개발하셨다면 그다음으로는 그 게임을 해킹해 봅시다!

 

일단 해킹하기에 앞서 원하는 목표가 있겠죠? 예를 들어, 내 캐릭터의 체력이 닳지 않게 한다거나 혹은 점수를 조작한다거나 위치를 변경한다거나 등등 말이죠.


 ©Sean Whelan


기본적으로 게임 해킹은 게임 프로그램 변조와 메모리 변조 이렇게 두 가지 방식을 가지고 있습니다.

 

1) 게임 프로그램 변조는 만들어진 게임을 리버싱을 해서 특정 코드를 원하는 방식으로 변경하는 것이죠. 예를 들자면 "체력이 0 이하면 게임이 종료된다."라는 조건문을 찾아내고 그 조건문을 없애버리거나 종료 코드를 실행하지 않도록 조건문을 변경하는 것이죠.

 

2) 메모리 변조의 경우 실행된 게임 프로세스가 사용하는 메모리 내 데이터를 직접 변조하거나 실행 중인 함수를 조작하는 것입니다. 이것 또한 예를 들면 체력을 감소시키는 함수의 인자에 100이라는 숫자가 들어가면 내 캐릭터의 체력이 100 감소하는 함수가 있다고 가정해봅시다. 그러면 이 함수를 후킹해 인자를 무조건 0으로 바꾸면 체력이 감소하지 않겠죠! 혹은 체력 수치가 저장되는 메모리 주소의 값을 항상 100으로 채워서 체력이 감소하지 않게 만들거나 말이죠.

 

위 두 가지가 대표적인 게임 해킹 유형입니다. 그렇다면 어떤 공부를 해야 할지 감이 오시나요? 리버싱과 함수 후킹 등 메모리 내 데이터를 변조하는 공부에 집중하시면 됩니다.

 

그리고 이 두 가지 공부에 선행되어야 하는 것은 직접 게임을 개발해봐야 합니다. 리버싱은 프로그램을 분석하는 작업인데 직접 만들어보지 않았다면 이를 분석하기는 쉽지 않을 것입니다.


공부 방법을 여쭤보셨는데요. 이는 각자의 방식이 있어 제가 정답이라고 이야기 드리지는 못하겠습니다! 다만, 제 스타일을 이야기 드리자면 저는 먼저 관련된 책을 한 권 기준으로 정독한 뒤 이를 뼈대 삼아 실습과 함께 구글 검색을 통해 살을 붙여나가며 공부해 갑니다. 어때요? 조금 감이 잡히셨을까요? 멋진 도전 응원하겠습니다.



감사합니다. 관련해서 여쭤볼 분이 안 계셨는데 세세하게 알려주셔서 큰 도움이 되었습니다!


Hansoo Kim 멘토
SegFault · 모의해킹
IT개발/데이터
안녕하세요!
저는 현재 모의 해킹 업무를 하고 있습니다.
어렵게만 바라보는 해킹, 보안이라는 분야에 대해 쉽고, 진입 장벽을 낮추고자 합니다 :D
같은 직무를 다룬 글
인기 있는 글
연구/설계
약 5년 전