소곤소곤 ad

2016년 8월 22일 월요일

Technical note for reverse engineering & hack for Pokemon GO, 포켓몬GO 해커들과의 전쟁

포켓몬 go가, 각종 핵 프로그램들로 인해 몸살을 앓고 있다. 제대로 막아내지 못하면 망게임 될 듯.

그건 그렇고 해커들에 의해, 뼈와 살이 분리(?)되는 과정을 옆에서 관심있게 구경하다 보니, 몇 가지 기술적인 부분들이 눈에 띄어서 적어두고자 함.

1) 포켓몬고는 Unity3d 엔진을 이용. 스크립트가 리버스엔지니어링에 의해 홀라당 노출되는 것을 막기 위해 바이너리코드화(IL2CPP)

2) 포켓몬고는 서버와 당연히 SSL로 암호화된 통신을 한다. 그럼에도 해커들은 MITM 프록시를 이용하여, 주고받는 통신내용을 얼마든지 들여다본다. https://mitmproxy.org/

3) 포켓몬고의 실제 메세지통신은 구글의 protobuf를 이용한다. https://developers.google.com/protocol-buffers/

4) 해커들은 공식앱의 인증을 우회하는 방법을 알아냈다. (비공식 앱들이 공식앱인것처럼 할 수있게 되었다) Cerficitaion Pinning https://eaton-works.com/2016/07/31/reverse-engineering-and-removing-pokemon-gos-certificate-pinning/

5) 위치를 속이는 방법 및 이것을 검출하는 방법의, 장군멍군 싸움.
Fake GPS, Mock Location 검출 우회, 루팅디바이스를 이용하여 system app으로 동작시키는 방법.

6) 안드로이드, 강력한 후킹툴 Xposed Framework http://repo.xposed.info/module/de.robv.android.xposed.installer

7) 검사를 무력화하여 착한척하기 : Root Cloaking http://www.droidopinions.com/bypass-pokemon-go-root-detection-without-pokepatch-on-android/

8) 정말 흥미진진하게 지켜봤던 Unknown6 Issue (통신내용중에 해커들이 아직 이해하지 못한 필드들이 여럿이 있었는데... 개발사는 이걸 이용하여 해커들을 전멸시켰으나... 후략 )

영구밴 & 소프트밴 & 테크니컬밴등의 기술적 대응과, 개발사의 법적조치경고(C&D)에도 불구하고 해커들과의 전쟁은 아직 진행중...

이쪽 문제가 어느정도 해결되기 전에는 아이템교환기능/트레이딩 기능은 집어넣지 못할듯. 온라인게임은 경제가 파탄나면 끝장남.