Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

2,821 views

Published on

KGC LINE Rangers/Stage 크래시 및 어뷰징 대응
발표자료

Published in: Mobile
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

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

  1. 1. LINE Rangers/Stage 크래시 및 어뷰징 대응 LINE+ 게임개발 2실 남세운/문영민
  2. 2. 뭔 게임이야? • 릴리즈 : 2014.02.28 • 타워 디펜스 • 귀여운 라인 케릭터 총 출동 • 한국어, 일본어, 태국어, 중국어(번체), 영어 • Cocos2d-x 2.1.4 – http://cocos2d-x.org
  3. 3. 스크린샷
  4. 4. 다운로드
  5. 5. 라인 할로윈 코스프레 : 일본
  6. 6. 왕철이형 방문기념
  7. 7. 어뷰징? • 남용, 오용, 학대 등을 뜻하는 단어인 abuse에서 파생된 단 어로 주로 온라인 게임에서 버그, 핵 등의 불법 프로그램, 타 인 계정 도용, 다중 계정 접속 등을 통해 부당한 이득을 챙기 를 행위를 뜻한다 (엔하위키) • DOS 게임 시절 – 남은 생명력 9999 • 모바일 시대
  8. 8. 1단계 – 메모리 조작 • 단순하지만 가성비 좋은 어뷰징 – 화면의 숫자 – 추측 – 노가다 • 메모리 수정/복사
  9. 9. 1단계 – 메모리 조작 • 좋은 예
  10. 10. 1단계 – 메모리 조작 • 화면에 노출되는 숫자, 예측 가능한 숫자 제거 • UI와 로직의 분리 • 숫자 암호화 – 모바일 성능 고려 • 클라이언트 로직을 신뢰하지 말자 • 서버 검증 절차 추가
  11. 11. 2단계 – 시간 조작 • 일명 스피드핵 • 타겟 : 예측된 시간동안 행동이 이루어 지는 로직 • 결과 : 적군이 타워를 지나치더라 • Ex) 일반적인 dt = 0.03s 스피드핵 dt = 10s(배율로 조정 가능)
  12. 12. 2단계 – 시간 조작 • 클라이언트 시간은 쉽게 조작 가능하다 • Dt를 기반으로 하는 경우 경계값을 꼭 정의하자 • 가능하면 서버 처리
  13. 13. 3단계 – 디컴파일 • IF if ( checkValue ) { //checkValue 가 true 일때만 실행되야 하는 상황 } • 항상 true 를 리턴하게 한 후 앱을 리패키징하면 끝 • JAVA, C++ 소스코드 보안
  14. 14. 3단계 – 디컴파일 • 라이브러리 변조
  15. 15. 3단계 – 디컴파일
  16. 16. 3단계 – 디컴파일 • 뭐…뭐라는 거야..나도 모르겠다… • 전문가를 찾아라 • So 파일을 앱 로딩시에 검증한다 – 설치된 경로의 so파일 체크 • So 파일 심볼 제거 • 난독화
  17. 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")))
  18. 18. 3단계 – 디컴파일
  19. 19. 3단계 – 디컴파일
  20. 20. 4단계 – 버전 우회 • 이것 저것 열심히 수정해 놨더니 똭!! • So파일을 변조된 파일로 교체 • 앱 버전 정보 변조 1.0.4 에서 xml버전 정보만 교체해서 패키징 -> 1.0.6 으로 인식 -> 어뷰징 우회
  21. 21. 4단계 – 버전 우회 • 버전 정보를 소스코드에 내장하도록 함 • So파일 검증 절차 추가
  22. 22. 5단계 – 버그 버그 버그.. • 우리의 QA는 완벽 하지만, 완벽하지 않다 • 외부 이벤트에 의한 일시 정지 + 터치 취소 이벤트
  23. 23. 6단계 – 다시 처음부터 • 무한 반복 • 이쯤 되면 고민을 할 시기 – 어뷰징 방지를 위해 얼마나 리소스를 투입 할 것인가?
  24. 24. 추가 고려 사항 • 믿을게 없구나… – 아이폰 – 탈옥 우회 앱 – 안드로이드 – 루팅 우회 앱 – 라인 전용 우회 앱 • 커뮤니티 사이트 동향 파악 – 대만, 태국 • 재화는 모두 서버 처리 • 보안 모듈 사용 – 사내 보안 모듈 – 안드로이드 네이티브 : ProGuard 적용 검토
  25. 25. ETC • D2 오픈세미나 : LINE Rangers 게임 클라이언트/서버 아키 텍쳐 – http://www.slideshare.net/deview/4d2-line-rangers
  26. 26. 라인 스테이지란? “Tab & Flick Rhythm game with LINE Characters”
  27. 27. 크래시의 영향 서비스 출시 앱이 죽고/멈춤 사용자 감소/리뷰 별점 테러 ???
  28. 28. 크래시 대응 수집 분석 처리
  29. 29. 크래시 수집 • 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
  30. 30. 크래시 분석 (IOS) Xcode>Organizer를 이용한 분석
  31. 31. 크래시 분석 (IOS) Symbolicatecrash 명령어를 이용한 분석
  32. 32. 크래시 분석 (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
  33. 33. 크래시 분석 (IOS)
  34. 34. NDK 크래시 분석(Android) • Google-breakpad란?
  35. 35. 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
  36. 36. NDK 크래시 분석(Android) • SO(Shared Object) 파일 구하기 – ndk build시 프로젝트내에 디버그 정보를 가지고 있는 SO 파일이 존 재. – 크래시가 발생한 빌드의 SO 버전이어야 함. • Symbolic 파일 생성 – Breakpad 설치가 완료되면, usr/local/dump_syms 명령어가 생성됨. – dump_syms myapp.so > myapp.so.sym
  37. 37. NDK 크래시 분석(Android) • 심볼 파일
  38. 38. 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
  39. 39. NDK 크래시 분석(Android) • StackWalk Extract Data Stream from minidump Enumerating Threads Walking a Thread stack Produce result
  40. 40. NDK 크래시 분석(Android) • 분석 – /usr/local/minidump_stackwalk myapp.dmp
  41. 41. 크래시 대응 결과

×