Quizás hayas observado alguna vez en el Game Center de iOS que algunos usuarios tienen puntuaciones de juego de 9.223.372.036.844.775.807, que es el valor máximo posible para un entero y sin signo.
Todo lo que necesitamos para conseguirlo es redirigir nuestro tráfico a través de un proxy Burp en la misma red inalámbrica e instalar un certificado en nuestro dispositivo (PortSwigger CA) para interceptar el tráfico cifrado (tenéis varios tutoriales en la Red donde se explica cómo hacerlo).
Después tendremos que generar una puntuación que deba ser enviada al Game Center. Por ejemplo, en el juego “Cut the Rope” al completar un nivel se generará la siguiente petición:
POST /WebObjects/GKGameStatsService.woa/wa/submitScores HTTP/1.1
Host: service.gc.apple.com
User-Agent: gamed/4.10.17.1.6.13.5.2.1 (iPhone4,1; 6.1.2; 10B146; GameKit-781.18)
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Accept: */*
Some-Cookies: have been removed to make this shorter
Content-Type: application/x-apple-plist
Connection: keep-alive
Proxy-Connection: keep-alive
x-gk-bundle-version: 2.1
Content-Length: 473
x-gk-bundle-id: com.chillingo.cuttherope
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN” “http://www.apple.com/DTDs/PropertyList-1.0.dtd”>
<plist version=”1.0″>
<dict>
<key>scores</key>
<array>
<dict>
<key>category</key>
<string>1432673794</string>
<key>context</key>
<integer>0</integer>
<key>score-value</key>
<integer>12345</integer>
<key>timestamp</key>
<integer>1361998342937</integer>
</dict>
</array>
</dict>
</plist>
Simplemente modificamos antes el "score-value" dentro de las etiquetas integer y reenviamos la petición. Deberías recibir de Apple una respuesta con “status 0” y se actualizará tu puntuación en el GameCenter:
Fuente: Hacking High Scores in iOS GameCenter
No hay comentarios:
Publicar un comentario