소곤소곤 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)에도 불구하고 해커들과의 전쟁은 아직 진행중...

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

2016년 2월 23일 화요일

apk의 서명 확인하기. How to get a signature from an apk

$ keytool -list -printcert -jarfile theapp.apk
Signer #1:

Signature:
Owner: CN=***, OU=***, O=xxx Project, L=Mountain View, ST=CA, C=US
Issuer: CN=***, OU=***, O=xx Project, L=Mountain View, ST=CA, C=US
Serial number: 509f6d47
Valid from: Sun Nov 11 18:17:59 KST 2012 until: Thu Mar 29 18:17:59 KST 2040
Certificate fingerprints:
         MD5:  A7:E9:93:81:E9:F2:10:0E:48:39:AB:48:34:F3:93:67
         SHA1: 2F:DD:51:D9:AD:71:BA:AB:18:2B:2F:09:AC:4D:8E:AB:A8:E3:DE:F9
         SHA256: DD:5D:41:07:31:3B:A8:FD:1F:A8:F4:56:EF:81:49:94:36:00:FF:85:73:F9:B1:D8:C2:FC:ED:51:F5:52:8D:EE
         Signature algorithm name: SHA1withRSA
         Version: 3

2015년 8월 6일 목요일

인그레스 하기 좋은 폰 (GPS 관점에서). Better devices for playing Ingress with the location service.

■ GPS 말고도 다른것들이? 

인그레스는 위치기반 게임이기 때문에, 현재 위치를 정확하게 빨리 잡아내는 것이 매우 중요하다. 흔히들 GPS를 위치정보라는 말과 동일시 하는데, 사실 GPS는 미국이 주도하는 위성위치정보시스템들을 이야기 하는 것이고, 다른 국가들도 이에 대응하여 위성위치정보 시스템들을 개발해서 운영하고 있다.

대표적인 것이 러시아의 GLONASS, 유럽의 Galileo. 그리고 비교적 최근의 일본,중국(Beidou) 위성들을 이용한 위치정보 시스템들이 있다.

당신의 위치, 실외등의 다른 조건이 동일하다고 할 때에 현재 위치를 정확하고 빠르게 잡아 내려면 보다 많은 위성 정보를 수신할 수 있는 스마트폰이 절대적으로 유리하다.

비교적 최근 스마트폰들은 이것들중 복수개의 위성위치정보시스템을 지원하지만 스마트폰 기종별로 조금씩 다르다는 사실.


■ 스마트폰 기종별로 수신하는 위성위치정보시스템이 다르다.



우리나라 휴대폰들이 GLONASS를 지원하기 시작한게 갤럭시S3, 노트2, 옵티머스G 부터니까 사실 얼마되지 않았다. 아이폰은 아이폰4부터 글로나스를 지원한다.

눈여겨 볼점은 중국의 Beidou 위성시스템인데, 우리나라가 중국 바로 옆에 있는 덕택에(?) 이 시스템을 지원하면 엄청난 혜택을 보게 되는것. 삼성의 갤럭시 S5이후 노트4 이후 기종이 이를 지원한다. 


■ 실제 테스트 

GPS Status 앱 (설치 https://play.google.com/store/apps/details?id=com.eclipsim.gpsstatus2)을 이용하면 현재 내 머리위에 있는 위성들의 존재를 알 수 있다.


갤럭시 S3 LTE 

GPS, GLONASS,일본위성(193번)까지 잡는다.

갤럭시 S5 

중국 Beidou까지 지원한다. 200번대 위성정보까지 수신하는 걸 볼 수 있다.


LG 옵티머스 G

수신률이 좋은 편이지만  아쉽게도 일본,중국 위성 정보를 수신하지 않는다.


LG G3

역시 위성 수신률은 좋은편이지만 중국,일본 위성 지원하지 않는게 아쉽다.



Apple iPhone 4

아이폰4부터는 GLONASS를 지원한다. 하지만 최근버전인 아이폰6도 일본/중국 위성을 지원하지 않는다.


결론, 삼성 갤럭시 S5, 노트4 이후 기종이 위성위치정보 수신범위가 제일 넓다. 


참고, Glonass를 지원하는 스마트폰 목록은

참고로, Beidou를 지원하는 삼성 갤럭시 기종은, 

※ 이 글은 앞집꼬마님의 게시글 http://2222222.tistory.com/99 을 참고로 작성한 것입니다. 링크글 원문 보시면 보다 많은 유용한 정보들이 있습니다.