D2R 알파테스트에서 복사가 터졌습니다.
모든 버그는 숨기면 안됩니다.
그게 알파 테스트를 하는 의의고, 정식 출시되었을때 게임이 건강하게 유지되려면 최대한 많은 버그를 테스트에서 발견하는게 중요합니다.
더 중요한건 다음 테스트는 멀티플레이입니다.
과거 발생했던 버그를 알면 미래에 나올 버그를 찾을 수 있습니다.
때문에 디아블로2에서 지금까지 발생한 복사 버그를 설명한 영상을 가져왔습니다.
발매전 테스트에서 가능한 버그가 모조리 발견되길 바랍니다.
복사의 역사 |
버그 아이템의 역사 1부 - 퓨즈드 유니크 |
버그 아이템의 역사 2부 - 하이브리드 룬워드 |
누구나 구할 수 있는 버그 아이템들 |
글리치의 역사 1부 - 최악의 TOP 3 |
글리치의 역사 2부 - 아직도 존재하는 글리치 |
IAS 글리치 (무기 공속버그) |
by Coooley
타운포탈 버그/꼼수 |
나메 파이어 인챈트 버그 |
스왑 캐스팅 |
용병 버그 |
by MrLlamaSC
복사의 역사
디아블로1가 시작된 날부터 사람들은 아이템 복사하는 방법을 찾아다녔어
그래서 블리자드는 수년간 복템과의 숨바꼭질 싸움을 해왔지
디아블로2 역사 전반에 걸쳐 허술한 부분과 꼼수들을 막으며 거듭된 패치가 이어져왔지
여기서 우린 배틀넷에서 실제 유저들이 복사 꼼수를 썼던 방법에 대해 알아볼거야
이 모든 방법들은 현재 이미 패치로 막혔지만, 사람들이 여전히 복사법을 만들고 있을지 정말 궁금해지지
1. 패킷 스니핑 (Packet Sniffing)
사람들이 대부분 썼던 방법은 패킷 스니핑(Packet Sniffing)으로 알려진 해킹 테크닉이야
서버와 로컬 컴퓨터간 전송되는 문자열 정보들을 수집, 분석해서 무슨 의미인지 알아내는 거지
패킷은 기본적으로 내 컴퓨터가 배틀넷 서버와 통신하는 방법인데,
게임에서 캐릭터가 하는 모든 주요 행동들이 배틀넷에 패킷을 보내는 것과 연관이 있어
바꿔말하자면, 배틀넷이 패킷을 다시 되돌려줘서 응답했다는 사실을 유저들에게 알려주지
예를들면 상인과 상호작용 하는 행위, 새 지역으로 이동, 스킬 시전, 심지어 성소를 클릭하는 것도 말이야
이 모든 정보들은 배틀넷으로 보내져서 서버는 무슨 일이 일어났는지 알게되지.
그래서 로그를 남기고 다른 유저와 적절히 상호작용할 수 있는거야
인터넷 기반 게임이라면 뭐든지 이 송수신하는 패킷을 조작하는게 가능하지만, 그렇게 허술한 게임이 아닌 이상 보통 소용없지
내 네트워크에서 규정에 맞지 않은 로그 패킷을 그냥 배틀넷 서버로 보내면
그 즉시 게임은 튕기고 계정과 cdkey는 영구 정지 당하게 돼
블쟈가 제대로 된 보안을 가지고 있으면서 믿음직스럽지 못한건 맞지만,
수많은 게임들과 어플리케이션들은 대게 내부적으로 고치기 힘든 약점들을 가지고 있고, 디아블로2도 예외는 아니야
디2에서 가장 흔했던 복사법을 알아보려면 먼저 이 게임에서 가장 취약한 프로그래밍 부분을 살펴보자
2. Weakest Link
그 취약한 부분은 바로 거래창이야
모든 템을 한번에 복사 해놓고도
배틀넷이 "그래, 완벽하게 정상이네. 여기 아무 문제 없는것 같군. 괜찮아"
라고 속이면서 패킷을 보내는 방법이 있다면 어때? 실제로 그런 방법이 있었다면?
다른 플레이어와 거래창을 열때마다 여기 있는 모든 아이템들이 실제로는 "복사 상태"가 된다.
대체 왜 그럴까? 왜 블리자드가 이렇게 프로그램 해놨을까?
블리자드 노스가 이렇게 한 이유는 불안정한 부분들을 다소 예방하기 위해서야
트레이드창을 닫자마자 두 가지 결과가 생길 수 있어
양 플레이어가 모두 수락버튼을 눌러 상호거래를 하거나 그렇지 않거나
둘 중 한가지 일이 일어나고, 양 플레이어는 각자 트레이드 하기 전 물품과 동일한 물품을 가지고 볼일을 보는거지
거래창에서 이런 두가지 결과가 나타날수 있기 때문에, 블리자드는 플레이어들 사이에 아이템이 전달되기 위해 이런 특정 방법으로 프로그래밍 해야 했어
블쟈가 찾은 최선의 방법은 실제로 캐릭터의 모든 아이템을 복사하는 거였지
만약 양쪽 다 수락을 누르게 되면, "가장 최근에 복사된 아이템"이 종료하면서 계정으로 들어간 복사템들이게 되지
혹시 상호 거래를 하지 않는다 해도 "처음 복사됐던 아이템"이 플레이어들에게 돌아가지
예를들어 내가 여기 인벤에 참을 마구 움직이는거 보이지, 막 뒤섞고 스왑까지 하며 처음이랑 다른 모습으로 말이야
여기서 상호 수락을 누르게 되면 마구 뒤섞은 인벤 상태가 최종 상태가 되지
근데 만약 취소 버튼을 누르고 나가면 어떻게 될까? 마구 뒤섞은 인벤 상태는 어떻게 될까?
여기 인벤이 거래창 열기전 깔끔한 원래 상태로 돌아간거 보이지
거래창을 닫으면서 처음 복사된 상태로 캐릭터가 다시 돌아가서 그래
혹시 양 플레이어가 수락 버튼을 눌렀다 해도 "I can't carry any more", "I can't"라며 인벤 템들이 맞지 않았던 경험 모두들 겪어봤을 거야
그래서 처음 복사된 상태로 돌아가고 다시 해야 했지
이게 그나마 프로그래밍중 차악인건 알지만, 그럼에도 불구하고 내 인벤이나 창고까지도 실제로 복사되어 지지
이 방법이 모든템이 복사되도 배틀넷에 합법이라고 알려주는 방법이야
서드파티 프로그램, 패킷 스니핑과 이런 꼼수를 악용해서 해커들은 과거에 다양한 방법들로 템복사를 했어
이 영상의 해커는 거래창에서 나갔다는 패킷 정보가 서버로 가는걸 차단하고 있는 중이야
이렇게 함으로써 마치 아직 거래창 상태인것처럼 속인채로 자유롭게 다니게 되지
앞서 증명했던 것처럼, 이 상태가 되면 아이템을 가지고 원하는 뭐든걸 할수 있지.
여기 템을 바닥에 떨궜는데 원래 아이템이 또 생겼어
만약 거래 상대 플레이어가 공간 문제로 거래가 완료되지 않거나 그냥 거래창에서 나가면
인벤에 있던 아이템들이 즉시 복구가 돼
이래서 수수께끼를 바닥에 떨구고도 계속 인벤토리에 템이 나타나게 되는거야
3. NPC (Non-Playable Characters)
디아블로2의 다른 취약점을 이용한 변형방법은 NPC야
NPC들도 다른 몇가지 망가진 짓을 할 수 있는데, 의심의 여지 없이 똑같은 아이템을 몇번이고 계속 판다는 거지
NPC가 복사템을 판다고 상상이나 해봤어? 정말 공평하지, 고마워 블리자드
플레이어가 특정 퀘스트를 활성화하거나 특정 지역에 들어가면서 NPC위치가 바뀌는데,
이걸 가지고 Stale references를 만드는데 이용할 수 있었지
이 Stale references는 다른 많은 게임들에서도 아주 큰 취약점이고, 디아블로1에서도 복사가 되던 이유였지
4. Unique Item IDs
여기 영상속에서 룬이 딱 하나 부족한 미완성 룬워드들을 복사하려 고르고 있어
왜냐하면 이런 아이템들은 아직 고유 아이템 id를 할당받지 못했거든
고유 아이템 id는 블리자드가 서버에 존재하는 복템을 제거하려고 만든 방법이야
드랍되는 any non-basic 아이템은 고유 아이템 id를 받는데, 템에 정해지는 히든 속성이라고 생각하면 돼
2개 이상의 템이 동일한 서버, 고유 id를 가지게 되면 (같은 방이 아닌 같은 서버여도)
가장 최근에 생성된 고유 id를 지닌 템만 살아남고, 다른 하나는 방을 나가는 순간 삭제돼
그게 바로 POOFING이야
5. POOFING (since 2003)
만약 아이템이 흰색 노멀이거나 소켓 혹은 그냥 기본이면 아직 고유 아이템 id를 할당받지는 않아
룬워드로 바뀌게 되면 id를 받게 되지
그래서 만약 아이템이 id를 받기전 복사되어 버리면 모든 카피는 합법이 되고 영구적이 되지
고유id를 받고나서 복사를 하게되면 무슨 짓을 하던간에 무조건 영구적이 될수 없어
하지만 복사를 하던 미심쩍은 템이던간에 잠시동안은 가지고 있을 방법이 있어
전에 말한 거래창 꼼수랑 배틀넷이 가장 최근 아이템 버전만 지켜준다고 했던거 기억나지?
이제 이 두 방법을 합쳐봐. 그러면 서드파티 프로그램 없이도 이런식으로 가장 최신 버전 아이템을 만들어 낼수 있다는걸 깨닫게 될거야
6. Temp Perm Method (세탁)
이걸 Temp Perm Method라고 부르고, 복사를 했던 많은 유저들이 가능한 오래 남기려고 썼던 방법이야
거래창으로 들어가면 템들이 "복사 상태"가 된다고 말했지?
그리고 블리자드가 만약 같은 id인지 비교하게 된다면 서버내 가장 최신 버전 복사템만 킵한다고 말했지?
서버내 가장 최신 id면서 복사템을 만드는 방법은 그냥 거래창을 들어가는 거야
많은 플레이어들이 수락을 누르거나 인벤 템 순서를 바꾸는걸 좋아하는데, 그렇게 해서 분명히 거래중이라는 패킷정보를 서버에 보내는거야
필수적인건 아니지만 많은 사람들이 하는 추가적인 방법인거고
이제 해야할 일은 거래창이 열린 상태에서 거래 취소를 누르자마자 바로 빠르게 저장 종료를 누르는거야
그렇게 되면 거래를 끄면서 인벤에 다시 재생성 될테니까,
이게 서버에서 가장 최신 복사템이라는 패킷 정보를 보내는 거지
이제 네가 바라야할 건 같은 서버의 다른 누군가가 그 사이 같은 짓을 하지 않는거지
하지만 대게 그런 일은 일어나지 않고 네 아이템들은 다음 게임까지 실제 안전하게 되는거야
재밌네요 정성스러운 게시물은 추천! 저 아저씨 말처럼 발매전 알파나 베타 테스트에서 가능한 버그가 좌더 발견되길 바랍니다ㅠ
방송보니까 싱글플레이중에 저장 안된 구간에서 팅기면 마지막 저장구간으로 백섭되더군요 캐릭터 정보가 서버가 아닌 개인컴터에 저장되는거라 그런가봄
망겜으로 만든 유저에 의한 사건으로 5년되서야 복사건 잡아낸 라그와의 차이
저 복사가 멀티에서도 되는지는 멀티플레이가 나와봐야 알거 같은데 디아2 클래식도 싱글중에 팅기면 저장 안되는건 같아서 아마 싱글에서만 먹히는 버그 같네요
임뷰템 무한으로 돌리는것도 저걸 기반으로 하는짓인가 보내
방송보니까 싱글플레이중에 저장 안된 구간에서 팅기면 마지막 저장구간으로 백섭되더군요 캐릭터 정보가 서버가 아닌 개인컴터에 저장되는거라 그런가봄
루리웹-8420350453
저 복사가 멀티에서도 되는지는 멀티플레이가 나와봐야 알거 같은데 디아2 클래식도 싱글중에 팅기면 저장 안되는건 같아서 아마 싱글에서만 먹히는 버그 같네요
재밌네요 정성스러운 게시물은 추천! 저 아저씨 말처럼 발매전 알파나 베타 테스트에서 가능한 버그가 좌더 발견되길 바랍니다ㅠ
캬 패킷ㅋㅋ 진짜 간만에 보는 말이네요 이것도 한참 디아2 할 때 자주쓰던 말인데
조던링 복사 파동만 없었어도 디아2는 리니지1 버금 가는 게임으로 남았을텐데...
ㅋㅋ 이건좀
망겜으로 만든 유저에 의한 사건으로 5년되서야 복사건 잡아낸 라그와의 차이
과연 이번 작은 막아낼수 있을런지..
재밋는 글이네요 ㅊㅊ