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:
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:
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