HeadlinesBriefing HeadlinesBriefing.com

Engenharia reversa do aplicativo de jogo de tabuleiro

Hacker News •
×

Recebi um jogo de tabuleiro chamado "Hitster" como presente. É um jogo onde você identifica músicas e adivinha o ano de lançamento, artistas, etc. Em cada cartão, você encontrará o nome do artista ou banda, o ano em que a música foi lançada e o título da música. Na parte de trás, há um código QR que você escaneia usando o aplicativo Hitster, que então reproduz a música através do Spotify ou Apple Music. Felizmente, o aplicativo requer uma assinatura do Apple Music ou Spotify para funcionar. Neste post de blog, vou mergulhar no buraco negro da engenharia reversa do aplicativo Android e contornar sua tentativa extremamente mal feita de ocultar os dados.

No lado de frente de cada cartão, você encontrará o nome do artista ou banda, o ano em que a música foi lançada e o título da música. Na parte de trás, há um código QR. Escanear o código leva você a uma URL com duas coisas em seu caminho: a região do jogo (DE no meu caso) e o ID do cartão. A música então começa a tocar no aplicativo ou através do Spotify. Isso significa que há um mapeamento de ID do cartão ⇒ faixa do Spotify. Também há várias versões de cartões por região, então o ID do cartão por si só não é suficiente para identificar uma música.

Eu obtive o APK do aplicativo de algum site suspeito de download de APK Android, usei o jadx para obter o código Java decompilado. Após procurar por um tempo, encontrei alguns arquivos JSON sob res/raw. Um deles era chamado gameset_database_4.json e parecia estar criptografado. Executei uma ferramenta para identificar o formato, e ele me respondeu como Base64. Isso é uma codificação, então eu a decodifiquei primeiro. O resultado ainda não era legível, e eu adivinhei que era criptografado com AES ou algo semelhante. Eu nunca havia feito engenharia reversa de um aplicativo Android antes, então apenas procurei globalmente por AES. E adivinha o quê? Havia um arquivo chamado k43.java com todo o processo de descriptografia completamente exposto diante de mim!

FAQ P: Como o aplicativo Hitster descriptografa seu banco de dados de jogo?

FAQ R: O aplicativo usa um arquivo JSON criptografado com Base64 e AES/GCM/NoPadding. A chave de descriptografia é derivada usando SHA-256 de uma concatenação de uma string numérica e uma string secreta. O IV é os primeiros 12 bytes dos dados decodificados.

Fonte: Hacker News · Resumido por HeadlinesBriefing