SlideShare uma empresa Scribd logo
1 de 43
LINE Rangers/Stage 
크래시 및 어뷰징 대응 
LINE+ 게임개발 2실 
남세운/문영민
뭔 게임이야? 
• 릴리즈 : 2014.02.28 
• 타워 디펜스 
• 귀여운 라인 케릭터 총 출동 
• 한국어, 일본어, 태국어, 중국어(번체), 영어 
• Cocos2d-x 2.1.4 
– http://cocos2d-x.org
스크린샷
다운로드
라인 할로윈 코스프레 : 일본
왕철이형 방문기념
어뷰징? 
• 남용, 오용, 학대 등을 뜻하는 단어인 abuse에서 파생된 단 
어로 주로 온라인 게임에서 버그, 핵 등의 불법 프로그램, 타 
인 계정 도용, 다중 계정 접속 등을 통해 부당한 이득을 챙기 
를 행위를 뜻한다 
(엔하위키) 
• DOS 게임 시절 
– 남은 생명력 9999 
• 모바일 시대
1단계 – 메모리 조작 
• 단순하지만 가성비 좋은 어뷰징 
– 화면의 숫자 
– 추측 
– 노가다 
• 메모리 수정/복사
1단계 – 메모리 조작 
• 좋은 예
1단계 – 메모리 조작 
• 화면에 노출되는 숫자, 예측 가능한 숫자 제거 
• UI와 로직의 분리 
• 숫자 암호화 
– 모바일 성능 고려 
• 클라이언트 로직을 신뢰하지 말자 
• 서버 검증 절차 추가
2단계 – 시간 조작 
• 일명 스피드핵 
• 타겟 : 예측된 시간동안 행동이 이루어 지는 로직 
• 결과 : 적군이 타워를 지나치더라 
• Ex) 일반적인 dt = 0.03s 
스피드핵 dt = 10s(배율로 조정 가능)
2단계 – 시간 조작 
• 클라이언트 시간은 쉽게 조작 가능하다 
• Dt를 기반으로 하는 경우 경계값을 꼭 정의하자 
• 가능하면 서버 처리
3단계 – 디컴파일 
• IF 
if ( checkValue ) { 
//checkValue 가 true 일때만 실행되야 하는 상황 
} 
• 항상 true 를 리턴하게 한 후 앱을 리패키징하면 끝 
• JAVA, C++ 소스코드 보안
3단계 – 디컴파일 
• 라이브러리 변조
3단계 – 디컴파일
3단계 – 디컴파일 
• 뭐…뭐라는 거야..나도 모르겠다… 
• 전문가를 찾아라 
• So 파일을 앱 로딩시에 검증한다 
– 설치된 경로의 so파일 체크 
• So 파일 심볼 제거 
• 난독화
3단계 – 디컴파일 
• Android.mk 디버그 심볼 제거 옵션 추가 
LOCAL_CFLAGS += -fvisibility=hidden 
• Main.cpp의 모든 JNI 함수에 JNIEXPORT, JNICALL 추가 
JNIEXPORT void JNICALL Java_org_cocos2dx_lib_Cocos2dxRenderer_n 
ativeInit(JNIEnv* env, jobject thiz, jint w, jint h) { 
//code 
} 
• NDK_ROOT/platforms/android-x/arch-arm/usr/include/jni.h 
#define JNIEXPORT _attribute_ ((visibility ("default")))
3단계 – 디컴파일
3단계 – 디컴파일
4단계 – 버전 우회 
• 이것 저것 열심히 수정해 놨더니 똭!! 
• So파일을 변조된 파일로 교체 
• 앱 버전 정보 변조 
1.0.4 에서 xml버전 정보만 교체해서 패키징 
-> 1.0.6 으로 인식 
-> 어뷰징 우회
4단계 – 버전 우회 
• 버전 정보를 소스코드에 내장하도록 함 
• So파일 검증 절차 추가
5단계 – 버그 버그 버그.. 
• 우리의 QA는 완벽 하지만, 완벽하지 않다 
• 외부 이벤트에 의한 일시 정지 + 터치 취소 이벤트
6단계 – 다시 처음부터 
• 무한 반복 
• 이쯤 되면 고민을 할 시기 
– 어뷰징 방지를 위해 얼마나 리소스를 투입 할 것인가?
추가 고려 사항 
• 믿을게 없구나… 
– 아이폰 – 탈옥 우회 앱 
– 안드로이드 – 루팅 우회 앱 
– 라인 전용 우회 앱 
• 커뮤니티 사이트 동향 파악 – 대만, 태국 
• 재화는 모두 서버 처리 
• 보안 모듈 사용 
– 사내 보안 모듈 
– 안드로이드 네이티브 : ProGuard 적용 검토
ETC 
• D2 오픈세미나 : LINE Rangers 게임 클라이언트/서버 아키 
텍쳐 
– http://www.slideshare.net/deview/4d2-line-rangers
라인 스테이지란? 
“Tab & Flick Rhythm game with LINE Characters”
크래시의 영향 
서비스 출시 
앱이 죽고/멈춤 
사용자 감소/리뷰 별점 테러 
???
크래시 대응 
수집 분석 처리
크래시 수집 
• nCrazer - 로그 수집 및 분석 시스템을 이용한 수집 
– IOS : plCrashReporter 
• https://www.plcrashreporter.org/ 
– Android : google-breakpad 
• https://code.google.com/p/google-breakpad/ 
– nCrazer 강연 자료 : http://deview.kr/2014/session?seq=8
크래시 분석 (IOS) 
Xcode>Organizer를 이용한 분석
크래시 분석 (IOS) 
Symbolicatecrash 명령어를 이용한 분석
크래시 분석 (IOS) 
• 환경 변수 설정 
– export DEVELOPER_DIR="/Applications/XCode.app/Contents/Deve 
loper” 
• 명령어 alias 
– alias symbolicatecrash='/Applications/Xcode.app/Contents/Develope 
r/Platforms/iPhoneOS.platform/Developer/Library/PrivateFramework 
s/DTDeviceKitBase.framework/Versions/A/Resources 
/symbolicatecrash -v' 
• 분석 
– symbolicatecrash myapp.crash myapp.app.dSYM
크래시 분석 (IOS)
NDK 크래시 분석(Android) 
• Google-breakpad란?
NDK 크래시 분석(Android) 
• 선행작업 
– 리눅스 머신 설치 
• Symbolic 파일 생성 시 Linux Dependent한 함수 사용. 
– Google breakpad 설치 
• svn checkout http://google-breakpad.googlecode.com/svn/trunk/ google-breakpad- 
read-only 
• checkout 받은 디렉토리 이동 
• ./configure --host=arm-linux-androideabi --disable-processor --disable-tools 
• make -j4
NDK 크래시 분석(Android) 
• SO(Shared Object) 파일 구하기 
– ndk build시 프로젝트내에 디버그 정보를 가지고 있는 SO 파일이 존 
재. 
– 크래시가 발생한 빌드의 SO 버전이어야 함. 
• Symbolic 파일 생성 
– Breakpad 설치가 완료되면, usr/local/dump_syms 명령어가 생성됨. 
– dump_syms myapp.so > myapp.so.sym
NDK 크래시 분석(Android) 
• 심볼 파일
NDK 크래시 분석(Android) 
• Symbolic 디렉토리 생성 
– mkdir myapp.so 
• 디렉토리명과 so 파일명이 같아야함. 
– head –n1 myapp.so.sym 
• MODULE Linux arm CC2AD9BC08138FB1E8E6284959817A560 myap 
p.so 
– mkdir CC2AD9BC08138FB1E8E6284959817A560 
• Symbolic 파일 복사 
– cp myapp.so.sym ./myapp.so/CC2AD9BC08138FB1E8E628495981 
7A560
NDK 크래시 분석(Android) 
• StackWalk 
Extract Data Stream from minidump 
Enumerating Threads 
Walking a Thread stack 
Produce result
NDK 크래시 분석(Android) 
• 분석 
– /usr/local/minidump_stackwalk myapp.dmp
크래시 대응 결과
kgc2014 LINE Rangers/Stage크래시 및 어뷰징 대응

