SlideShare una empresa de Scribd logo
1 de 40
Descargar para leer sin conexión
사설 게임 서버를 막기 위한 방법들
(Private Game Server, 더 이상은 Naver!)
NHN NEXT
구승모
발표자 소개
* 2005년 WOW가 인생을 바꿔놓음
* WOW 오리지널 풀파밍
* 전투사령관 캐릭터 둘
그 이외 게임 업계 활동
* China GDC 2010 발표: “How to Support an Action-Heavy MMORPG from Angle of Server Architecture”
* Game Developer Magazine 2012. 5월호 특집 게재: “Evolving MMORPG Combat”
* 2006~ Server Programmer, L3, NCSOFT
* 2007~ Gameplay Programmer, Server Architect, TERA, Bluehole
* 2012~ Professor, Game Track, NHN NEXT
강연 개요
Agenda
• 사설 서버란?
– 사설 서버의 영향
– 사설 서버가 생기는 경로
• 사설 서버 방지를 위한 노력과 방법
– 직접 탈취로부터
– 서버 에뮬레이터 제작으로부터
강연 범위
• 강연 대상
– 온라인 게임 프로그래머 (서버, 플랫폼)
– 게임 서버 보안에 관심 있는 사람 (프로듀싱, 서비스)
• 다루지 않는 것
– 전반적인 서버 보안 방법 (DDOS, SQL Injection, …)
– Reverse engineering 방지 관련 테크닉
 사설 게임 서버에 특화된 내용을 다룸
