|
(gracias al cps2shock
team por la info)
En primer lugar, que significa que este encriptado? Significa que
no se puede leer, por lo que no se peude emular, para ver como funciona
la encriptación simplemente mirad esto:
|
Dirección usada : $000174
|
| Valores encriptados |
Valores no encriptados |
| Valor |
Binary |
|
Valor |
Binary |
|
0001
0002
0004
0008
0010
0020
0040
0080
0100
0200
0400
0800
1000
2000
4000
8000 |
0000000000000001
0000000000000010
0000000000000100
0000000000001000
0000000000010000
0000000000100000
0000000001000000
0000000010000000
0000000100000000
0000001000000000
0000010000000000
0000100000000000
0001000000000000
0010000000000000
0100000000000000
1000000000000000 |
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1 |
B703
D512
A838
F704
2F4B
3830
B231
A796
EC26
39EE
F2C2
----
0721
----
----
---- |
1011011100000011
1101010100010010
1010100000111000
1111011100000100
0010111101001011
0011100000110000
1011001000110001
1010011110010110
1110110000100110
0011100111101110
1111001011000010
----------------
0000011100100001
----------------
----------------
----------------
|
8
7
6
8
9
5
7
9
8
10
8
-
5
-
-
- |
Como podeis observar, los datos unos
de otros se diferencian mucho, para cambiar de encriptado a desencriptado,
se necesitan dos cosas: el algoritmo y la clave. De la encriptación
kabuki, al saberse, no hacen falta las tablas xors, pero en esta si,
las tablas osn una simple operación matemática (+,-,*,:)
que hacen que de un 000 se pase a 101 por ejemplo.
vemos como la placa desencripta:
 |
01 |
S-RAM |
| 02 |
Conector serie |
| 03 |
Controlador principal desencriptador |
| 04 |
Procesador M 68000 |
| 05 |
Controladores logico programables |
| 06 |
Bateria de litio |
|
|
Y siguiendo el esquema se puede ver que la bateria de litio le da
corriente a los tres controladores logicos programables (clp) y al
controlador principal de desencriptación (tambien un clp).
El conector serie es usado para programar los clp para la desencriptación
pero si la bateria perdiese poder, esta información se perderia
y daría como resultado una placa muerta (no funciona porque
se ha perdido la información de desencripatción).
Bien , lo que creo que raz ha echo ha sido coger los datos encriptados,
los desencriptados despues de que salgan del chip de desenriptación
y al compararlos sacar las XORs. Para sacar las xors de cada juego
se necesitan aproximadamente una hora por 512k de información
desencriptada.
Des pues de un par de años de estudio, los chicos del cps2shock
han llegado a las siguientes conclusiones:
Solo las roms de programa estan encriptadas, las de sonido y graficos
no lo están.
- En las roms encriptadas, solo el
codigo del programa y los datos usando direcciones relativas de
PC estan encriptadas..
- Los vectores Stack Pointer y el Program
Counter son los que estan encriptados, el resto de la tabla de vectores
del 68000 no lo están.
- Los valores encriptados son calculados
fuera de la direccion donde están.
- la encriptación tarbaja con
valores de palabras, no con palabras largas o bytes.
- El procesador 68000 puede ejecutar
codigo normal no encriptado si este esta almacenado en la Ram del
sistema, no en la rom.
- El chip de encriptación se
apaga si no recive codigo cada 8 segundos. Este codigo cambia de
juego en juego.
- Las diferentes versiones de lenguaje
del mismo juego de cps2 usan una encriptación variable almacenada
en la placa B del juegos.
- Una nueva revisión de un juego
usa la misma encriptación variable almacenada en la placa
del juego como su predecesora.
Como podeis ver hay esta la clave de que necesiten todas las placas
y de que no lo pueden hacer por software (con las roms de internet).
Tambien se puede ver como raz es capaz de sacar revisiones de un mismo
juego sin necesidad de la placa original, ya que con un eeprom burner
es capaz de sustituir las roms de programa.
|