7. 어뷰징?
• 남용, 오용, 학대 등을 뜻하는 단어인 abuse에서 파생된 단
어로 주로 온라인 게임에서 버그, 핵 등의 불법 프로그램, 타
인 계정 도용, 다중 계정 접속 등을 통해 부당한 이득을 챙기
를 행위를 뜻한다
(엔하위키)
• DOS 게임 시절
– 남은 생명력 9999
• 모바일 시대
8. 1단계 – 메모리 조작
• 단순하지만 가성비 좋은 어뷰징
– 화면의 숫자
– 추측
– 노가다
• 메모리 수정/복사
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”
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
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