해결된 질문
작성
·
897
0
안녕하세요? DataManager 들으면서 생각이 난 이슈인데요.
우리 강의에서 json을 Resources 폴더에 넣고
필요할때 Load 해서 사용하는 구조인데요,
예전에 모바일 게임 에픽세븐에서 해킹툴을 이용하여 클라이언트 정보를 조작하는 일이 있었습니다.
몬스터의 체력을 1로 만든다던가, 무기의 공격력을 올려서 사용하는 버그성 플레이를 보여준적이 있었는데,
유니티 클라이언트에 이런 무기의 공격력이나 몬스터의 체력을 저장해두고 쓰면, 해킹툴 같은걸 이용한 악성 플레이가 가능하나요?
실무에서도 클라이언트에 아이템정보나 몬스터의 정보를 직접 저장해서 쓰는지 알고싶습니다!
정말 이 부분 궁금했거든요.. ㅠㅠ
답변 2
1
일단 질문이 살짝 애매한데 온라인 게임을 말씀하시는건지,
1인 게임을 말씀하시는건지에 따라 대답이 달라집니다.
간단하게 요약하면 데이터를 클라에 저장하는거랑
게임해킹은 아무런 연관성이 없습니다.
그리고 싱글 플레이어 게임 기준으로 말씀드리자면
클라 해킹은 막을 수도 없습니다.
도둑의 집에 아무리 고~급 자물쇠 하나를 걸어둬봤자,
어차피 그 집이 도둑의 집이기 때문에
도둑이 공구를 갖고 와서 자물쇠를 해제하면 그만이기 때문입니다.
말씀하신 종류의 클라해킹은 어려운 기술은 아니고
그냥 클라 코드를 리버싱해서 변조하거나,
메모리 Diff 툴을 사용해서 원하는 값이 저장된 메모리를 찾고
해당 주소값에 있는 내용물을 변조하는 것인데요.
그러면 말씀대로 게임 자체를 조작할 수는 있습니다.
그러나 MMO같은 온라인 게임 기준으로는
어차피 모든 중요한 판정 (ex. 데미지 판정)은 서버에서 이루어지기 때문에
아무리 클라해킹으로 열심히 데이터를 변조해봤자
본인한테 위안만 될 뿐(?), 실질적으로 이득은 보지 못하게 됩니다.
반약 서버한테 거짓말을 한다면 (공격 사거리가 10인데 50 떨어진 애를 공격 요청한다거나)
이를 검증하는 것도 서버의 역할이고
구라가 판명나는대로 해당 클라는 Kick or Ban을 당하게 됩니다.
다만 모바일 게임 중에 클라쪽에서 모든 게임 판정 연산을 다 하고,
결과만 서버에 보고하는 방식의 게임 (ex. 쿠키런 등)이 있는데
이 때는 클라 해킹에 의해 게임을 조작할 수 있고
이건 사실 별다른 해결 방법이 없습니다. (애당초 클라를 믿고 가기로 한 방식이기 때문)
서버에서 너무 시간이 짧게 스테이지를 깼는지 체크한다거나
할 수는 있겠지만 이것도 정확하진 않습니다.
다시 온라인 게임 기준으로 정리 드리자면,
클라쪽 DataManager에 무기 공격력 등을 보여주는 것은
UI에서 수치를 표시하기 위한 용도이지
진짜 데미지 연산을 클라에서 하진 않기 때문에 전혀 상관없습니다.
따라서 실무에서도 당연히 클라 쪽에서도 데이터를 읽어서 사용합니다.
다만 사업적으로 너무 민감한 정보 (ex. 강화 확률이라거나)는 서버쪽 데이터만 넣어놓기는 합니다.
0