Mais conteúdo relacionado

Mais procurados

IoT with Raspberry Pi + Node JS - Chapter 1
IoT with Raspberry Pi + Node JS - Chapter 1IoT with Raspberry Pi + Node JS - Chapter 1
IoT with Raspberry Pi + Node JS - Chapter 1Park Jonggun
 
iFun Engine plugin 만들기 (for Stingray)
iFun Engine plugin 만들기 (for Stingray) iFun Engine plugin 만들기 (for Stingray)
iFun Engine plugin 만들기 (for Stingray) iFunFactory Inc.
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?흥배 최
 
Mint64 os개발이야기 한승훈
Mint64 os개발이야기 한승훈Mint64 os개발이야기 한승훈
Mint64 os개발이야기 한승훈Seunghun han
 
17. cocos2d 기초
17. cocos2d  기초17. cocos2d  기초
17. cocos2d 기초Sangon Lee
 
[152] 웹브라우저 감옥에서 살아남기
[152] 웹브라우저 감옥에서 살아남기[152] 웹브라우저 감옥에서 살아남기
[152] 웹브라우저 감옥에서 살아남기NAVER D2
 
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014NDOORS
 
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHubXECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHubXpressEngine
 
Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션
Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션
Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션Seongjun Kim
 
도커를 이용한 파이썬 모듈 배포하기
도커를 이용한 파이썬 모듈 배포하기도커를 이용한 파이썬 모듈 배포하기
도커를 이용한 파이썬 모듈 배포하기JunSeok Seo
 
빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)YEONG-CHEON YOU
 
넌프로그래머를 위한 서버/네트워크
넌프로그래머를 위한 서버/네트워크 넌프로그래머를 위한 서버/네트워크
넌프로그래머를 위한 서버/네트워크 Rhea Strike
 
가상 환경에서의 CentOS 6.8 설치
가상 환경에서의 CentOS 6.8 설치가상 환경에서의 CentOS 6.8 설치
가상 환경에서의 CentOS 6.8 설치Byunghwa Yoon
 
메이플스토리 사례를 통해 살펴보는 서버사이드 봇/핵 탐지 시스템
메이플스토리 사례를 통해 살펴보는 서버사이드 봇/핵 탐지 시스템 메이플스토리 사례를 통해 살펴보는 서버사이드 봇/핵 탐지 시스템
메이플스토리 사례를 통해 살펴보는 서버사이드 봇/핵 탐지 시스템 ByungTak Kang
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub Lee
 
Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Steve Shim
 
[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기Ji-Woong Choi
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기Sumin Byeon
 

Mais procurados (20)

IoT with Raspberry Pi + Node JS - Chapter 1
IoT with Raspberry Pi + Node JS - Chapter 1IoT with Raspberry Pi + Node JS - Chapter 1
IoT with Raspberry Pi + Node JS - Chapter 1
 
iFun Engine plugin 만들기 (for Stingray)
iFun Engine plugin 만들기 (for Stingray) iFun Engine plugin 만들기 (for Stingray)
iFun Engine plugin 만들기 (for Stingray)
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?
 
Mint64 os개발이야기 한승훈
Mint64 os개발이야기 한승훈Mint64 os개발이야기 한승훈
Mint64 os개발이야기 한승훈
 
17. cocos2d 기초
17. cocos2d  기초17. cocos2d  기초
17. cocos2d 기초
 
[152] 웹브라우저 감옥에서 살아남기
[152] 웹브라우저 감옥에서 살아남기[152] 웹브라우저 감옥에서 살아남기
[152] 웹브라우저 감옥에서 살아남기
 
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014
대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014
 
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHubXECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
XECon2015 :: [1-3] 김덕홍 - Git Workflow with GitHub
 
Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션
Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션
Gazebo, 9개의 파일로 간단히 시작하는 로봇 시뮬레이션
 
도커를 이용한 파이썬 모듈 배포하기
도커를 이용한 파이썬 모듈 배포하기도커를 이용한 파이썬 모듈 배포하기
도커를 이용한 파이썬 모듈 배포하기
 
빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)빌드관리 및 디버깅 (2010년 자료)
빌드관리 및 디버깅 (2010년 자료)
 
Maker 오해와 진실
Maker 오해와 진실Maker 오해와 진실
Maker 오해와 진실
 
넌프로그래머를 위한 서버/네트워크
넌프로그래머를 위한 서버/네트워크 넌프로그래머를 위한 서버/네트워크
넌프로그래머를 위한 서버/네트워크
 
가상 환경에서의 CentOS 6.8 설치
가상 환경에서의 CentOS 6.8 설치가상 환경에서의 CentOS 6.8 설치
가상 환경에서의 CentOS 6.8 설치
 
메이플스토리 사례를 통해 살펴보는 서버사이드 봇/핵 탐지 시스템
메이플스토리 사례를 통해 살펴보는 서버사이드 봇/핵 탐지 시스템 메이플스토리 사례를 통해 살펴보는 서버사이드 봇/핵 탐지 시스템
메이플스토리 사례를 통해 살펴보는 서버사이드 봇/핵 탐지 시스템
 
Nexus
NexusNexus
Nexus
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
 
Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1
 
[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기[오픈소스컨설팅] RPM 만들기
[오픈소스컨설팅] RPM 만들기
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
 

Destaque

4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐
4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐
4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐NAVER D2
 
인턴실1주차 실습과제 박보람
인턴실1주차 실습과제 박보람인턴실1주차 실습과제 박보람
인턴실1주차 실습과제 박보람Boram Park
 
게임개발 Cocos2d-x 소프트웨어씽킹연구소
게임개발 Cocos2d-x 소프트웨어씽킹연구소게임개발 Cocos2d-x 소프트웨어씽킹연구소
게임개발 Cocos2d-x 소프트웨어씽킹연구소swthinking
 
고속버스
고속버스고속버스
고속버스DOYOUNG14
 
비즈니스 아이디어 도출 방법론 소개 V2.0 에스코토스
비즈니스 아이디어 도출 방법론 소개 V2.0 에스코토스비즈니스 아이디어 도출 방법론 소개 V2.0 에스코토스
비즈니스 아이디어 도출 방법론 소개 V2.0 에스코토스SCOTOSS
 
KGC 2014 Hwang Seonpill Line Game Global
KGC 2014 Hwang Seonpill Line Game GlobalKGC 2014 Hwang Seonpill Line Game Global
KGC 2014 Hwang Seonpill Line Game GlobalSeonpill Hwang
 
연관 키워드 분석으로 찾는 마케팅 인사이트
연관 키워드 분석으로 찾는 마케팅 인사이트연관 키워드 분석으로 찾는 마케팅 인사이트
연관 키워드 분석으로 찾는 마케팅 인사이트Jinseok Ro
 
비즈니스 아이디어 도출법 생각정리 세미나 (강함수)
비즈니스 아이디어 도출법 생각정리 세미나 (강함수)비즈니스 아이디어 도출법 생각정리 세미나 (강함수)
비즈니스 아이디어 도출법 생각정리 세미나 (강함수)SCOTOSS
 
동국대 앱창작터 4일차:Cocos2d-X 고급기능
동국대 앱창작터 4일차:Cocos2d-X 고급기능동국대 앱창작터 4일차:Cocos2d-X 고급기능
동국대 앱창작터 4일차:Cocos2d-X 고급기능Changhwan Yi
 
마케팅 인사이트를 위한 데이터 분석
마케팅 인사이트를 위한 데이터 분석마케팅 인사이트를 위한 데이터 분석
마케팅 인사이트를 위한 데이터 분석ACE Trader
 
Image Optimization for Critical Care Ultrasound
Image Optimization for Critical Care UltrasoundImage Optimization for Critical Care Ultrasound
Image Optimization for Critical Care Ultrasoundnswhems
 
Infographics, Concept & Visual Storytelling
Infographics, Concept & Visual StorytellingInfographics, Concept & Visual Storytelling
Infographics, Concept & Visual StorytellingKiyoung Park
 
244 5rocks-deview
244 5rocks-deview244 5rocks-deview
244 5rocks-deviewNAVER D2
 
ACTEP2014: Upcoming trend of lung ultrasound
ACTEP2014: Upcoming trend of lung ultrasoundACTEP2014: Upcoming trend of lung ultrasound
ACTEP2014: Upcoming trend of lung ultrasoundtaem
 
[D2 CAMPUS] 분야별 모임 '보안' 발표자료
[D2 CAMPUS] 분야별 모임 '보안' 발표자료[D2 CAMPUS] 분야별 모임 '보안' 발표자료
[D2 CAMPUS] 분야별 모임 '보안' 발표자료NAVER D2
 
국내인디게임개발자의현실
국내인디게임개발자의현실국내인디게임개발자의현실
국내인디게임개발자의현실Mingu Heo
 
OpenGL ES 2.x Programming Introduction
OpenGL ES 2.x Programming IntroductionOpenGL ES 2.x Programming Introduction
OpenGL ES 2.x Programming IntroductionChamp Yen
 
SangJa project concept note
SangJa project concept noteSangJa project concept note
SangJa project concept noteHyunJun Kim
 

Destaque (20)

4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐
4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐
4.[d2 오픈세미나]LINE Rangers 게임 클라이언트/서버 아키텍쳐
 
인턴실1주차 실습과제 박보람
인턴실1주차 실습과제 박보람인턴실1주차 실습과제 박보람
인턴실1주차 실습과제 박보람
 
게임개발 Cocos2d-x 소프트웨어씽킹연구소
게임개발 Cocos2d-x 소프트웨어씽킹연구소게임개발 Cocos2d-x 소프트웨어씽킹연구소
게임개발 Cocos2d-x 소프트웨어씽킹연구소
 
고속버스
고속버스고속버스
고속버스
 
비즈니스 아이디어 도출 방법론 소개 V2.0 에스코토스
비즈니스 아이디어 도출 방법론 소개 V2.0 에스코토스비즈니스 아이디어 도출 방법론 소개 V2.0 에스코토스
비즈니스 아이디어 도출 방법론 소개 V2.0 에스코토스
 
KGC 2014 Hwang Seonpill Line Game Global
KGC 2014 Hwang Seonpill Line Game GlobalKGC 2014 Hwang Seonpill Line Game Global
KGC 2014 Hwang Seonpill Line Game Global
 
연관 키워드 분석으로 찾는 마케팅 인사이트
연관 키워드 분석으로 찾는 마케팅 인사이트연관 키워드 분석으로 찾는 마케팅 인사이트
연관 키워드 분석으로 찾는 마케팅 인사이트
 
비즈니스 아이디어 도출법 생각정리 세미나 (강함수)
비즈니스 아이디어 도출법 생각정리 세미나 (강함수)비즈니스 아이디어 도출법 생각정리 세미나 (강함수)
비즈니스 아이디어 도출법 생각정리 세미나 (강함수)
 
동국대 앱창작터 4일차:Cocos2d-X 고급기능
동국대 앱창작터 4일차:Cocos2d-X 고급기능동국대 앱창작터 4일차:Cocos2d-X 고급기능
동국대 앱창작터 4일차:Cocos2d-X 고급기능
 
마케팅 인사이트를 위한 데이터 분석
마케팅 인사이트를 위한 데이터 분석마케팅 인사이트를 위한 데이터 분석
마케팅 인사이트를 위한 데이터 분석
 
Image Optimization for Critical Care Ultrasound
Image Optimization for Critical Care UltrasoundImage Optimization for Critical Care Ultrasound
Image Optimization for Critical Care Ultrasound
 
Non-A, non-B hepatitis & ANA pattern
Non-A, non-B hepatitis & ANA patternNon-A, non-B hepatitis & ANA pattern
Non-A, non-B hepatitis & ANA pattern
 
PublishSubject
PublishSubjectPublishSubject
PublishSubject
 
Infographics, Concept & Visual Storytelling
Infographics, Concept & Visual StorytellingInfographics, Concept & Visual Storytelling
Infographics, Concept & Visual Storytelling
 
244 5rocks-deview
244 5rocks-deview244 5rocks-deview
244 5rocks-deview
 
ACTEP2014: Upcoming trend of lung ultrasound
ACTEP2014: Upcoming trend of lung ultrasoundACTEP2014: Upcoming trend of lung ultrasound
ACTEP2014: Upcoming trend of lung ultrasound
 
[D2 CAMPUS] 분야별 모임 '보안' 발표자료
[D2 CAMPUS] 분야별 모임 '보안' 발표자료[D2 CAMPUS] 분야별 모임 '보안' 발표자료
[D2 CAMPUS] 분야별 모임 '보안' 발표자료
 
국내인디게임개발자의현실
국내인디게임개발자의현실국내인디게임개발자의현실
국내인디게임개발자의현실
 
OpenGL ES 2.x Programming Introduction
OpenGL ES 2.x Programming IntroductionOpenGL ES 2.x Programming Introduction
OpenGL ES 2.x Programming Introduction
 
SangJa project concept note
SangJa project concept noteSangJa project concept note
SangJa project concept note
 

Semelhante a kgc2014 LINE Rangers/Stage 크래시 및 어뷰징 대응

초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 YoungSu Son
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기Jaeseung Ha
 
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정funmeate
 
[NDC2014] 직접 만들어서 즐겨보자 - Cocos2d-x3.0으로 한 시간만에 횡스크롤 슈팅게임 만들기 (함동기)
[NDC2014] 직접 만들어서 즐겨보자 - Cocos2d-x3.0으로 한 시간만에 횡스크롤 슈팅게임 만들기 (함동기)[NDC2014] 직접 만들어서 즐겨보자 - Cocos2d-x3.0으로 한 시간만에 횡스크롤 슈팅게임 만들기 (함동기)
[NDC2014] 직접 만들어서 즐겨보자 - Cocos2d-x3.0으로 한 시간만에 횡스크롤 슈팅게임 만들기 (함동기)Donggi Hahm
 
안드로이드 플랫폼 설명
안드로이드 플랫폼 설명안드로이드 플랫폼 설명
안드로이드 플랫폼 설명Peter YoungSik Yun
 
(111217) #fitalk rootkit tools and debugger
(111217) #fitalk   rootkit tools and debugger(111217) #fitalk   rootkit tools and debugger
(111217) #fitalk rootkit tools and debuggerINSIGHT FORENSIC
 
이클립스와 안드로이드
이클립스와 안드로이드이클립스와 안드로이드
이클립스와 안드로이드JavaCommunity.Org
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템강 민우
 
NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기
NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기
NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기Jaeseung Ha
 
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기YoungSu Son
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발Jeongkyu Shin
 
kics2013-winter-biomp-slide-20130127-1340
kics2013-winter-biomp-slide-20130127-1340kics2013-winter-biomp-slide-20130127-1340
kics2013-winter-biomp-slide-20130127-1340Samsung Electronics
 
(140407) #fitalk d trace를 이용한 악성코드 동적 분석
(140407) #fitalk   d trace를 이용한 악성코드 동적 분석(140407) #fitalk   d trace를 이용한 악성코드 동적 분석
(140407) #fitalk d trace를 이용한 악성코드 동적 분석INSIGHT FORENSIC
 
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석GangSeok Lee
 
[2013 CodeEngn Conference 08] Homeless - Android 악성앱 필터링 시스템
[2013 CodeEngn Conference 08] Homeless - Android 악성앱 필터링 시스템[2013 CodeEngn Conference 08] Homeless - Android 악성앱 필터링 시스템
[2013 CodeEngn Conference 08] Homeless - Android 악성앱 필터링 시스템GangSeok Lee
 
[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가
[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가
[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가Hwanhee Kim
 
소프트웨어 2.0을 활용한 게임 어뷰징 검출
소프트웨어 2.0을 활용한 게임 어뷰징 검출소프트웨어 2.0을 활용한 게임 어뷰징 검출
소프트웨어 2.0을 활용한 게임 어뷰징 검출정주 김
 
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기Miyu Park
 

Semelhante a kgc2014 LINE Rangers/Stage 크래시 및 어뷰징 대응 (20)

초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
 
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
모바일환경에서의 크로스 플랫폼_3D_렌더링엔진_제작과정
 
[NDC2014] 직접 만들어서 즐겨보자 - Cocos2d-x3.0으로 한 시간만에 횡스크롤 슈팅게임 만들기 (함동기)
[NDC2014] 직접 만들어서 즐겨보자 - Cocos2d-x3.0으로 한 시간만에 횡스크롤 슈팅게임 만들기 (함동기)[NDC2014] 직접 만들어서 즐겨보자 - Cocos2d-x3.0으로 한 시간만에 횡스크롤 슈팅게임 만들기 (함동기)
[NDC2014] 직접 만들어서 즐겨보자 - Cocos2d-x3.0으로 한 시간만에 횡스크롤 슈팅게임 만들기 (함동기)
 
안드로이드 플랫폼 설명
안드로이드 플랫폼 설명안드로이드 플랫폼 설명
안드로이드 플랫폼 설명
 
Unity소개
Unity소개Unity소개
Unity소개
 
(111217) #fitalk rootkit tools and debugger
(111217) #fitalk   rootkit tools and debugger(111217) #fitalk   rootkit tools and debugger
(111217) #fitalk rootkit tools and debugger
 
이클립스와 안드로이드
이클립스와 안드로이드이클립스와 안드로이드
이클립스와 안드로이드
 
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
 
NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기
NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기
NDC2018 안드로이드+유니티 네이티브 프로파일링 삽질기
 
Anatomy of an android
Anatomy of an androidAnatomy of an android
Anatomy of an android
 
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
 
kics2013-winter-biomp-slide-20130127-1340
kics2013-winter-biomp-slide-20130127-1340kics2013-winter-biomp-slide-20130127-1340
kics2013-winter-biomp-slide-20130127-1340
 
(140407) #fitalk d trace를 이용한 악성코드 동적 분석
(140407) #fitalk   d trace를 이용한 악성코드 동적 분석(140407) #fitalk   d trace를 이용한 악성코드 동적 분석
(140407) #fitalk d trace를 이용한 악성코드 동적 분석
 
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석
 
[2013 CodeEngn Conference 08] Homeless - Android 악성앱 필터링 시스템
[2013 CodeEngn Conference 08] Homeless - Android 악성앱 필터링 시스템[2013 CodeEngn Conference 08] Homeless - Android 악성앱 필터링 시스템
[2013 CodeEngn Conference 08] Homeless - Android 악성앱 필터링 시스템
 
[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가
[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가
[NDC2016] 신경망은컨텐츠자동생성의꿈을꾸는가
 
소프트웨어 2.0을 활용한 게임 어뷰징 검출
소프트웨어 2.0을 활용한 게임 어뷰징 검출소프트웨어 2.0을 활용한 게임 어뷰징 검출
소프트웨어 2.0을 활용한 게임 어뷰징 검출
 
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
 

kgc2014 LINE Rangers/Stage 크래시 및 어뷰징 대응

  • 1. LINE Rangers/Stage 크래시 및 어뷰징 대응 LINE+ 게임개발 2실 남세운/문영민
  • 2. 뭔 게임이야? • 릴리즈 : 2014.02.28 • 타워 디펜스 • 귀여운 라인 케릭터 총 출동 • 한국어, 일본어, 태국어, 중국어(번체), 영어 • Cocos2d-x 2.1.4 – http://cocos2d-x.org
  • 7. 어뷰징? • 남용, 오용, 학대 등을 뜻하는 단어인 abuse에서 파생된 단 어로 주로 온라인 게임에서 버그, 핵 등의 불법 프로그램, 타 인 계정 도용, 다중 계정 접속 등을 통해 부당한 이득을 챙기 를 행위를 뜻한다 (엔하위키) • DOS 게임 시절 – 남은 생명력 9999 • 모바일 시대
  • 8. 1단계 – 메모리 조작 • 단순하지만 가성비 좋은 어뷰징 – 화면의 숫자 – 추측 – 노가다 • 메모리 수정/복사
  • 9. 1단계 – 메모리 조작 • 좋은 예
  • 10. 1단계 – 메모리 조작 • 화면에 노출되는 숫자, 예측 가능한 숫자 제거 • UI와 로직의 분리 • 숫자 암호화 – 모바일 성능 고려 • 클라이언트 로직을 신뢰하지 말자 • 서버 검증 절차 추가
  • 11. 2단계 – 시간 조작 • 일명 스피드핵 • 타겟 : 예측된 시간동안 행동이 이루어 지는 로직 • 결과 : 적군이 타워를 지나치더라 • Ex) 일반적인 dt = 0.03s 스피드핵 dt = 10s(배율로 조정 가능)
  • 12. 2단계 – 시간 조작 • 클라이언트 시간은 쉽게 조작 가능하다 • Dt를 기반으로 하는 경우 경계값을 꼭 정의하자 • 가능하면 서버 처리
  • 13. 3단계 – 디컴파일 • IF if ( checkValue ) { //checkValue 가 true 일때만 실행되야 하는 상황 } • 항상 true 를 리턴하게 한 후 앱을 리패키징하면 끝 • JAVA, C++ 소스코드 보안
  • 14. 3단계 – 디컴파일 • 라이브러리 변조
  • 16. 3단계 – 디컴파일 • 뭐…뭐라는 거야..나도 모르겠다… • 전문가를 찾아라 • So 파일을 앱 로딩시에 검증한다 – 설치된 경로의 so파일 체크 • So 파일 심볼 제거 • 난독화
  • 17. 3단계 – 디컴파일 • Android.mk 디버그 심볼 제거 옵션 추가 LOCAL_CFLAGS += -fvisibility=hidden • Main.cpp의 모든 JNI 함수에 JNIEXPORT, JNICALL 추가 JNIEXPORT void JNICALL Java_org_cocos2dx_lib_Cocos2dxRenderer_n ativeInit(JNIEnv* env, jobject thiz, jint w, jint h) { //code } • NDK_ROOT/platforms/android-x/arch-arm/usr/include/jni.h #define JNIEXPORT _attribute_ ((visibility ("default")))
  • 20. 4단계 – 버전 우회 • 이것 저것 열심히 수정해 놨더니 똭!! • So파일을 변조된 파일로 교체 • 앱 버전 정보 변조 1.0.4 에서 xml버전 정보만 교체해서 패키징 -> 1.0.6 으로 인식 -> 어뷰징 우회
  • 21. 4단계 – 버전 우회 • 버전 정보를 소스코드에 내장하도록 함 • So파일 검증 절차 추가
  • 22. 5단계 – 버그 버그 버그.. • 우리의 QA는 완벽 하지만, 완벽하지 않다 • 외부 이벤트에 의한 일시 정지 + 터치 취소 이벤트
  • 23. 6단계 – 다시 처음부터 • 무한 반복 • 이쯤 되면 고민을 할 시기 – 어뷰징 방지를 위해 얼마나 리소스를 투입 할 것인가?
  • 24. 추가 고려 사항 • 믿을게 없구나… – 아이폰 – 탈옥 우회 앱 – 안드로이드 – 루팅 우회 앱 – 라인 전용 우회 앱 • 커뮤니티 사이트 동향 파악 – 대만, 태국 • 재화는 모두 서버 처리 • 보안 모듈 사용 – 사내 보안 모듈 – 안드로이드 네이티브 : ProGuard 적용 검토
  • 25. ETC • D2 오픈세미나 : LINE Rangers 게임 클라이언트/서버 아키 텍쳐 – http://www.slideshare.net/deview/4d2-line-rangers
  • 26.
  • 27. 라인 스테이지란? “Tab & Flick Rhythm game with LINE Characters”
  • 28. 크래시의 영향 서비스 출시 앱이 죽고/멈춤 사용자 감소/리뷰 별점 테러 ???
  • 29. 크래시 대응 수집 분석 처리
  • 30. 크래시 수집 • nCrazer - 로그 수집 및 분석 시스템을 이용한 수집 – IOS : plCrashReporter • https://www.plcrashreporter.org/ – Android : google-breakpad • https://code.google.com/p/google-breakpad/ – nCrazer 강연 자료 : http://deview.kr/2014/session?seq=8
  • 31. 크래시 분석 (IOS) Xcode>Organizer를 이용한 분석
  • 32. 크래시 분석 (IOS) Symbolicatecrash 명령어를 이용한 분석
  • 33. 크래시 분석 (IOS) • 환경 변수 설정 – export DEVELOPER_DIR="/Applications/XCode.app/Contents/Deve loper” • 명령어 alias – alias symbolicatecrash='/Applications/Xcode.app/Contents/Develope r/Platforms/iPhoneOS.platform/Developer/Library/PrivateFramework s/DTDeviceKitBase.framework/Versions/A/Resources /symbolicatecrash -v' • 분석 – symbolicatecrash myapp.crash myapp.app.dSYM
  • 35. NDK 크래시 분석(Android) • Google-breakpad란?
  • 36. NDK 크래시 분석(Android) • 선행작업 – 리눅스 머신 설치 • Symbolic 파일 생성 시 Linux Dependent한 함수 사용. – Google breakpad 설치 • svn checkout http://google-breakpad.googlecode.com/svn/trunk/ google-breakpad- read-only • checkout 받은 디렉토리 이동 • ./configure --host=arm-linux-androideabi --disable-processor --disable-tools • make -j4
  • 37. NDK 크래시 분석(Android) • SO(Shared Object) 파일 구하기 – ndk build시 프로젝트내에 디버그 정보를 가지고 있는 SO 파일이 존 재. – 크래시가 발생한 빌드의 SO 버전이어야 함. • Symbolic 파일 생성 – Breakpad 설치가 완료되면, usr/local/dump_syms 명령어가 생성됨. – dump_syms myapp.so > myapp.so.sym
  • 38. NDK 크래시 분석(Android) • 심볼 파일
  • 39. NDK 크래시 분석(Android) • Symbolic 디렉토리 생성 – mkdir myapp.so • 디렉토리명과 so 파일명이 같아야함. – head –n1 myapp.so.sym • MODULE Linux arm CC2AD9BC08138FB1E8E6284959817A560 myap p.so – mkdir CC2AD9BC08138FB1E8E6284959817A560 • Symbolic 파일 복사 – cp myapp.so.sym ./myapp.so/CC2AD9BC08138FB1E8E628495981 7A560
  • 40. NDK 크래시 분석(Android) • StackWalk Extract Data Stream from minidump Enumerating Threads Walking a Thread stack Produce result
  • 41. NDK 크래시 분석(Android) • 분석 – /usr/local/minidump_stackwalk myapp.dmp