Tutorial para relinkar una ISO by Locky

Relinkar ISO’s ya no es un secreto

• Que es lo que queremos hacer?

Habréis visto en más de una ocasión una release por ahí que os cabe en un CD y cuando vais a mirar su tamaño resulta que ocupa 1Gb o más. Es evidente que no es posible ya que el medio físico tiene un tope pero el medio lógico… NO ;)
SÓLO sirve para relinkar videos o archivos de sonido que varían en el idioma pero son de un tamaño IDÉNTICO.

• Que necesitamos?

- Los archivos de la release que queramos (evidente).
- HexWorkShop (o cualquier otro editor hexadecimal)
- Calculadora (de serie con Window$), en modo científico.
- Opcionalmente ISOBuster, CDMage o Daemon-Tools para comprobar los resultados.

• Empecemos

Para seguir este tutorial voy a poner un ejemplo con unos cuantos archivos del Jack & Daxter* ya que he visto que os traía de cabeza.

Usaré sólo los archivos de la raíz (menos el de 30Mb – Z6TAIL.DUP) y la famosa carpeta VAG.

Reemplazamos todos los archivos VAG que no queramos y nos quedamos con el que queremos, para eso creamos un documento txt nuevo (vacío) de 0bytes y lo renombramos al nombre de archivo que va a sustituir.

Por ejemplo, en mi caso: VAGWAD.SPA es el que mantenemos y todos los demás (.FRE, .GER, etc.) los borramos y creamos un dummy sin peso.

Imagen

Ahora montamos nuestro CD de la manera habitual, con el CD/DVD Gen y después el iml2iso. En este caso conservad el archivo .iml pq va a ser fundamental (tb se puede mirar de otra forma pero es tontería...).

Por ejemplo, mi .iml queda de la forma (solo la parte del final):
[LOC]
# the number of entries: 11
#Start End Mode Fno Path
0 23 2.1 0 "PRUEBA.ims"
24 24 2.1 0 "C:\PRUEBA\SYSTEM.CNF"
25 284 2.1 0 "C:\PRUEBA\SCES_503.61"
285 285 2.1 0 "C:\PRUEBA\DISK_ID.DIZ"
286 291 2.1 0 "C:\PRUEBA\VAG\VAGDIR.AYB"
292 292 2.1 0 "C:\PRUEBA\VAG\VAGWAD.ENG"
293 293 2.1 0 "C:\PRUEBA\VAG\VAGWAD.FRE"
294 294 2.1 0 "C:\PRUEBA\VAG\VAGWAD.GER"
295 295 2.1 0 "C:\PRUEBA\VAG\VAGWAD.ITA"
296 296 2.1 0 "C:\PRUEBA\VAG\VAGWAD.JAP"
297 85228 2.1 0 "C:\PRUEBA\VAG\VAGWAD.SPA"
[/LOC]

Como veis, los otros idiomas solo ocupan 1 sector. De lo que se trata es de engañar a los lectores para que cuando llamen a esos archivos se vaya a leer el español.
• Manos a la obra:

Configuración del HexWorkShop: Puesto que el archivo que vamos a abrir y modificar es bastante grande (es un coñazo estar esperando a que se hagan copias de 650-900Mb) lo vamos a configurar para acceso directo al archivo. “Options -> Preferences -> Configuration” Marcar la casilla “Enable Direct File Editing”.
Después de crear el ISO lo abrimos con el HexWorkShop y buscamos el archivo que queremos relinkar. El nombre del archivo estará próximo al inicio del ISO ya que ahí es donde se guarda la TOC del CD. Veamos:

Imagen

Una vez lo encontréis mirad en el .iml la lba del archivo en cuestión.
Como veis, en el caso de este la lba es 292. Metemos el número en la calculadora, lo pasamos a hexa y obtenemos… 124!!.
Que es el numerajo que está marcado en rojo. Bueno, deberíais saber que en hexadecimal se suele trabajar con un numero par de dígitos (razón: un byte -> 2 números hexa). Así que en realidad es el 0124.
Si ahora cogeis esos bytes y los invertís tenemos… 2401!!! Que es lo que está marcado en amarillo. Con lo que ya os podéis imaginar lo que significa, estas son las marcas de inicio del archivo.

• Y aquí empieza el trapicheo

Por que archivo lo queremos reemplazar? Por el .SPA, no? Pues miremos el lba del .SPA.
LBA 297 -> HEXA 0129
Ahora reemplazamos el 0124 por el 0129 y el 2401 por el 2901, fácil no?
Eso hay que hacerlo con todos los archivos que queremos relinkar. En este caso es muy fácil pq son consecutivos, si no lo fueran habría que hacer más cálculos. Os dejo los datos por si a alguien le interesa:
VAGWAD.ENG LBA 292 HEXA 0124 INVERTIDO 2401
VAGWAD.FRE LBA 293 HEXA 0125 INVERTIDO 2501
VAGWAD.GER LBA 294 HEXA 0126 INVERTIDO 2601
VAGWAD.ITA LBA 295 HEXA 0127 INVERTIDO 2701
VAGWAD.JAP LBA 296 HEXA 0128 INVERTIDO 2801

