핵심 요약
- 음악 맞히기 보드게임 '힛스터'가 스포티파이 등 유료 스트리밍 구독을 요구하자 한 개발자가 앱 역공학에 나섰습니다.
- 디컴파일러로 안드로이드 앱을 열어본 결과, AES 복호화 로직과 키 생성 패턴이 코드 내에 허술하게 노출되어 있었습니다.
- 결국 데이터베이스 암호화 구조와 키 데이터를 모두 찾아내며 보드게임 데이터 해독에 성공했습니다.
요약 최근 해외 보드게임 커뮤니티와 개발자들 사이에서 '음악 맞히기 보드게임 역공학' 후기가 화제를 모으고 있습니다.
작성자는 최근 '힛스터(Hitster)'라는 보드게임을 선물받았는데, 이 게임은 카드의 QR 코드를 전용 앱으로 스캔하면 스포티파이나 애플 뮤직을 통해 노래가 재생되고 플레이어가 노래 제목, 발매 연도, 아티스트를 맞히는 방식입니다. 하지만 이 앱을 정상적으로 이용하려면 반드시 스포티파이나 애플 뮤직 유료 구독 계정이 필요했습니다. 유료 구독 결제가 아까웠던 작성자는 결국 안드로이드 앱을 직접 뜯어보기(리버스 엔지니어링)로 결심했습니다.
작성자는 APK 파일을 구한 뒤 자바 디컴파일러인 jadx를 사용해 앱 내부 코드를 분석하기 시작했습니다. 리소스 폴더(res/raw)를 살펴보던 중 암호화된 것으로 보이는 'gameset_database_4.json' 파일을 발견했고, Base64 디코딩 후에도 읽을 수 없자 AES 암호화가 적용되었을 것이라 짐작했습니다.
앱 코드 전체에서 'AES' 키워드를 검색하자 곧바로 복호화 로직이 담긴 자바 파일(k43.java)을 찾을 수 있었습니다. 코드 분석 결과, Base64로 인코딩된 데이터를 디코딩한 뒤 첫 12바이트를 IV(Nonce)로 사용하고, 특정 비밀 문자열과 데이터 길이를 조합해 SHA-256 해시를 거쳐 AES 키를 생성하는 구조였습니다. 이후 디스코드 커뮤니티의 조언을 받아 32바이트 배열 패턴을 검색한 끝에, 암호화 키 생성에 사용되는 핵심 바이트 배열 데이터까지 코드 속에서 그대로 찾아내는 데 성공했습니다. 허술하게 숨겨둔 게임사 덕분에 보드게임 데이터베이스를 손쉽게 파헤친 흥미진진한 개발기입니다.
Sponsored · 광고