사설 서버 이야기
사설 게임 서버란?
• 게임 서버를 ‘탈취’하거나 ‘제작’하여 (원작자 동의 없이) 서비스
– Private server, Gray shard, Free server, Server emulator [1], …
– 대부분의 경우 영리를 목적으로 함
• 주로 2가지 방법으로 생김
– 해커들이 직접 탈취한 것을 기반으로
• (예) AEGIS (Ragnarok Online) [2]
– 서버 에뮬레이터 제작을 통하여
• 실제 정식 서버를 흉내(모방) 내도록 제작
• (예) WOW MaNGOS [3]
사설 서버의 악영향
• 직접적으로는 Profit-share 감소
• 간접적으로는 (더 무서운 것)
– 게임 자체에 대한 신뢰 하락
– 유저들이 존중(respect)받지 못한다는 느낌
• Nexon, Blizzard, Ncsoft의 사설 서버에 대한 소송 예
– 북미 1등(?) 메이플스토리 사설 서버인 OdinMS [4]
– WOW 부분유료화 형태의 사설 서버인 Scapegaming [5]
– 5만 사용자를 거느린 리니지2 사설 서버인 L2Extreme [6]
왜 사설 서버를?
• 돈을 벌기 위해
– 꽤 많은 인력들이 사설 서버 구축을 위해 노력
– 생각보다 많은 사람들이 플레이 함  꽤 짭잘(?)
– CIS 관련 국가 및 중국 내륙
• (예) 한 때, 러시아 시장 1위는 리니지2 사설 서버 [7]
• 교육적인(?) 목적
– 서버 에뮬레이터 제작의 경우, 해커들의 도전 의식 자극 + 재미
– “게임 서버 프로그래밍 공부하기 정말 좋다”는 함정
직접 적인 유출(leak)로부터 사설 서버가 생기는 경우
• 개발사에서 직접 유출되는 경우
– 대부분의 경우 트로이 목마를 통한 유출
• 개발실 소스코드 유출 괴담: “출근 해보니 전부 체크아웃 되어 있더라?”
• (예) 밸브의 하프라이프2 소스코드 유출 [8]
• 우리 나라의 몇몇 회사들도 이렇게 털린 경우가 많음 (카더라 통신)
• 퍼블리셔측에서 유출되는 경우
– 서비스 네트워크 또는 배포선에서의 탈취
• (예) 뮤 온라인의 해외 유출 [9]
– IDC 근무자에 의한 인위적인 서버 바이너리 탈취
서버 에뮬레이터 제작을 통하여 생기는 경우
• 해커들은 미리 서버 에뮬레이터 제작을 준비
– 폐쇄형 커뮤니티(private IRC, phpBB 등)를 통해 정보 공유 및 수집
• 패킷 구조, 클라이언트 보안 메커니즘 등
– CBT와 동시에 클라이언트 입수 후, 해당기간 중 다양한 실험 및 공유
• 서버 프로그래머: “어?! 이상하다. 이런 패킷이 올 수가 없는데?”
• Non-Client Bot과 같이 만들어 짐
– 서버 에뮬레이터와 비슷한 시기에 (약간 먼저) 등장
• Non-client bot이 있다는 말은? 어딘가에서 서버 에뮬레이터가…
• 사실상 한 뿌리: 서버를 흉내 내느냐 클라를 흉내 내느냐의 차이
오늘의 진짜 주제와 결론
• 100% 막는 방법은 없습니다
– (작정한) 인원에 대한 보안은 정말 어렵기 때문
– 클라이언트는 이미 적의 수중에 있기 때문
• 그래서, 이미 버린 몸(?)이니 포기?
– 어차피 털릴텐데 아무것도 안하기?
• 그렇지만, 노력대비(?) 효과를 볼 수 있는 방법들은 있음
– 오늘의 핵심 주제
사설 서버 방지를 위한 방법들 1
(직접 탈취를 막기 위한 노력)
개발사에서의 직접 유출
• 트로이 목마(Trojan Horse)를 통한 유출이 대부분
– 개발 관련툴 크랙 버전에 심어서 토렌트 등으로 배포
• (예) V-Asst, I-Bld, A-CS, …
– 개발자의 컴퓨터에서 실행되는 순간
• 백도어 생성후 해커에게 리포팅
• 리포팅 받은 해커는 바로 털어가지 않고, 지속적으로 감시 및 백도어 강화
• Windows Domain Admin 권한을 갖는 컴퓨터에 설치되는 순간 게임 오버
– 계속 지켜보다가 (어느 정도 완성되면) 순식간에 털어감
HOW-TO
• 정품 개발 툴만 사용
– 검증되지 않은 프로그램 사용 금지
• 최신 소프트웨어로 업데이트
– 특히 OS의 경우, 구 버전의 취약점을 공략
• 보안에 자신 없으면
– 개발망을 인터넷으로부터 물리적으로 분리 (가장 확실)
• Source repository, Issue tracking system 등
인원 보안 문제
• 그럼에도 불구하고, 내부 사람에 의해 털릴 수 있음
– 가장 무서운 적은 내부의 적
– 퇴사시 별 생각 없이 습관적으로 가져가는 경우도 있음
• 악의적인 의도가 아닌 경우: (열정이 넘쳐?) 집에 가져와서 일하는 경우
• HOW-TO
– 개발망 분리 후, 비인가 저장장치 사용 금지
– 회사에서의 작업물에 대한 교육(개념 주입) 필요
– 개발자들에게 잘해줘서 회사 떠나지 않게 하는 것 (가장 확실)
• 개발자 괴롭히면? 복수심에 싹 다 들고 제 3국가 가서 서비스 할 수도.. (농담)
퍼블리셔측에서의 유출
• 배포선(release process) 또는 IDC에서 유출되는 경우
– 내부 인원에 의한 유출
• 운영 인원의 권한 최소화 및 2-way 인증 필요 (뻔한 이야기)
– 직접 해킹 당하는 경우
• 해킹 방어는 광범위한 영역 (본 강연 주제를 벗어남)
– 100% 유출 막는 것은 불가
• 서버 바이너리의 유출 여부를 아는 것이 중요
– 어떤 버전이 어디를 통해 유출 되었는지 아는 것이 필요
– 탈취된 서버가 정상적으로 동작하지 않도록 하는 장치 도입
HOW-TO: 기본적으로 해야 할 것
• 인가된 채널로만 배포
– 급한 patch라고 메일 등으로 전송 금지
• 서버 프로그램 유효 기간 설정 (Time-bomb)
– (예) 현재 실행 시각이 빌드 시점(__DATE__)로 부터 얼마 지났는지 체크
• Binary Fingerprint
– 인증된 머신 정보를 서버 바이너리에 삽입
• (예) .data 영역을 확보 해놓고, 배포시에 인가된 머신 MAC주소로 교체
– 서버 실행시 해당 영역 정보와 머신 정보 비교
HOW-TO: 서버 실행 여부를 통지 받기
• 서버 시작시 80번 포트로 서버 정보 보내기
– 버전, 인가된 머신 번호, 퍼블리셔 코드 등을 암호화해서 전송
– Outbound 80번 포트(http)를 막는 경우는 거의 없음
– 리포팅은 제 3지대(Amazon EC, GAP 등) 서버에서 받기
• 리포팅 받은 것을 주기적으로 모아서 메일로 통보 받으면 편함
{NX_KOR, VER, IP, MAC, …}
via HTTP/80
Reporting
e-mail
이것저것 다 귀찮은 경우…
• 돈(?)으로 해결 할 수 있음
• 하드웨어 보안 모듈이 설치된 서버에 배포
– TPM[10]을 통한 디스크 암호화 등
• 라이선스 서버 솔루션 사용
– 인터넷을 통한 실시간 인증을 받아야 서버 실행이 가능
사설 서버 방지를 위한 방법들 2
(서버 에뮬레이터 제작을 방해하기 위한 노력)
서버 에뮬레이터의 경우
• 처음부터 보안에 신경을 써야 함
– 해커들은 최초의 외부 테스트(FGT, CBT)부터 클라이언트 분석
– 오픈 전에 서버 sandbox가 등장하는지 여부를 결정
• Sandbox?
– 월드 접속 및 이동만 되는 일종의 더미 서버로 해커들의 첫 번째 목표
– 서버-클라이언트간 핵심 동작 메커니즘이 분석 당했음을 의미
• 두 측면에서 공략
– 패킷 분석 및 클라이언트 역공학(reverse-engineering)
클라이언트 역공학
• 동작 메커니즘 분석
– DLL injection등을 통해서 send/recv API 부분을 hooking
– 서버-클라이언트간 어떤 데이터를 어떻게 주고 받는지 파악
• 시간과 노력이 많이 들지만 암호화 관련 로직 우회 가능
• 게임 데이터 추출
– 아트 리소스 뿐만 아니라 게임에 필요한 각종 데이터시트 정보들
• (예) 스킬 공격력, 아이템 스탯 테이블 등
HOW-TO: Anti-Reverse Engineering
• 광범위한 주제
– 기초적인 것만 해도 해야 할 것이 많음 [11]
• 해커들의 속도를 따라잡기 힘든 부분
– 개발자가 일일이 적용하는 것은 비용대비 효과 측면에서 비추
• 클라이언트 바이너리 난독화 전문 툴 사용을 추천
– Themida (WinLicense) [12] 등 (의외로 싸다)
– 지속적으로 최신의 반-역공학 방법들이 업데이트 됨
HOW-TO: 꼭 필요한 데이터만 패키징
• 클라이언트에서 꼭 필요한 (client-only) 데이터만 넣기
– 의외로 서버에서만 필요한 데이터도 같이 넣는 경우가 많음
• (주로 귀차니즘 때문에) 통합 데이터시트로 하는 경우
– 배포 툴에서 패키징 자동화하는 것을 추천
• 데이터 항목에 서버/클라/공용 태그 넣기
• [참고] 서버 에뮬레이터 제작시 가장 더럽고(?) 귀찮은 부분
– 실 서버와 같은 데이터 값(밸런싱 정보 등)을 수집하여 입력하는 것
– 클라이언트에 해당 정보가 있다면, 손쉽게 추출해서 사용하게 됨
• (예) W모 게임의 경우, dbc파일 추출 후 그대로 읽어서 사용
패킷 분석
• 서버-클라이언트간 패킷 수집(capture)
– 어떤 내용이 오가는지 알면, 서버/클라이언트 모두 흉내낼 수 있기 때문
– 암호화 하지 않는 경우 클라이언트 역공학을 시도할 필요도 없음
• 패킷 암호화
– 아무리 잘해도 언젠가는 파악당함 (클라이언트 역공학)
• 개발자가 덜 귀찮도록 하는 방식으로 관리하는 것이 핵심
• 패킷 내용들이 파악되어도 조금만 수정하면 시간을 또 벌 수 있도록
– 패킷 수집(감청)으로부터 최소한 유저들의 정보를 보호하기 위함
• Raw data 그대로 수집되면 위험한 것들 (ID, PIN, 메일주소, 채팅내용 등)
HOW-TO: 패킷 암호화시 주의할 점
• 직접 설계하거나 구현하지 말 것
– 이미 검증되고 리뷰 많이 받은 잘 만들어진 코드를 사용 [13]
• (예) AES256, RC4, …
• 아무리 독창적인(?) 암호화 알고리즘을 만들더라도 파악됨
• 결국, key를 잘 관리하는 것이 핵심
• 절대로 key를 클라이언트에 박지(?) 말 것
– 사실상 암호화 하지 않는 것과 같음
– Key는 세션을 맺을 때마다 무조건 새로 생성해서 교환해야 함
HOW-TO: 암호화 통신을 위한 Key 교환
• Diffie-Hellman Key Exchange [14]
– 세션 성립시마다 새로운 키로 암호화하기 위함
– 각종 공격(예: MITM)에 안전한 구현체를 사용할 것 (예: SRP)
ClientServer
소수 p, g
a b
crypto-key
ClientServer
감청 당해도
crypto-key
파악 불가
Transport
K = B^a mod pB = g^b mod p
a b
B A
A = g^a mod p K = A^b mod p
Secure Remote Password Protocol
• SRP [15]
– 스탠포드 대학에서 제작 (현재 버전은 SRP-6a)
– 인증 + 키 교환 + 패스워드 암호화를 한방에 해결!
– 인증에 사용되는 비밀 정보가 일부 털려도 안전
– 사전 공격 및 MITM 공격 등으로부터 안전
– 공인 인증 기관 (CA) 필요 없음
HOW-TO: 패킷 암호화시 주의할 점
• 패킷 전체를 스트림 방식으로 암호화
– (예) W모 게임처럼 패킷헤더만 암호화 하는 경우  raw data 노출됨
HOW-TO: 패킷 셔플링
• 패킷 번호 및 패킷 내용 순서 무작위 치환 (shuffle)
– 패치 때마다 패킷이 바뀌는 효과  해커들 입장에서는 상당히 귀찮음
– SVN revision 번호 또는 GIT tag hash를 key로 활용 가능
– 배포시 자동화 추천: pre-build event로 패킷 코드 생성(emit)할 때
이런 노력에도 불구하고,
• 서버 에뮬레이터 제작을 100% 막기는 불가
– 어차피 클라이언트는 언젠가는 완전히(?) 분석 당함
– 어딘가에서 서버 에뮬레이터가 만들어지고 있는지 아는 것이 중요
• FACT
– 서버 에뮬레이터도 결국 (인터넷상의) 일반인 대상으로 서비스
• HTTP 포트(80)를 일부러 닫고 사용하는 유저는 없다는 점을 이용
– 클라이언트는 정식 배포본을 사용한다는 점을 이용
• 플레이어의 클라이언트가 어느 서버에 접속하는지를 직접 리포팅
• 대상 서버 IP가 127.0.0.1, 192.168.x.x 이런 종류라면 제작 중이라는 뜻
접속 대상 서버 정보를 통지 받기
map-reduce & whois
사설 서버
사설 서버 유저
(클라이언트)
Random sampling report via HTTP
클라이언트가 특정 확률로 서버 정보 리포팅
정식 서버 정보는
걸러내고 리포팅
정리
마무리
• 100% 방지법은 없음
– 최소한의 노력은 하자: 언급한 방법들이 난이도 높은 일이 아님
– 어차피 털린다고 손 놓은 것과는 차이가 큼 (방충망이 유무의 차이)
• 관리의 측면으로 접근
– 지속적으로 모니터링 및 수정(자동화)을 통해서 시간을 벌기
– 내가 보안에 쓰는 노력보다 해커가 뚫는 노력이 더 큰 것 위주로 적용
• 숨기는 것 보다 찾는 것이 더 어려운 이치
• 실제로 상당히 효과적이었음
감사합니다.
Any Questions?
References
1. http://en.wikipedia.org/wiki/Server_emulator
2. http://en.wikipedia.org/wiki/AEGIS_(Ragnarok_Online)
3. https://github.com/mangos/MaNGOS
4. http://maplenewsnetwork.wordpress.com/2008/06/18/odinms-vs-nexon/
5. http://www.gamerlaw.co.uk/2010/blizzard-wins-88m-lawsuit-against-wow-private-server-owner/
6. http://www.gamasutra.com/php-bin/news_index.php?story=11786
7. http://www.thisisgame.com/special/page/event/ion/2008/nboard/79/?n=8335
8. http://www.gamespot.com/articles/half-life-2-source-leaked/1100-6076314/
9. http://m.inven.co.kr/webzine/wznews.php?idx=14253
10. http://en.wikipedia.org/wiki/Trusted_Platform_Module
11. http://www.codeproject.com/Articles/30815/An-Anti-Reverse-Engineering-Guide
12. http://www.oreans.com/themida.php
13. http://security.stackexchange.com/questions/2202/lessons-learned-and-misconceptions-regarding-
encryption-and-cryptology
14. http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange
15. http://en.wikipedia.org/wiki/Secure_Remote_Password_protocol
뒷이야기
• 수년간 지켜본 입장에서의 개인적인(?) 느낌
• 서버 에뮬레이터 구현 능력
– 프로그래밍 실력?
– 러시아 친구들(잉여력까지 느껴짐) >> 중국 해커들 > 미국 해커들
• 실제 게임(실서버)의 흥망성쇠(?)와 상관 관계 있음
– 서버 에뮬 개발이 활발해지고 있는 추세 ∝ 실서버 사용자 수
– 개발이 중단되거나 관련 커뮤니티가 완전 죽은 경우
• 실서버 사용자 급감 상황
서버 에뮬레이터 제작 커뮤니티
• 서버 에뮬레이터는 다양한 버전이 존재
– Sandbox 이후로 다양한 버전
– 수익금 기부(donation) 문제 등으로 커뮤니티 분열이 잦음
• 누군가 (몰래) 서비스, 핵심 멤버 탈퇴, 원 제작자로부터의 추적 등
– 누군가 기존 작업물을 가져다가(stealing) 새로운 프로젝트로 포장
• 비슷한 이유로 또 분열  반복