Como ya he dicho, reemplazar estos valores por el 0129 y el 2901 cuando corresponda.

Más de uno podría pensar que ya hemos acabado pero, por desgracia, nada más lejos de la realidad. Mirad lo que sale en ISOBuster:

Imagen

Fijaos que ahora todos tienen el mismo LBA pero solo el español ocupa espacio. Alguna idea? Pues SI, sigamos.

• Seguimos con los trapicheos:

Vamos a fijarnos en el tamaño del archivo que tenemos:
VAGWAD.SPA -> 173.940.736 bytes
Metemos el número en la calculadora, pasamos a hexadecimal… y que nos da?
0A 5E 20 00 y si miramos esta foto en la parte del archivo sabríais verlo?

Imagen

Y al igual que antes, tenemos el mismo string pero invertido (de big endian a little endian)
0A 5E 20 00 -> 00 20 5E 0A
Pues ya sabéis de lo que se trata, repetir esos strings en la misma posición para cada archivo que queremos relinkar. Más o menos así:

Imagen

Fijaos que el string siempre viene después del string que marca la lba del archivo. La explicación es sencilla: Place+Offset (o de otra forma: situación + desplazamiento).
Como curiosidad os diré que si solo cambiáis el string normal (sin cambiar el invertido) el ISOBuster se lo traga (marca todo correcto, como queremos) pero ni daemon ni cdrwin ni nero se lo tragan, siguen marcando los otros archivos a 0.
• Y para acabar:

Una vez hecho esto tenemos esto:

Imagen

Que es lo que pretendíamos, no?
Lo he comprobado con el daemon y me da las medidas correctas y me extrae los archivos correctamente, o sea, por duplicado. Si copio el vagwad.spa y el vagwad.ger obtengo dos archivos idénticos (como es lógico), así que en una iso de poco más de 166Mb Window$ (o mi lector) creen que tienen 995Mb (no es bonito? XD).

* Por dios, que alguien me pase un ripkit que tire para este juego SCES_503.61!!! (Jack & Daxter PAL).
Otra cosa!, como pasar una iso modo1 de 865Mb a modo2-XA? Mi iso de ICO (completa) ocupa esto, al cdrwin no le gusta (me peta los CD’s) y el nero me los graba a modo1.

** NOTA: Hice esto esta tarde, día de la constitución, en un momento de aburrimiento letal y sin ganas de estudiar.
Tiempo estimado de razonamiento… 3/4hora más o menos.

*** NOTA2: No lo he probado en la consola pq no tengo el maldito parche para este juego aunque apostaría que funciona (si alguien se atreve… que postee). NO me hago responsable de cualquier explosión, o degollamiento (al salir escupido el fakeCD) que se produzca en vuestra consola (o PC, tanto da).
Pq demonios no se me ven las imagenes?
Si algún moderador pasa por aki y encuentra interesante este post que me modifique los links para que salgan please!

Las direcciones que salen haciendo click con el boton de la derecha propiedades son válidas.

(manda webos, yo relinkando files y no saber hacer el link bien para el tutorial :D:D:D:D).

Gracias.

*** ME EDITO PARA DECIR: ya he sabido solucionar el problema con las imagenes. Bufff... que alivio.

Me voy a [maszz] [maszz] [maszz] [maszz] [maszz]

Salu2!.
Después de unas cuantas pruebas...

Decir que sirve para relinkar lo que querais aunque no sean del mismo tamaño.
A menos que el juego lleve implementada la rutina del control de tamaño de los archivos se los tragará tal como mande la TOC.

Por ejemplo, el BurnOut (con el que he estado haciendo pruebas):

Relinko los archivos de creditos a los de inicio N y P (con cada correspondencia Pal i Ntsc) y funciona.
Relinko los files AC3 de la carpeta unos con otros (he dejado 2 tracks) y tb funciona.
Total, que el CD1 (fordward 1 player) me ocupa 995Mb i la iso es de 685Mb aprox.

Espero que a partir de aki la gente se anime a relinkar y deje de meter archivos inutiles o videos de 1Mb cuando pueden meter un archivo de 0bytes y luego hacer leer lo que te de la gana XD.

Salu2 y espero que os sea útil!

PD: si hay cualquier duda no dudeis en postearla.
Esta vez mi pregunta era si se podría modificar también esas bin+cue’s que circulan por ahí (eso me han dixo XD).
Así que me he ripeado mi GTA3, y me he hecho mis modificaciones. La verdad es que me ha quedado muy currao, prácticamente me ha quedado un tamaño como el del original (2’35Gb) en un CD de 90. Sólo he quitado la emisora de clásica y la he relinkado a otra. Los otros archivos que molestaban (GTA3_n.IMG, SFX60_n.RAW) los hice dummy’s(de 0bytes) y después modifiqué la ISO como expliqué arriba para que no quedasen colgados. Como ya se vió, en este juego estos archivos eran IDÉNTICOS entre si, con lo que no se pierde nada.
Alguien podría decir “pero si eso ya se hizo modificando el SLES!”. Si, y que? No puedo hacer pruebas? Además, así queda el juego más fiel al original.
También downsampleé los videos (a 1200, no hay que pasarse) y relinké el INTROPAF al INTROPAL (o al revés, no me acuerdo y no hay manera de descubrirlo por el momento XD).

Bueno, después del rollo, las fotos:
Así quedó mi GTA3:

Imagen
Carpeta de los videos…

Imagen
Carpeta donde están/estaban los GTA3_n.IMG…

Imagen
El audio SFX60_n.RAW (comprobado con el HexWorkShop que eran idénticos)

Y por último lo que entiende Windows de este CD:
Imagen

Y a lo que íbamos, después de quemar mi ISO y comprobar que r0olaba perfectamente hice mi bin+cue con CDRWin y ahora abrimos el bin con hexworkshop y le miramos las tripas…

• Antes los datos:
INTROPAL/F: LBA-2376, SIZE: 29097988
GTA3_n.IMG: LBA-129645, SIZE: 122044416
SFX60_n.RAW: LBA: 117591, SIZE: 24686592

• Que en hexadecimal son (lba y tamaño respectivamente):
INTROPAL/F: 09 48 – 01 BC 00 04
GTA3_n.IMG: 01 FA 6D – 07 46 40 00
SFX60_n.RAW: 01 CB 57 – 01 78 B0 00

• Junto con su inverso, tal como expliqué en el tocho anterior queda que los strings que buscamos son:
INTROPAL/F: 48 09|00 00|00 00|09 48|04 00|BC 01|01 BC|00 04
GTA3_n.IMG: 6D FA|01 00|00 01|FA 6D|00 40|46 07|07 46|40 00
SFX60_n.RAW: 57 CB|01 00|00 01|CB 57|00 B0|78 01|01 78|B0 00

O al menos eso debería ser en las ISO’s normales y corrientes. Como veis, todo lo que hay que reemplazar es siempre lo mismo y es un string de 16bytes con la misma configuración: 4bytes (lba invertido) + 4bytes (lba normal) + 4bytes (tamaño invertido) + 4bytes (tamaño normal). Y como norma entre este string y el normbre del archivo siempre hay 15bytes de por medio que aún no tengo muy claro lo que definen (supongo que fecha y hora de creación del archivo).

Así que busquemos dentro de esta imagen Modo2-2352 (recordemos que la de antes era Modo1-2048) y esto es lo que vemos:

Imagen

Imagen

Imagen

Por lo que podéis apreciar en las imágenes, la estructura es exactamente igual en los dos casos (modo1-2048 y modo2-2352) con lo que las modificaciones son sencillísimas.
Como podéis ver en las fotos, lo remarcado en negro son los strings modificados por mi cuando tenia la ISO, lo subrayado en rojo corresponde a la parte del nombre y lo subrayado en verde son los 15bytes por determinar, luego me pondré a ello.

Dicho esto espero que a alguien le interese, pq después de 150 visitas al hilo nadie ha comentado nada ni ha preguntado nada así que entiendo que o soy un hacha explicando o esto es una mierda que solo le interesa al nene.

Yo por mi parte seguiré con mis investigaciones y a ver si aprendo a hacer mis rips (que no kits), cada vez más tengo la impresión de que aquí la gente viene a lo que viene y pasa de aprender nada (y mira que llevo poco tiempo visitando el foro). Luego todo son presiones y cuidado no la cagues si no quieres que te crucifiquen (va x Daroqui).

Sin más,

Salu2.

Locky.

PD: Siento el lenguaje ofensivo del final pero es que después de leer el hilo de abandono de un miembro de EOL (ojo, sea quien sea), me ha entrado la rabia...
Weno, posiblemente sea lo ultimo que postee en el hilo asi que, ante todo, espero que os haya sido útil y que hayais aprendido tanto como yo.

