¿Leer RAM externamente en un sistema en ejecución interceptando el bus de memoria o reemplazando los chips de RAM?

Me pregunto si es posible modificar un sistema electrónico de consumo (TV, teléfono, dispositivo integrado, etc.) para que sea posible leer y posiblemente escribir el contenido de sus chips RAM mientras el sistema está funcionando, sin agregar ningún software al dispositivo objetivo.

No estoy muy familiarizado con el hardware, pero supongo que una solución podría implicar soldar algo en los pines del chip RAM, para que las señales sean interceptadas y luego "reproducir" las escrituras en una RAM interna, creando efectivamente una copia sincronizada de la RAM del dispositivo.

La RAM interna podría tener un segundo puerto que permitiría al usuario leerla, por ejemplo, a través de un controlador que expone una interfaz de almacenamiento masivo USB.

Alternativamente, sin el segundo puerto, el controlador quizás podría dar acceso al dispositivo original a la RAM interna cuando está escribiendo y, en su lugar, reemplazar las lecturas con las lecturas emitidas por el usuario para examinar la RAM cuando está leyendo.

O para los chips DRAM actualizados por el controlador, podría filtrar todos los accesos, excepto las escrituras utilizadas para la actualización de DRAM (al detectar una actualización y luego usar un temporizador), y luego aprobar las lecturas de examen en momentos en que no se está realizando la actualización de DRAM.

Un diseño alternativo podría ser reemplazar el chip de RAM con una RAM de doble puerto y luego conectar el puerto original al dispositivo de destino y el otro puerto al controlador que permite leerlo o escribirlo.

Este último diseño también permitiría escribir la RAM además de leer.

Alternativamente, uno podría intentar procesar el flujo de señales de RAM en el software en lugar de enviarlo a un chip de RAM, pero parece que esto sería mucho más complejo y costoso debido a la alta velocidad de datos (que podría requerir dividir el flujo y procesar con un grupo de máquinas).

Precisamente, las preguntas son:

  1. ¿Es posible en absoluto?

  2. ¿Es factible hacer esto en placas base producidas comercialmente con chips de RAM soldados que se encuentran en dispositivos electrónicos de consumo?

  3. ¿Hay algún dispositivo estándar que pueda hacer esto?

  4. De no ser así, ¿cuál sería la forma más barata/sencilla de crear una copia única de un dispositivo de este tipo con solo soporte de lectura? ¿Qué pasa con el soporte de escritura? (asumiendo que todo más allá del dispositivo de destino y una PC normal tiene que ser comprado)

Esta es una pregunta general sobre chips SRAM, DDR, LPDDR, GDDR, Rambus, etc.

Una buena cantidad de dispositivos electrónicos de consumo ni siquiera usan chips de RAM discretos.
¿Quiere decir que la CPU/SoC y la RAM están en el mismo chip? Estoy preguntando sobre aquellos en los que este no es el caso, y hay chips de RAM individuales en la placa base.
El enfoque utilizado aquí puede ser de interés: scanlime.org/2009/09/dsi-ram-tracing . Según tengo entendido, en el lado de 'lectura', huele el bus de memoria y, a partir de eso, puede reconstruir el contenido de la RAM en cualquier momento (no necesariamente en tiempo real) y en el lado de escritura, hace un 'hombre en el medio' tipo de ataque al deshabilitar la selección de chip de RAM cuando se ven lecturas de ciertas direcciones y luego conducir el bus al valor que se desee.
@ IgnacioVazquez-Abrams: por lo general, solo serían los sistemas más pequeños. Cualquier cosa que necesite megabytes de memoria usará RAM externa, aunque en algunos casos hoy en día podría estar en un formato de paquete en paquete.
Una preocupación importante con la pregunta en sí sería la probabilidad de un caché en el chip. Esto complicaría un poco el monitoreo de las lecturas, pero haría que el seguimiento de la ejecución y la sustitución de datos fueran muy complicados.

Respuestas (1)

¿Es posible en absoluto?

Bueno, tal vez sí.

¿Es factible hacer esto en placas base producidas comercialmente con chips de RAM soldados que se encuentran en dispositivos electrónicos de consumo?

Definitivamente no. Conectar cables a las líneas entre la CPU y la RAM sin perturbar las comunicaciones es extremadamente difícil. Cuanto más rápido es el autobús, más difícil es esto. Reemplazar los chips de RAM con algo (una FPGA + RAM externa más grande probablemente sería suficiente) que "simule" un chip de RAM en el sistema modificado y haga lo que quiera con los datos es probablemente mucho más factible.

¿Hay algún dispositivo estándar que pueda hacer esto?

Lo más probable es que no.

¿El reemplazo no tendría la desventaja de introducir una latencia adicional, que posiblemente podría ser suficiente para hacer que el controlador de memoria se rindiera o alterar de manera detectable el comportamiento de tiempo del objetivo? Además, si la conexión de cables no es factible, ¿sería quizás más factible detectar el campo magnético generado por la corriente en una placa base? (Supongo que no, pero ni idea)
@chippy: por lo general, no haría que el dispositivo "se rindiera"; Se espera que la mayoría de los dispositivos RAM hayan proporcionado datos dentro de un cierto período de tiempo después de recibir una solicitud, y se supondrá que han colocado datos válidos en sus pines de salida. Si hay demasiada latencia, no podrá. Por otro lado, si uno agrega 3 ns de latencia con la intercepción, es posible que pueda usar un chip de RAM que sea 3 ns más rápido que el que estaba originalmente en el circuito para compensar.
@chippy: si coloca el "reemplazo" lo suficientemente cerca de los puntos de conexión, puede hacer que la latencia adicional sea bastante pequeña. Unos pocos cms no deberían causar problemas (30cm = 1ns). La detección de campos magnéticos en el rango de varios 100 MHz me parece un camino muy difícil.