Más contenido relacionado

La actualidad más candente

Multiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremMultiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremSeungmo Koo
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019devCAT Studio, NEXON
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현YEONG-CHEON YOU
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012devCAT Studio, NEXON
 
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPSeungmo Koo
 
게임 분산 서버 구조
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조Hyunjik Bae
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)Heungsub Lee
 
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3Heungsub Lee
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기Sang Heon Lee
 
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉iFunFactory Inc.
 
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)내훈 정
 
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012devCAT Studio, NEXON
 
중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직Hoyoung Choi
 
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...Amazon Web Services Korea
 
Next-generation MMORPG service architecture
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architectureJongwon Kim
 
[NDC07] 게임 개발에서의 클라이언트 보안 - 송창규
[NDC07] 게임 개발에서의 클라이언트 보안 - 송창규[NDC07] 게임 개발에서의 클라이언트 보안 - 송창규
[NDC07] 게임 개발에서의 클라이언트 보안 - 송창규ChangKyu Song
 
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019devCAT Studio, NEXON
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019devCAT Studio, NEXON
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012devCAT Studio, NEXON
 
게임서버프로그래밍 #2 - IOCP Adv
게임서버프로그래밍 #2 - IOCP Adv게임서버프로그래밍 #2 - IOCP Adv
게임서버프로그래밍 #2 - IOCP AdvSeungmo Koo
 

