Habi Hablóg
Declaro:
XML válidoXHTML válido800x600 +
RSS válidoCSS válidoNavegador digno
  Blog   Archivo   Contacto   Administración  

Acerca de

Matemático, informático, aficionado a la electrónica, friki... y otras cosas que no vienen a cuento ni pasan los filtros de palabras.

¿Queríais un blog? Ahí va.

Red antisocial

¡Me van a volver loca! 2.0
La Fragata Portuguesa

Z
¡Me van a volver loca!

Últimos posts

El expediente X que nadie pidió
eNigma
La cuadratura del píxel
Portando desde Spectrum
Inexorable

Últimos comentarios

Habi
NoSupoResolverLaFuncion
Edu
Habi
EnriqueGG

Calendario

No hay fechas.

Categorías

Chorradas
Paranoias
Posts lúcidos
Tecnoesoterismo
Yuyus

Cenas de Abj

Abj debe 7 cenas.

Frase célebre

Z dice: 
 
fieles? 
 
yo no tengo fieles 
 
si acaso, alguna vez he tenido infieles

Crackeo preservativo

Habi - 20/12/2016 1:37:43 - Tecnoesoterismo

Como conozco a ciertos lectores de este blog, empezaré citando la primera acepción según la RAE de:

preservativo, va

1. adj. Que tiene virtud o eficacia de preservar.

Bien. Aclarado ese punto, vayamos al tema. :]

El domingo pasado J. me habló de algunos juegos antiguos de PC que no estaban preservados por tener algún tipo de protección. Técnicamente lo estaban, por estar hechos los volcados en Kryoflux, pero si nadie puede usarlos para jugar en la práctica no lo están. Acepté el encargo por ser una buena causa y por los viejos tiempos peceros.

Los juegos son "Elicsir", "Juegos de relax" y "Rescate". Los tres españoles, los tres distribuidos por Proein, los tres escritos en BASIC compilado (con el Bascom de MicroSoft).

Lo primero que observo al recibir los ficheros es que Kryoflux ha sacado las imágenes como si hubiese 80 pistas a pesar de que los discos son de 40 y a pesar de habérsele indicado que dé doble paso. El arreglo es sencillo:

Una vez comprobado que las pistas extras (más allá de la 39) tampoco son necesarias también se eliminan. Se vuelcan las imágenes, se extraen los ficheros y se empieza a trabajar.

Y el primer juego no necesita más: el único problema que tenía era ese, puramente geométrico.

El segundo tiene los ficheros dentro de un directorio con caracteres ilegales. Como DosBox no tiene un DOS de verdad y su emulación deja mucho que desear no es capaz siquiera de acceder; tecleando a mano los caracteres con ALT + su código, sin embargo, sí. Viva la coherencia.

En cualquier caso, una vez extraídos los ficheros del segundo, y mezclados los de los dos discos del tercero pasamos a analizar la protección, que en ambos casos es la misma. El sistema de protección se llama aparentemente "Horus", y no está demasiado mal para la época y lugar; lo cual no quita que sea bastante facilón.

¿Cómo sé que hay protección? Simplemente mirando la entrada:

El programa desvía la interrupción $13 (acceso floppy bajo nivel), y más adelante utiliza el principio de la tabla de interrupciones para almacenar los valores que le pasa a la misma. En concreto machaca los valores de la interrupción 1 y 3, para fastidiar a los depuradores.

Analizando el código vemos que hay algo especial en la pista 17; y en efecto, si observamos esa pista:

 

 Podemos ver bien claro esos sectores solapados. El que tiene el ID 19 es el que tiene la información necesaria. Así que lo pongo en uno legible dentro de la imagen img, y modifico el código. Con eso y saltando a mano a la rutina que decodifica y relocaliza el código (los índices para ello están presentes al final del ejecutable, sin encriptar ni nada), logramos que funcionen ambos juegos:

Finalmente, supongo que lo ideal es crear una versión del ejecutable que pueda ejecutarse sin estar dentro de una imagen de disco y sin requerir intervención. Así pues, ejecuto el código que decodifica, pero me salto el que relocaliza. Entonces, vuelco el juego a disco y, con una cabecera MZ hecha a mano, las relocalizaciones y los datos volcados monto de vuelta un ejecutable, listo para ser jugado con DosBox.

Lo triste: nada de esto sería necesario si hubiese un emulador de PC que aceptase Kryoflux, pues las imágenes contienen la protección (la cual es fácilmente replicable). El único que admite algunas protecciones es el PCE, a costa de usar un formato propio. En fin.

A posteriori, tirando de internet, he descubierto que existe una versión desprotegida del "Rescate"; básicamente han hecho lo mismo que yo, aunque se han dejado toda la basurilla de la protección en el ejecutable (por eso les ocupa más). No dará problemas con DosBox, quizás sí en algún ordenador viejuno que ande justo de RAM libre.

Para finalizar diría algo sobre las partidacas que me estoy pegando, o pondría más capturas de pantalla… pero es que son juegos realmente malos (no os dejéis engañar por los gráficos). Dejemos que las autoridades competentes se encarguen del asunto.


genocho - 18/03/2017 2:43:23

Buenas Habi.  
Me encantan posts como este en el que rescatas juegos de la época maravillosa de los pc xt cga. Aunque sea un poco offtopic aún recuerdo del post donde montas tu xt turbo que en su dia aparte del monkey2 habias hecho funcionar muchos otros juegos en necv20-v30 que pedian 286+ cambiandoles las instrucciones con un editor. El único que se te habia resistido fué el Eternam según dices. Recuerdas cuáles eran los otros que hiciste funcionar ? Para mi sería un sueño que juegos como el Lotus 3 (este en especial) funcionaran en un Xt con v20-v30. Si te animas podrias hacer un post o al menos comentar por aqui cualos habias hecho funcionar tu. Hay otros como Micromachines, Vroom (F1 Domark) o Lost Vikings que creo que ya necesitan 386 pero igual se podrian "trucar" de esta manera. Ya te cuentas, Saludos.



Javi - 19/08/2018 22:50:55

Joer, vaya crack!!! 
Me encanta como has analizado la protección y después la has resuelto. 
 
Gran demostración de conocimientos.




Añadir comentario

Nombre:
Email:
Comentario:
Pregunta: Sea f(x)=8x2+7x+8. ¿Cuánto vale f(x) para x=1?
Respuesta: