¿Cómo un modchip anula señales específicas?

Leí un artículo sobre el esquema original de protección contra copia de PSX últimamente, y cómo se implementaron los modchips de esa época usando MCU PIC. Luego apareció esta pregunta y no he podido encontrar una respuesta satisfactoria en la red o entre colegas.

Por lo que sé y vi en los videos de YouTube, se instala un modchip en paralelo con las líneas IC que quiere anular. Por supuesto, las líneas específicas a las que está conectado el modchip ya están en uso por otro componente y no se cortan. En consecuencia, termina en una situación en la que dos circuitos integrados diferentes intentan conducir las mismas líneas.

En lógica CMOS, la señal será alta (VDD) o baja (GND). Lo que significa que si el modchip intenta inyectar algo o el IC original intenta hablar con el componente objetivo, entonces puede terminar provocando un cortocircuito o una situación en la que ambos componentes intenten llevar esa línea a un nivel alto.

Entonces, ¿cómo un modchip anula señales específicas, esencialmente diciéndole al componente objetivo "use mis señales y no las originales"?

Simplemente los impulsa más duro que el chip original.
@PlasmaHH Ese podría no ser el caso para algunos modchips. Sé que hay algunos que inyectan altos voltajes o corrientes en las líneas para forzar el apagado de otros dispositivos (como la forma habitual de sortear el chip de bloqueo de Famicom/NES)

Respuestas (1)

Esa es la parte inteligente de los modchips: generalmente usan una o una combinación de varias técnicas para lograr la función prevista sin necesidad de intentar anular una señal lógica CMOS. Exactamente por las razones que mencionas en tu pregunta.

Si fuera tan simple/fácil como anular las líneas CMOS, entonces sería totalmente trivial crear un modchip. Simplemente absorba los máximos y fuerce los mínimos cuando lo desee, y coloque cualquier cosa que desee en cualquier pin o bus a voluntad. Desafortunadamente, la mayoría de las salidas CMOS tienen una resistencia de 'encendido' de 50 Ω o 25 Ω, tanto para VCC como para GND, o solo para GND (dependiendo de si es una salida de drenaje abierto o push-pull o no). Los microcontroladores PIC y AVR, por ejemplo, tienen salidas push-pull de 25Ω. En el caso de los PIC, en realidad solo están clasificados para un máximo de ± 25 mA de sumidero o fuente en cualquier pin, y probablemente tengan una resistencia similar a la de otros pines de salida CMOS, anular una de las líneas requeriría conectar varios pines en paralelo. Todas estas son fallas que la mayoría de los chips CMOS puedentolerar si la condición es lo suficientemente breve, pero no hay expectativa de que el chip sobreviva a algo así si ocurre una y otra vez. Si excede las calificaciones máximas absolutas, entonces ha ingresado a un territorio donde el chip puede estar sufriendo daños. Incluso si funciona una vez, o funciona varias veces, podría estar destruyendo lentamente alguna capa de óxido o causando una inyección de portador caliente o una multitud de otros mecanismos de desgaste que eventualmente resultarán en la falla de ese pin IO.

Entonces, como diría Boromir, " no se anulan simplemente las señales CMOS " .

Las estrategias utilizadas suelen ser extremadamente específicas de cómo funciona la protección contra copias (o lo que sea), y a menudo los piratas informáticos pueden tardar mucho tiempo en encontrar una debilidad que pueda explotarse y que funcione sin anular las señales lógicas.

Hablemos de los modchips de PS1. La protección contra copia de PS1 funcionó al intentar leer una cadena corta de 4 caracteres de la sección más interna de un CD incrustado en el surco oscilante , conocido como código oscilante o simplemente datos de surco oscilante . Esto es básicamente información de seguimiento: es lo que le permite a un cabezal de lectura de CD saber dónde está en el disco, mantener una velocidad angular constante, ese tipo de cosas. En un CD de música, los datos de ritmo oscilante generalmente se leen en un canal secundario y contendrá la posición de tiempo para esa área en el CD. Aquí es donde se genera el tiempo HH:MM:SS en un reproductor de CD, leyéndolo realmente desde el CD.

El punto importante acerca de los datos de ritmo oscilante es que esto no era algo que pudiera 'grabarse' en un disco, sino que estaba incrustado en la estructura física del propio CD. De hecho, ya debe estar presente incluso para grabar un CD, y cuando compra CD-R, son discos que tienen datos de ranura oscilante prefabricados que ya están allí para que su grabadora de CD sepa dónde colocar realmente los hoyos en el disco cuando usted quémalo. En otras palabras, tenía que ser prensado en la fábrica real que producía los CD físicos.

Parece un medio de protección anticopia bastante infalible, ¿verdad? Bueno, había una debilidad crítica, y era la simplicidad de la protección en cada etapa posterior a la lectura real de los medios físicos.

Había algunas cadenas diferentes que la protección contra copia buscaba en estos datos de surco oscilante, y correspondían a diferentes regiones, lo que permitía la protección contra copia y región en un solo mecanismo. La cadena era 'SCEA' para la Región 1 (SCEA es simplemente una sigla de Sony Computer Entertainment America). Había otros, como SCEE (lo mismo pero para Europa), pero siempre que el controlador de la unidad encontrara esa cadena, la PS1 procedería a iniciar el disco.

Los datos del surco oscilante se transmiten como un flujo de bits en serie a medida que se lee un disco. Tiene una densidad mucho más baja que los datos reales grabados en el disco y, en el caso de la PS1, era una transmisión en serie de 250 bps. Bastante lento, más lento incluso que un módem de 300 baudios.

Más importante aún, tiene su propio subcanal dedicado, lo que significa que tendrá su propio bus y conjunto de líneas lógicas digitales en el hardware real. Esta fue una configuración muy típica y estándar utilizada con (y en su mayor parte, todavía lo creo) unidades de disco óptico. Es análogo a los datos de seguimiento en una cinta VHS.

Entonces, la CPU principal de PS1 recibió este flujo de bits del controlador de la unidad de disco en un subcanal específico, el subcanal Q en este caso, que tiene su propia línea CLK y DATA. Convenientemente, este era un bus bidireccional: la CPU también usaba esas mismas líneas CMOS para decirle al chip de la unidad de qué área del disco leer los datos del subcanal.

Entonces, ¿cómo realiza la inyección sin tener que anular ninguno de estos chips?

Haces trampa.

Los primeros modchips usaban un método bastante de fuerza bruta. De hecho, manipularon el transistor que controlaba el láser directamente. Esta ni siquiera es una solución digital, estaba operando en una parte analógica de todo esto.

Tendría una conexión a un pin que indicaba cuándo se había cerrado la puerta de la unidad de CD y se activaría con esta señal. Dado que cualquier transistor tendrá algún tipo de resistencia base en serie, esto hizo que sea una tarea muy simple de manipular sin causar cortocircuitos o corrientes altas.

Y, por razones de seguridad, había un transistor de 'activación de diodos' conectado con el sensor de la puerta que desactivaría por completo la conexión del controlador de CD a los diodos láser, apagándolos, asegurando que nadie pudiera estar expuesto accidentalmente al láser mientras la puerta estaba abierto.

Entonces, el chip mod aprovechó esto para apagar el diodo láser cuando normalmente debería estar encendido, lo que provocó que el controlador no leyera nada de los datos de oscilación de la pista interna, y sin que se amplificara la señal, el chip mod era libre de manipular la foto del cabezal de lectura. transistor directamente usando un pin digital. Movería el sensor de la unidad de CD ROM real de la manera correcta para leer la cadena de protección contra copia. Y en ese punto, dado que ha inyectado esto esencialmente en el punto final analógico físico real de toda la cadena de señal, todo a partir de ese punto es totalmente normal y nativo. Los datos reales se envían desde el controlador de la unidad de CD rom y son los datos correctos para un disco Sony PS1 real de la región correcta.

Una vez hecho esto, el modchip simplemente vuelve a habilitar el transistor de puerta LED y se reanuda el funcionamiento normal como si nada hubiera pasado.

Esta es solo una forma. Otro método que utilizaron los chips de modificación de PS1 fue puramente digital y simplemente explotó los tiempos. Detectaría la línea serial Q del subcanal que mencioné anteriormente, y un pin de entrada de alta impedancia puede detectar una línea CMOS sin ninguna interferencia real con su funcionamiento (al menos, normalmente), así que no se preocupe. Y dado lo lento que era el subcanal q, estaba dentro de las capacidades de un simple µC de 8 MHz.

Esperaría a que la CPU solicite los datos de protección contra copia en el subcanal Q, luego esperará un poco e inyectará el flujo de bits correcto como una respuesta falsa a la CPU en el bus serie del subcanal q. Claro, el chip de control de la unidad de CD todavía estaba allí, pero en realidad estaba ocupado moviendo el cabezal de lectura a su posición, encontrando el lugar correcto en el disco, dejando que la corrección de errores hiciera lo suyo. Todas estas tareas toman una eternidad en µC de tiempo. Diablos, toman un tiempo en las escalas de tiempo de las personas . Por lo tanto, estos modchips explotarían el tiempo para simplemente inyectar señales digitales cuando pudieran estar seguros de que no NECESITARÍAN anular nada más.

Si tiene curiosidad, puede ver exactamente cómo funcionaron ambos métodos aquí (activación de diodo láser) y aquí (inyección SUBQ) .

Otro método popular en una variedad de modchips consiste en activar un reinicio en algún chip, generalmente la CPU principal o algún tipo de chip controlador, o ambos, y nuevamente, explotar eso de alguna manera, ya sea para actuar como un impostor de un chip mientras el otro se desactiva temporalmente, o simplemente para aprovechar el tiempo de alguna manera que se abre. Es una apuesta segura que no tendrá que anular nada en la línea RESET de un chip, ya que nada le indicará que se reinicie (normalmente).

Y estoy seguro de que también hay docenas de otros trucos ingeniosos. Y seguirá habiendo otros nuevos creados por hackers inteligentes. No en nombre de la piratería, sino simplemente para ver si pueden, y aprender cómo funciona un dispositivo. Creo que normalmente las personas que lo resuelven simplemente se divierten con un rompecabezas. Al menos, por eso yo lo haría.

Eso fue muy informativo, ¡gracias! Había encontrado modchips PsNee y MM3, así como otros recursos, pero no había descubierto exactamente qué estaban haciendo. Si alguien quisiera leer algo más sobre PSX, aquí hay un buen enlace: oldcrows.net/mcc3.html