La actualidad más candente (20)

Multiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremMultiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theorem
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
 
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCP
 
게임 분산 서버 구조
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
 
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기
 
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
 
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이  왜 이리 힘드나요?  (Lock-free에서 Transactional Memory까지)
Ndc2014 시즌 2 : 멀티쓰레드 프로그래밍이 왜 이리 힘드나요? (Lock-free에서 Transactional Memory까지)
 
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
 
중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직
 
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
 
Next-generation MMORPG service architecture
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architecture
 
[NDC07] 게임 개발에서의 클라이언트 보안 - 송창규
[NDC07] 게임 개발에서의 클라이언트 보안 - 송창규[NDC07] 게임 개발에서의 클라이언트 보안 - 송창규
[NDC07] 게임 개발에서의 클라이언트 보안 - 송창규
 
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
 
게임서버프로그래밍 #2 - IOCP Adv
게임서버프로그래밍 #2 - IOCP Adv게임서버프로그래밍 #2 - IOCP Adv
게임서버프로그래밍 #2 - IOCP Adv
 

Destacado

게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화Seungmo Koo
 
게임서버프로그래밍 #6 - 예외처리 및 로깅
게임서버프로그래밍 #6 - 예외처리 및 로깅게임서버프로그래밍 #6 - 예외처리 및 로깅
게임서버프로그래밍 #6 - 예외처리 및 로깅Seungmo Koo
 
게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가Seungmo Koo
 
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍Seungmo Koo
 
게임서버프로그래밍 #5 - 데이터베이스 핸들링
게임서버프로그래밍 #5 - 데이터베이스 핸들링게임서버프로그래밍 #5 - 데이터베이스 핸들링
게임서버프로그래밍 #5 - 데이터베이스 핸들링Seungmo Koo
 
게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCP게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCPSeungmo Koo
 
Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개흥배 최
 
Go web framework 비교[번역 정리]
Go web framework 비교[번역 정리]Go web framework 비교[번역 정리]
Go web framework 비교[번역 정리]흥배 최
 
ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임흥배 최
 
NHN NEXT 2014년도 게임트랙 소개
NHN NEXT 2014년도 게임트랙 소개 NHN NEXT 2014년도 게임트랙 소개
NHN NEXT 2014년도 게임트랙 소개 Seungmo Koo
 
Windows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance ComparisonWindows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance ComparisonSeungmo Koo
 
MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용흥배 최
 
게임제작개론 : #0 과목소개
게임제작개론 : #0 과목소개게임제작개론 : #0 과목소개
게임제작개론 : #0 과목소개Seungmo Koo
 
Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용흥배 최
 
NHN NEXT 게임 전공 소개
NHN NEXT 게임 전공 소개NHN NEXT 게임 전공 소개
NHN NEXT 게임 전공 소개Seungmo Koo
 
게임서버프로그래밍 #3 - 메모리 및 오브젝트 풀링
게임서버프로그래밍 #3 - 메모리 및 오브젝트 풀링게임서버프로그래밍 #3 - 메모리 및 오브젝트 풀링
게임서버프로그래밍 #3 - 메모리 및 오브젝트 풀링Seungmo Koo
 
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델Seungmo Koo
 
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안Jeongsang Baek
 
혼자서 만드는 MMO게임 서버
혼자서 만드는 MMO게임 서버혼자서 만드는 MMO게임 서버
혼자서 만드는 MMO게임 서버iFunFactory Inc.
 

Destacado (20)

게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
 
게임서버프로그래밍 #6 - 예외처리 및 로깅
게임서버프로그래밍 #6 - 예외처리 및 로깅게임서버프로그래밍 #6 - 예외처리 및 로깅
게임서버프로그래밍 #6 - 예외처리 및 로깅
 
게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가
 
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
 
게임서버프로그래밍 #5 - 데이터베이스 핸들링
게임서버프로그래밍 #5 - 데이터베이스 핸들링게임서버프로그래밍 #5 - 데이터베이스 핸들링
게임서버프로그래밍 #5 - 데이터베이스 핸들링
 
게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCP게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCP
 
Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개
 
NLog 소개
NLog 소개NLog 소개
NLog 소개
 
Go web framework 비교[번역 정리]
Go web framework 비교[번역 정리]Go web framework 비교[번역 정리]
Go web framework 비교[번역 정리]
 
ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임ASP.NET과 C#으로 개발하는 대규모 소셜 게임
ASP.NET과 C#으로 개발하는 대규모 소셜 게임
 
NHN NEXT 2014년도 게임트랙 소개
NHN NEXT 2014년도 게임트랙 소개 NHN NEXT 2014년도 게임트랙 소개
NHN NEXT 2014년도 게임트랙 소개
 
Windows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance ComparisonWindows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance Comparison
 
MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용MongoDB 모바일 게임 개발에 사용
MongoDB 모바일 게임 개발에 사용
 
게임제작개론 : #0 과목소개
게임제작개론 : #0 과목소개게임제작개론 : #0 과목소개
게임제작개론 : #0 과목소개
 
Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용Twitter의 snowflake 소개 및 활용
Twitter의 snowflake 소개 및 활용
 
NHN NEXT 게임 전공 소개
NHN NEXT 게임 전공 소개NHN NEXT 게임 전공 소개
NHN NEXT 게임 전공 소개
 
게임서버프로그래밍 #3 - 메모리 및 오브젝트 풀링
게임서버프로그래밍 #3 - 메모리 및 오브젝트 풀링게임서버프로그래밍 #3 - 메모리 및 오브젝트 풀링
게임서버프로그래밍 #3 - 메모리 및 오브젝트 풀링
 
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
 
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
 
혼자서 만드는 MMO게임 서버
혼자서 만드는 MMO게임 서버혼자서 만드는 MMO게임 서버
혼자서 만드는 MMO게임 서버
 

Similar a 사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)

