Pin It

Security

Hacer trampas en un videojuego modificando la memoria no es algo nuevo. Los niños de los 80 ya lo conocíamos de forma similar con los POKES de Spectrum y hoy se siguen utilizando estas trampas o cheats en cualquier plataforma. Incluso hay mil y un foros donde se debaten y comparten distintos "trucos".

El caso es que llevo unos días de baja y el teclado que más he podido tocar ha sido el de la pantalla táctil de mi Nexus, así que empecé a jugar a un juego de mazmorras o RPG bastante chulo llamado Dark Avenger. Como podéis imaginar después de tostarme los ojos casi una hora decidí empezar a trastear para ver que se podía hacer con editores de memoria como GameCIH, GameGuardian o HaXplorer. Al ejecutarlo en segundo plano una "agradable" pantalla me advertía:



¡Tenemos un desafío!

Bien, podría bajarme cualquier mod del juego para jugar off-line y tener dinero o vidas infinitas, pero sabéis que ese no es el objetivo, al menos en este blog. Tendremos por tanto que crear nuestro propio APK para eliminar el anti-cheat.

Comienzo como siempre descargando el paquete del juego con Real APK Leecher:
 

Ahora extraigo y decompilo las fuentes con apktool, esto incluye recursos (res), manifiesto (AndroidManifest) y fuentes decompiladas:



d:\> java -jar apktool.jar d "Dark Avenger.apk" salida
I: Baksmaling...
I: Loading resource table...
I: Loaded.
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: C:\Users\vmotos\apktool\framework\1.apk
I: Loaded.
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Done.
I: Copying assets and libs...

Después de echar un vistazo a las actividades de la aplicación dentro del AndroidManifest.xml y husmear el directorio de salida mi objetivo es la función
OPT_CIH_CHECK en .\salida\smali\com\gamevil\lib\GvActivity.smali:


sget v2, Lcom/gamevil/lib/profile/GvProfileData;->OPT_CIH_CHECK:I

    invoke-static {v2}, Lcom/gamevil/lib/profile/GvProfileData;->isDisabled(I)Z

    move-result v2

    if-nez v2, :cond_1

    .line 238
    iget-boolean v2, p0, Lcom/gamevil/lib/GvActivity;->isFirst:Z

    if-nez v2, :cond_2

Sin entrar en mucho detalle (recordar que estoy malito) modifico las condiciones (cond_3) en el código smali y recompilo el paquete:

D:\>java -jar apktool.jar b salida avengercracked.apk
I: Checking whether sources has changed...
I: Smaling...
I: Checking whether resources has changed...
I: Building resources...
I: Copying libs...
I: Building apk file...

Después de lo firmo:

java -jar signapk.jar certificate.pem key.pk8 avengercracked.apk avengercracked2.apk
 
Subo avengercracked2.apk a mi Google Drive, lo reinstalo en mi móvil y vuelvo corriendo al sillón a probarlo con GameCIH ;)

 
 

0 comentarios:

Publicar un comentario

 
Top