마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

apk파일의 변조를 방어하고 싶습니다.

0 추천
안녕하세요 선후입니다^^

 

오랜만에 질문게시판에 글을 적네요

Unity3D로 게임을 개발중인데

 

게임머니 및 수치를 악용하기 위해서 apk파일의 JAVA나 유니티의 C#코드를 변조하는 방법을 방어하기위해서

APK파일(앱자체나 게임 자체)의 변조를 확인하는 방법이 있는지 궁금합니다^^
선후 (380 포인트) 님이 2013년 11월 20일 질문

1개의 답변

0 추천
키사인 검사가 최고 아닐까요?

그 검사로직조차 변조한다면 별수 없지만..그건 쉬운게 아니니 우선 사용을 하고 있구요

그다음은 apk의 정확한 용량을 측정해서 서버랑 대조하는것입니다.

변조를 한다면 최소자리수 1자리라도 분명 달라지게 되어있습니다.

서버에서 최신판 apk의 용량을 정확히 가지고 있으면 설치된 버전과 비교 가능하죠.
지이소프트 (2,870 포인트) 님이 2013년 11월 20일 답변
그런 방법들이 있군요 감사합니다^^

그런데 각 2가지 방법들을 배우고 사용하는 방법에 대해 공부하려면

어떤 단어로 검색을 해야하나요 ㅠㅠ
보통 md5, sha1 같은 것을  이용합니다.
특히 해커가 절대 알 수 없도록 어플 서명키까지 사용해서 hmac-sha1 같은 값을 비교하는게 좋습니다.
 하지만 비교하는  로직이 무조건 성공하게 해버리면, 뚫리는지라. 해커님의 자비를 바랄 수 밖에 없습니다.
그나마,  native에서 https 로 통신을 하면, 어느정도 방어가 되는 듯 했습니다.
게임 수치변경은 루팅해서 메모리변조로 하지않을까요?
파일 변조라해서 해쉬 비교하라고 말씀 드린 것이며,
메모리 변조는 데이터를 암호화 시켜두면 됩니다.
특정 로직을 돌려 나오는 숫자가 화면에 표시되게 합니다.
http://www.androidpub.com/index.php?_filter=search&mid=android_dev_info&search_target=title_content&search_keyword=game&document_srl=2006957 를 참조하세요
안녕하세요^^

변수 변경이 아니라

리버스앤지니어링으로 파일을 변조하거나 하는것을 막고싶어서요^^

하고 싶은것은

apk가 만들어지면 용량이 있는데
용량이 변했는지 확인하는 방법을 알고 싶습니다^^
말씀드린대로 apk 를 md5, 혹은 sha1 hash 한 값을 비교하시면 됩니다.
별도로 돌려도 되긴하지만 간단히 http://www.sha1-online.com/ 에 apk만 올리면 sha1 값이 나올 겁니다.

이 값을 서버에 올려두고, 어플 실행시 통신을 통해  안드로이드 버젼과 그 때의 해쉬값을 서버로 올려 해당 버젼의 해쉬값이 동일한지 비교하면 됩니다.
 보안을 더 강화하고 싶으시면 어플 서명시 사용하는  public key값으로 hmac-sha1 돌려 나온 값을 사용하셔도 되고요..
그리고 통신의 경우 http로 하면 tcpdump 프로그램으로 메세지  후킹을하면, 대략적인 메세지가 파악되다보니, https 로 하시라고 말씀드린 것이며,
  java 코드의 경우 디컴파일하면 대충 파악이 되니
native 코드로 작성하시라고 말씀드린 것입니다. 물론 native 코드도 해킹을 하는 해커가 존재하긴 합니다.. ㅠ.ㅠ
smali에 의한 앱크랙방지
...