disclaimer: he intentado resumirlo pero aun asi quedó bien tocho. :/
yo sigo de vacaciones de cacharreo DOS, pero me las acabo de saltar para echar un vistazo al KGB y ver si podia sacar un crack.
comparé el EXE ingles crackeado con el EXE ingles original, y me salian un huevo y medio de diferencias.
despues me fije que los tamaños de los EXE eran muy diferentes. En mi version los EXE y su tamaño son:
KGBPRG.EX_ con tamaño 27773 bytes <-- este es el original
KGBPRG.EXE con tamaño 61164 bytes <-- crakeado
cuando hay una diferencia tan grande de tamaño, casi con total seguridad el original esta empaquetado (comprimido). Y cuando lo ejecutamos se desempaqueta (descomprime) en memoria. Esos bytes en memoria sí son el codigo de verdad.
asi que me puse a descomprimir el archivo. La herramienta
UNP.EXE [1] es una buena primera opcion. No puede desempaquetar todo, pero es bastante todoterreno. Desde dosbox:
UNP KGBPRG.EX_
y ya tenemos el original descomprimido.
ahora ya si, si lo compararamos con el EXE crackeado, no hay tropecientos mil bytes diferentes, solo tres bloques de bytes diferentes.
viendo los bytes que cambian, huele a que los dos primeros son el crack en si, para la proteccion de claves. Los busque en la version en castellano y ahi estaban.
peeeero cuando nos fijamos en el tercer bloque, podemos ver que lo que cambia es un mensaje de error/advertencia del juego.
es decir, que son datos y no codigo. Y eso huele a que es un ajuste del checksum, pero aun asi intente hacer el mismo cambio en la version "KGB - DOSBox Disquetes.7z" de cireja... sin exito.
"KGB - DOSBox Disquetes.7z" modificado me seguia tirando al DOS (al menos con mis versiones).
(Nota: *creo* que el segundo call es la rutina chk_checksum (¿File or disk error?))
es decir, que el cabron del juego tiene al menos dos defensas: la comprobacion de claves en si, y ademas, otra capa defensiva: comprobar ciertos puntos del juego donde los crackers podrian haber cambiado bytes para crakearlo, y si detecta que los bytes estan toqueteados, tarjeta roja, has sido detectado y el juego te tira al DOS.
me jodio bastante, porque quien haya crakeado algun juego sabra que el subidon es mejor que cualquier catnip, y mientras lo hacia iba escribiendo esto en un txt, y asi contagiar subidones
llegados a este punto, se me ocurren dos opciones.
1. intentar ajustar el checksum a la version en castellano.
2. no cambiar el EXE, hacer un cargador/TSR que haga dos cosas.
A) modificar los bytes de la proteccion de claves en caliente, en memoria, capturando alguna INT cercana por ejemplo. Y una vez cambiado, y antes de que la rutina comprobar_checksum se ejecute...
que el TSR vuelva a dejar los bytes en memoria como estaban originalmente.
pero esto puede requerir mas tiempo.
tarde o temprano intentare acabar el crack. Mientras tanto con que la info pueda serle util a alguien (cireja o quien sea), para otros cracks, habra valido la pena el tiempo invertido.
es todo por ahora, feliz vicio/cracking!!