오픈스택: 구석구석 파헤쳐보기
오픈스택: 구석구석 파헤쳐보기오픈스택: 구석구석 파헤쳐보기
오픈스택: 구석구석 파헤쳐보기Jaehwa Park
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018devCAT Studio, NEXON
 
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 [아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 iFunFactory Inc.
 
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Jinuk Kim
 
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기Jinuk Kim
 
Azure로 MMO게임 서비스하기
Azure로 MMO게임 서비스하기Azure로 MMO게임 서비스하기
Azure로 MMO게임 서비스하기YEONG-CHEON YOU
 
Kgc2014 one daylearnunitycryptography-f
Kgc2014 one daylearnunitycryptography-fKgc2014 one daylearnunitycryptography-f
Kgc2014 one daylearnunitycryptography-fSeungmin Shin
 
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Esun Kim
 
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다Dae Kim
 
KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론Hyunjik Bae
 
Toast cloud for beginners
Toast cloud for beginnersToast cloud for beginners
Toast cloud for beginnersTOAST_NHNent
 
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈Minwoo Kim
 
임베디드시스템개발 Part2
임베디드시스템개발 Part2임베디드시스템개발 Part2
임베디드시스템개발 Part2Minsuk Lee
 
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장Dylan Ko
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)수보 김
 
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...hoondong kim
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기Brian Hong
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsminseok kim
 
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍NDOORS
 

Similar a 사설 서버를 막는 방법들 (프리섭, 더이상은 Naver) (20)

오픈스택: 구석구석 파헤쳐보기
오픈스택: 구석구석 파헤쳐보기오픈스택: 구석구석 파헤쳐보기
오픈스택: 구석구석 파헤쳐보기
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 [아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
 
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
 
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
 
Azure로 MMO게임 서비스하기
Azure로 MMO게임 서비스하기Azure로 MMO게임 서비스하기
Azure로 MMO게임 서비스하기
 
Kgc2014 one daylearnunitycryptography-f
Kgc2014 one daylearnunitycryptography-fKgc2014 one daylearnunitycryptography-f
Kgc2014 one daylearnunitycryptography-f
 
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
 
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
 
KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론
 
Toast cloud for beginners
Toast cloud for beginnersToast cloud for beginners
Toast cloud for beginners
 
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
 
피니엔진
피니엔진피니엔진
피니엔진
 
임베디드시스템개발 Part2
임베디드시스템개발 Part2임베디드시스템개발 Part2
임베디드시스템개발 Part2
 
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
 
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기
 
Meetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vsMeetup tools for-cloud_native_apps_meetup20180510-vs
Meetup tools for-cloud_native_apps_meetup20180510-vs
 
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
 

Más de Seungmo Koo

Understanding Tech Debt
Understanding Tech Debt Understanding Tech Debt
Understanding Tech Debt Seungmo Koo
 
게임제작개론 : #9 라이브 서비스
게임제작개론 : #9 라이브 서비스게임제작개론 : #9 라이브 서비스
게임제작개론 : #9 라이브 서비스Seungmo Koo
 
게임제작개론 : #8 게임 제작 프로세스
게임제작개론 : #8 게임 제작 프로세스게임제작개론 : #8 게임 제작 프로세스
게임제작개론 : #8 게임 제작 프로세스Seungmo Koo
 
게임제작개론 : #7 팀 역할과 게임 리소스에 대한 이해
게임제작개론 : #7 팀 역할과 게임 리소스에 대한 이해게임제작개론 : #7 팀 역할과 게임 리소스에 대한 이해
게임제작개론 : #7 팀 역할과 게임 리소스에 대한 이해Seungmo Koo
 
게임제작개론 : #6 게임 시스템 구조에 대한 이해
게임제작개론 : #6 게임 시스템 구조에 대한 이해게임제작개론 : #6 게임 시스템 구조에 대한 이해
게임제작개론 : #6 게임 시스템 구조에 대한 이해Seungmo Koo
 
게임제작개론 : #5 플레이어에 대한 이해
게임제작개론 : #5 플레이어에 대한 이해게임제작개론 : #5 플레이어에 대한 이해
게임제작개론 : #5 플레이어에 대한 이해Seungmo Koo
 
게임제작개론 : #4 게임 밸런싱
게임제작개론 : #4 게임 밸런싱게임제작개론 : #4 게임 밸런싱
게임제작개론 : #4 게임 밸런싱Seungmo Koo
 
게임제작개론: #3 간접통제와 게임 커뮤니티
게임제작개론: #3 간접통제와 게임 커뮤니티게임제작개론: #3 간접통제와 게임 커뮤니티
게임제작개론: #3 간접통제와 게임 커뮤니티Seungmo Koo
 
게임제작개론: #2 세부 디자인 요소
게임제작개론: #2 세부 디자인 요소게임제작개론: #2 세부 디자인 요소
게임제작개론: #2 세부 디자인 요소Seungmo Koo
 
게임제작개론: #1 게임 구성 요소의 이해
게임제작개론: #1 게임 구성 요소의 이해게임제작개론: #1 게임 구성 요소의 이해
게임제작개론: #1 게임 구성 요소의 이해Seungmo Koo
 
Game Developer Magazine, May 2012, Supplemental Info
Game Developer Magazine, May 2012, Supplemental InfoGame Developer Magazine, May 2012, Supplemental Info
Game Developer Magazine, May 2012, Supplemental InfoSeungmo Koo
 

Más de Seungmo Koo (11)

Understanding Tech Debt
Understanding Tech Debt Understanding Tech Debt
Understanding Tech Debt
 
게임제작개론 : #9 라이브 서비스
게임제작개론 : #9 라이브 서비스게임제작개론 : #9 라이브 서비스
게임제작개론 : #9 라이브 서비스
 
게임제작개론 : #8 게임 제작 프로세스
게임제작개론 : #8 게임 제작 프로세스게임제작개론 : #8 게임 제작 프로세스
게임제작개론 : #8 게임 제작 프로세스
 
게임제작개론 : #7 팀 역할과 게임 리소스에 대한 이해
게임제작개론 : #7 팀 역할과 게임 리소스에 대한 이해게임제작개론 : #7 팀 역할과 게임 리소스에 대한 이해
게임제작개론 : #7 팀 역할과 게임 리소스에 대한 이해
 
게임제작개론 : #6 게임 시스템 구조에 대한 이해
게임제작개론 : #6 게임 시스템 구조에 대한 이해게임제작개론 : #6 게임 시스템 구조에 대한 이해
게임제작개론 : #6 게임 시스템 구조에 대한 이해
 
게임제작개론 : #5 플레이어에 대한 이해
게임제작개론 : #5 플레이어에 대한 이해게임제작개론 : #5 플레이어에 대한 이해
게임제작개론 : #5 플레이어에 대한 이해
 
게임제작개론 : #4 게임 밸런싱
게임제작개론 : #4 게임 밸런싱게임제작개론 : #4 게임 밸런싱
게임제작개론 : #4 게임 밸런싱
 
게임제작개론: #3 간접통제와 게임 커뮤니티
게임제작개론: #3 간접통제와 게임 커뮤니티게임제작개론: #3 간접통제와 게임 커뮤니티
게임제작개론: #3 간접통제와 게임 커뮤니티
 
게임제작개론: #2 세부 디자인 요소
게임제작개론: #2 세부 디자인 요소게임제작개론: #2 세부 디자인 요소
게임제작개론: #2 세부 디자인 요소
 
게임제작개론: #1 게임 구성 요소의 이해
게임제작개론: #1 게임 구성 요소의 이해게임제작개론: #1 게임 구성 요소의 이해
게임제작개론: #1 게임 구성 요소의 이해
 
Game Developer Magazine, May 2012, Supplemental Info
Game Developer Magazine, May 2012, Supplemental InfoGame Developer Magazine, May 2012, Supplemental Info
Game Developer Magazine, May 2012, Supplemental Info
 

사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)

  • 1. 사설 게임 서버를 막기 위한 방법들 (Private Game Server, 더 이상은 Naver!) NHN NEXT 구승모
  • 3. * 2005년 WOW가 인생을 바꿔놓음 * WOW 오리지널 풀파밍 * 전투사령관 캐릭터 둘 그 이외 게임 업계 활동 * China GDC 2010 발표: “How to Support an Action-Heavy MMORPG from Angle of Server Architecture” * Game Developer Magazine 2012. 5월호 특집 게재: “Evolving MMORPG Combat” * 2006~ Server Programmer, L3, NCSOFT * 2007~ Gameplay Programmer, Server Architect, TERA, Bluehole * 2012~ Professor, Game Track, NHN NEXT
  • 5. Agenda • 사설 서버란? – 사설 서버의 영향 – 사설 서버가 생기는 경로 • 사설 서버 방지를 위한 노력과 방법 – 직접 탈취로부터 – 서버 에뮬레이터 제작으로부터
  • 6. 강연 범위 • 강연 대상 – 온라인 게임 프로그래머 (서버, 플랫폼) – 게임 서버 보안에 관심 있는 사람 (프로듀싱, 서비스) • 다루지 않는 것 – 전반적인 서버 보안 방법 (DDOS, SQL Injection, …) – Reverse engineering 방지 관련 테크닉  사설 게임 서버에 특화된 내용을 다룸
  • 8. 사설 게임 서버란? • 게임 서버를 ‘탈취’하거나 ‘제작’하여 (원작자 동의 없이) 서비스 – Private server, Gray shard, Free server, Server emulator [1], … – 대부분의 경우 영리를 목적으로 함 • 주로 2가지 방법으로 생김 – 해커들이 직접 탈취한 것을 기반으로 • (예) AEGIS (Ragnarok Online) [2] – 서버 에뮬레이터 제작을 통하여 • 실제 정식 서버를 흉내(모방) 내도록 제작 • (예) WOW MaNGOS [3]
  • 9. 사설 서버의 악영향 • 직접적으로는 Profit-share 감소 • 간접적으로는 (더 무서운 것) – 게임 자체에 대한 신뢰 하락 – 유저들이 존중(respect)받지 못한다는 느낌 • Nexon, Blizzard, Ncsoft의 사설 서버에 대한 소송 예 – 북미 1등(?) 메이플스토리 사설 서버인 OdinMS [4] – WOW 부분유료화 형태의 사설 서버인 Scapegaming [5] – 5만 사용자를 거느린 리니지2 사설 서버인 L2Extreme [6]
  • 10. 왜 사설 서버를? • 돈을 벌기 위해 – 꽤 많은 인력들이 사설 서버 구축을 위해 노력 – 생각보다 많은 사람들이 플레이 함  꽤 짭잘(?) – CIS 관련 국가 및 중국 내륙 • (예) 한 때, 러시아 시장 1위는 리니지2 사설 서버 [7] • 교육적인(?) 목적 – 서버 에뮬레이터 제작의 경우, 해커들의 도전 의식 자극 + 재미 – “게임 서버 프로그래밍 공부하기 정말 좋다”는 함정
  • 11. 직접 적인 유출(leak)로부터 사설 서버가 생기는 경우 • 개발사에서 직접 유출되는 경우 – 대부분의 경우 트로이 목마를 통한 유출 • 개발실 소스코드 유출 괴담: “출근 해보니 전부 체크아웃 되어 있더라?” • (예) 밸브의 하프라이프2 소스코드 유출 [8] • 우리 나라의 몇몇 회사들도 이렇게 털린 경우가 많음 (카더라 통신) • 퍼블리셔측에서 유출되는 경우 – 서비스 네트워크 또는 배포선에서의 탈취 • (예) 뮤 온라인의 해외 유출 [9] – IDC 근무자에 의한 인위적인 서버 바이너리 탈취
  • 12. 서버 에뮬레이터 제작을 통하여 생기는 경우 • 해커들은 미리 서버 에뮬레이터 제작을 준비 – 폐쇄형 커뮤니티(private IRC, phpBB 등)를 통해 정보 공유 및 수집 • 패킷 구조, 클라이언트 보안 메커니즘 등 – CBT와 동시에 클라이언트 입수 후, 해당기간 중 다양한 실험 및 공유 • 서버 프로그래머: “어?! 이상하다. 이런 패킷이 올 수가 없는데?” • Non-Client Bot과 같이 만들어 짐 – 서버 에뮬레이터와 비슷한 시기에 (약간 먼저) 등장 • Non-client bot이 있다는 말은? 어딘가에서 서버 에뮬레이터가… • 사실상 한 뿌리: 서버를 흉내 내느냐 클라를 흉내 내느냐의 차이
  • 13. 오늘의 진짜 주제와 결론 • 100% 막는 방법은 없습니다 – (작정한) 인원에 대한 보안은 정말 어렵기 때문 – 클라이언트는 이미 적의 수중에 있기 때문 • 그래서, 이미 버린 몸(?)이니 포기? – 어차피 털릴텐데 아무것도 안하기? • 그렇지만, 노력대비(?) 효과를 볼 수 있는 방법들은 있음 – 오늘의 핵심 주제
  • 14. 사설 서버 방지를 위한 방법들 1 (직접 탈취를 막기 위한 노력)
  • 15. 개발사에서의 직접 유출 • 트로이 목마(Trojan Horse)를 통한 유출이 대부분 – 개발 관련툴 크랙 버전에 심어서 토렌트 등으로 배포 • (예) V-Asst, I-Bld, A-CS, … – 개발자의 컴퓨터에서 실행되는 순간 • 백도어 생성후 해커에게 리포팅 • 리포팅 받은 해커는 바로 털어가지 않고, 지속적으로 감시 및 백도어 강화 • Windows Domain Admin 권한을 갖는 컴퓨터에 설치되는 순간 게임 오버 – 계속 지켜보다가 (어느 정도 완성되면) 순식간에 털어감
  • 16. HOW-TO • 정품 개발 툴만 사용 – 검증되지 않은 프로그램 사용 금지 • 최신 소프트웨어로 업데이트 – 특히 OS의 경우, 구 버전의 취약점을 공략 • 보안에 자신 없으면 – 개발망을 인터넷으로부터 물리적으로 분리 (가장 확실) • Source repository, Issue tracking system 등
  • 17. 인원 보안 문제 • 그럼에도 불구하고, 내부 사람에 의해 털릴 수 있음 – 가장 무서운 적은 내부의 적 – 퇴사시 별 생각 없이 습관적으로 가져가는 경우도 있음 • 악의적인 의도가 아닌 경우: (열정이 넘쳐?) 집에 가져와서 일하는 경우 • HOW-TO – 개발망 분리 후, 비인가 저장장치 사용 금지 – 회사에서의 작업물에 대한 교육(개념 주입) 필요 – 개발자들에게 잘해줘서 회사 떠나지 않게 하는 것 (가장 확실) • 개발자 괴롭히면? 복수심에 싹 다 들고 제 3국가 가서 서비스 할 수도.. (농담)
  • 18. 퍼블리셔측에서의 유출 • 배포선(release process) 또는 IDC에서 유출되는 경우 – 내부 인원에 의한 유출 • 운영 인원의 권한 최소화 및 2-way 인증 필요 (뻔한 이야기) – 직접 해킹 당하는 경우 • 해킹 방어는 광범위한 영역 (본 강연 주제를 벗어남) – 100% 유출 막는 것은 불가 • 서버 바이너리의 유출 여부를 아는 것이 중요 – 어떤 버전이 어디를 통해 유출 되었는지 아는 것이 필요 – 탈취된 서버가 정상적으로 동작하지 않도록 하는 장치 도입
  • 19. HOW-TO: 기본적으로 해야 할 것 • 인가된 채널로만 배포 – 급한 patch라고 메일 등으로 전송 금지 • 서버 프로그램 유효 기간 설정 (Time-bomb) – (예) 현재 실행 시각이 빌드 시점(__DATE__)로 부터 얼마 지났는지 체크 • Binary Fingerprint – 인증된 머신 정보를 서버 바이너리에 삽입 • (예) .data 영역을 확보 해놓고, 배포시에 인가된 머신 MAC주소로 교체 – 서버 실행시 해당 영역 정보와 머신 정보 비교
  • 20. HOW-TO: 서버 실행 여부를 통지 받기 • 서버 시작시 80번 포트로 서버 정보 보내기 – 버전, 인가된 머신 번호, 퍼블리셔 코드 등을 암호화해서 전송 – Outbound 80번 포트(http)를 막는 경우는 거의 없음 – 리포팅은 제 3지대(Amazon EC, GAP 등) 서버에서 받기 • 리포팅 받은 것을 주기적으로 모아서 메일로 통보 받으면 편함 {NX_KOR, VER, IP, MAC, …} via HTTP/80 Reporting e-mail
  • 21. 이것저것 다 귀찮은 경우… • 돈(?)으로 해결 할 수 있음 • 하드웨어 보안 모듈이 설치된 서버에 배포 – TPM[10]을 통한 디스크 암호화 등 • 라이선스 서버 솔루션 사용 – 인터넷을 통한 실시간 인증을 받아야 서버 실행이 가능
  • 22. 사설 서버 방지를 위한 방법들 2 (서버 에뮬레이터 제작을 방해하기 위한 노력)
  • 23. 서버 에뮬레이터의 경우 • 처음부터 보안에 신경을 써야 함 – 해커들은 최초의 외부 테스트(FGT, CBT)부터 클라이언트 분석 – 오픈 전에 서버 sandbox가 등장하는지 여부를 결정 • Sandbox? – 월드 접속 및 이동만 되는 일종의 더미 서버로 해커들의 첫 번째 목표 – 서버-클라이언트간 핵심 동작 메커니즘이 분석 당했음을 의미 • 두 측면에서 공략 – 패킷 분석 및 클라이언트 역공학(reverse-engineering)
  • 24. 클라이언트 역공학 • 동작 메커니즘 분석 – DLL injection등을 통해서 send/recv API 부분을 hooking – 서버-클라이언트간 어떤 데이터를 어떻게 주고 받는지 파악 • 시간과 노력이 많이 들지만 암호화 관련 로직 우회 가능 • 게임 데이터 추출 – 아트 리소스 뿐만 아니라 게임에 필요한 각종 데이터시트 정보들 • (예) 스킬 공격력, 아이템 스탯 테이블 등
  • 25. HOW-TO: Anti-Reverse Engineering • 광범위한 주제 – 기초적인 것만 해도 해야 할 것이 많음 [11] • 해커들의 속도를 따라잡기 힘든 부분 – 개발자가 일일이 적용하는 것은 비용대비 효과 측면에서 비추 • 클라이언트 바이너리 난독화 전문 툴 사용을 추천 – Themida (WinLicense) [12] 등 (의외로 싸다) – 지속적으로 최신의 반-역공학 방법들이 업데이트 됨
  • 26. HOW-TO: 꼭 필요한 데이터만 패키징 • 클라이언트에서 꼭 필요한 (client-only) 데이터만 넣기 – 의외로 서버에서만 필요한 데이터도 같이 넣는 경우가 많음 • (주로 귀차니즘 때문에) 통합 데이터시트로 하는 경우 – 배포 툴에서 패키징 자동화하는 것을 추천 • 데이터 항목에 서버/클라/공용 태그 넣기 • [참고] 서버 에뮬레이터 제작시 가장 더럽고(?) 귀찮은 부분 – 실 서버와 같은 데이터 값(밸런싱 정보 등)을 수집하여 입력하는 것 – 클라이언트에 해당 정보가 있다면, 손쉽게 추출해서 사용하게 됨 • (예) W모 게임의 경우, dbc파일 추출 후 그대로 읽어서 사용
  • 27. 패킷 분석 • 서버-클라이언트간 패킷 수집(capture) – 어떤 내용이 오가는지 알면, 서버/클라이언트 모두 흉내낼 수 있기 때문 – 암호화 하지 않는 경우 클라이언트 역공학을 시도할 필요도 없음 • 패킷 암호화 – 아무리 잘해도 언젠가는 파악당함 (클라이언트 역공학) • 개발자가 덜 귀찮도록 하는 방식으로 관리하는 것이 핵심 • 패킷 내용들이 파악되어도 조금만 수정하면 시간을 또 벌 수 있도록 – 패킷 수집(감청)으로부터 최소한 유저들의 정보를 보호하기 위함 • Raw data 그대로 수집되면 위험한 것들 (ID, PIN, 메일주소, 채팅내용 등)
  • 28. HOW-TO: 패킷 암호화시 주의할 점 • 직접 설계하거나 구현하지 말 것 – 이미 검증되고 리뷰 많이 받은 잘 만들어진 코드를 사용 [13] • (예) AES256, RC4, … • 아무리 독창적인(?) 암호화 알고리즘을 만들더라도 파악됨 • 결국, key를 잘 관리하는 것이 핵심 • 절대로 key를 클라이언트에 박지(?) 말 것 – 사실상 암호화 하지 않는 것과 같음 – Key는 세션을 맺을 때마다 무조건 새로 생성해서 교환해야 함
  • 29. HOW-TO: 암호화 통신을 위한 Key 교환 • Diffie-Hellman Key Exchange [14] – 세션 성립시마다 새로운 키로 암호화하기 위함 – 각종 공격(예: MITM)에 안전한 구현체를 사용할 것 (예: SRP) ClientServer 소수 p, g a b crypto-key ClientServer 감청 당해도 crypto-key 파악 불가 Transport K = B^a mod pB = g^b mod p a b B A A = g^a mod p K = A^b mod p
  • 30. Secure Remote Password Protocol • SRP [15] – 스탠포드 대학에서 제작 (현재 버전은 SRP-6a) – 인증 + 키 교환 + 패스워드 암호화를 한방에 해결! – 인증에 사용되는 비밀 정보가 일부 털려도 안전 – 사전 공격 및 MITM 공격 등으로부터 안전 – 공인 인증 기관 (CA) 필요 없음
  • 31. HOW-TO: 패킷 암호화시 주의할 점 • 패킷 전체를 스트림 방식으로 암호화 – (예) W모 게임처럼 패킷헤더만 암호화 하는 경우  raw data 노출됨
  • 32. HOW-TO: 패킷 셔플링 • 패킷 번호 및 패킷 내용 순서 무작위 치환 (shuffle) – 패치 때마다 패킷이 바뀌는 효과  해커들 입장에서는 상당히 귀찮음 – SVN revision 번호 또는 GIT tag hash를 key로 활용 가능 – 배포시 자동화 추천: pre-build event로 패킷 코드 생성(emit)할 때
  • 33. 이런 노력에도 불구하고, • 서버 에뮬레이터 제작을 100% 막기는 불가 – 어차피 클라이언트는 언젠가는 완전히(?) 분석 당함 – 어딘가에서 서버 에뮬레이터가 만들어지고 있는지 아는 것이 중요 • FACT – 서버 에뮬레이터도 결국 (인터넷상의) 일반인 대상으로 서비스 • HTTP 포트(80)를 일부러 닫고 사용하는 유저는 없다는 점을 이용 – 클라이언트는 정식 배포본을 사용한다는 점을 이용 • 플레이어의 클라이언트가 어느 서버에 접속하는지를 직접 리포팅 • 대상 서버 IP가 127.0.0.1, 192.168.x.x 이런 종류라면 제작 중이라는 뜻
  • 34. 접속 대상 서버 정보를 통지 받기 map-reduce & whois 사설 서버 사설 서버 유저 (클라이언트) Random sampling report via HTTP 클라이언트가 특정 확률로 서버 정보 리포팅 정식 서버 정보는 걸러내고 리포팅
  • 36. 마무리 • 100% 방지법은 없음 – 최소한의 노력은 하자: 언급한 방법들이 난이도 높은 일이 아님 – 어차피 털린다고 손 놓은 것과는 차이가 큼 (방충망이 유무의 차이) • 관리의 측면으로 접근 – 지속적으로 모니터링 및 수정(자동화)을 통해서 시간을 벌기 – 내가 보안에 쓰는 노력보다 해커가 뚫는 노력이 더 큰 것 위주로 적용 • 숨기는 것 보다 찾는 것이 더 어려운 이치 • 실제로 상당히 효과적이었음
  • 38. References 1. http://en.wikipedia.org/wiki/Server_emulator 2. http://en.wikipedia.org/wiki/AEGIS_(Ragnarok_Online) 3. https://github.com/mangos/MaNGOS 4. http://maplenewsnetwork.wordpress.com/2008/06/18/odinms-vs-nexon/ 5. http://www.gamerlaw.co.uk/2010/blizzard-wins-88m-lawsuit-against-wow-private-server-owner/ 6. http://www.gamasutra.com/php-bin/news_index.php?story=11786 7. http://www.thisisgame.com/special/page/event/ion/2008/nboard/79/?n=8335 8. http://www.gamespot.com/articles/half-life-2-source-leaked/1100-6076314/ 9. http://m.inven.co.kr/webzine/wznews.php?idx=14253 10. http://en.wikipedia.org/wiki/Trusted_Platform_Module 11. http://www.codeproject.com/Articles/30815/An-Anti-Reverse-Engineering-Guide 12. http://www.oreans.com/themida.php 13. http://security.stackexchange.com/questions/2202/lessons-learned-and-misconceptions-regarding- encryption-and-cryptology 14. http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange 15. http://en.wikipedia.org/wiki/Secure_Remote_Password_protocol
  • 39. 뒷이야기 • 수년간 지켜본 입장에서의 개인적인(?) 느낌 • 서버 에뮬레이터 구현 능력 – 프로그래밍 실력? – 러시아 친구들(잉여력까지 느껴짐) >> 중국 해커들 > 미국 해커들 • 실제 게임(실서버)의 흥망성쇠(?)와 상관 관계 있음 – 서버 에뮬 개발이 활발해지고 있는 추세 ∝ 실서버 사용자 수 – 개발이 중단되거나 관련 커뮤니티가 완전 죽은 경우 • 실서버 사용자 급감 상황
  • 40. 서버 에뮬레이터 제작 커뮤니티 • 서버 에뮬레이터는 다양한 버전이 존재 – Sandbox 이후로 다양한 버전 – 수익금 기부(donation) 문제 등으로 커뮤니티 분열이 잦음 • 누군가 (몰래) 서비스, 핵심 멤버 탈퇴, 원 제작자로부터의 추적 등 – 누군가 기존 작업물을 가져다가(stealing) 새로운 프로젝트로 포장 • 비슷한 이유로 또 분열  반복