· Efectivamente,
Los 15 bytes que no sabía lo que significaban, son exactamente lo que sospechaba antes. Fecha y hora de creación de los archivos (eso que nos permite modificar el Nero).
El formato exacto que usa no me he parado a pensarlo pero tpc creo que sea muy trascendente.

· Modificación,
Algo que he aprendido (gracias, en parte, a la release del BO2 de Keith) es que NO hace falta modificar toda la ISO.
Resulta que el IML2ISO lo unico que hace es "copy&paste" de los archivos que le indica el iml. Si os fijais, entre ellos está el ____.IMS justo en la cabecera de todos los archivos. Pq? Muy facil, pq en realidad contiene la TOC del CD.
Asi que con editar el IMS es suficiente, después, al hacer IML2ISO ___.IML ___.IMS, pilla los archivos que le dijimos y ya con la TOC modificada desde un principio.

Tengo que decir que este sistema no me acaba de convencer ya que para ver si estás haciendo bien los cambios tienes que ir montando la ISO cada 2x3, en cambio, modificando directamente de la ISO lo puedes ir controlando con alguno de los programas que puse arriba.

Por mi parte, creo que esto es todo.

Salu2,

Locky.
Y visto que nadie me rectifica, lo digo yo.

CUANDO SE HACE UNA MODIFICACIÓN DIRECTAMENTE AL IMS, NO HACE FALTA CONSTRUIR LA ISO.

Basta con que la cargueis en el ISOBUSTER y ya podreis ir siguiendo las modificaciones que haceis.

Salu2.
Tengo una curiosidad, tu no sabras q son los bytes q hay desde el final del nombre de un file hasta la posicion lba del siguiente, verdad? Y sabes (tu o alguien) donde puedo encontrar informacion sobre la estructura de una ISO9660?

Gracias y espero q me puedas solucionar alguna de mis dudas.

PD: aunq nadie te escriba ningun post aki, seguro q ,cada dia mas, la gente va entrando a leerlo, xq esta muy bien el thread ;)
Que seria de nosotros sin el google...

Mira a ver si te sirven esta que es la que he visto más completa, si no prueba alguna otra...
http://www.mactech.com/articles/develop/issue_03/high_sierra.html

Lo que significan los bytes de por ahi en medio.. no estoy seguro pero diria que es un simple padding para que toda la estructura sea uniforme. No me hagas mucho caso, cuando llegue a casa lo intento mirar con más detalle.

Salu2.
ya no hace falta q mires los bytes esos q te decia, ya te los digo yo.

Los 6 primeros son 0's para rellenar (supongo q es x si amplian la normativa ISO9660)
El siguiente es la longitud del nombre del file en question (30h = 0 a partir de ahi suma, y siempre es un numero par, de modo q si la longitud no lo es, simplemente añade un 0 de relleno del final)
Y luego otro 0 de relleno.

Los anteriores al UXA:

Los 5 primeros son 0's de relleno
El sexto y ultimo solo varia en funcion de si es File (0Dh) o Dir (8Dh)

Nota: El ;1 se cuenta como tamaño del file, lo unico esq solo estará presente si es un File.

Espero seros de ayuda. XD

Saludosss
Hola a tod@s..

Los h*j*s de p*t* de galeon me han borrado todos los ficheros de la cuenta sin avisar, entre otras cosas tenia las imagenes que forman parte de este 'pseudotutorial', imagenes de las que no dispongo [reojillo]

Alguien las tiene por su disco duro y me las puede pasar???? (o colgar en algun espacio web).

En fin, a ver si hay suerte y gracias por anticipado.

Salu2!.
Yo las tenia en un documento doc te cuelgo el documento. Si quieres que te cuelgue las imagenes tienes que esperarte a que tenga mas tiempo.
La dir es: relinkar_iso.doc

PD: Muy buen trabajo.
amon-ra, muchas gracias ;)

Del documento ya puedo extraer las imagenes (aunque pierdan algo de calidad por lo menos se entiende lo que pone).

Lo dicho, muchas gracias por pasarmelo y sobretodo por interesarte y guardartelo [looco] (mira que no tener yo una copia de mis propios archivos.. [tomaaa] )

Alguien sabe de algun alojamiento donde no me vayan a hacer lo que me han hecho los de galeon?

Salu2!.
Y para k todo este barullo cuando el Apache2 t relinka la iso o los arxios no se?
[chiu] salu2 [chiu]
Pos ni flowers, el que lo quiera hacer manual que lo haga o por lo menos si a alguien le interesa qué es lo que hace el programa en cuestion pues que pueda entenderlo (mas o menos facilmente).

Ten en cuenta la fecha del tutorial (2002), posiblemente ese programa que tu mencionas no existia. Que yo sepa solo habia uno y era bastante castaña (o que nunca aprendí a usarlo XD).

Salu2!.
15 respuestas