RAM extern in einem laufenden System auslesen durch Abfangen des Speicherbusses oder Austausch der RAM-Chips?

Ich frage mich, ob es möglich ist, ein Unterhaltungselektroniksystem (Fernseher, Telefon, eingebettetes Gerät usw.) so zu modifizieren, dass es möglich ist, den Inhalt seiner RAM-Chips zu lesen und möglicherweise zu schreiben, während das System läuft, ohne Software hinzuzufügen Zielgerät.

Ich bin mit Hardware nicht sehr vertraut, aber ich denke, eine Lösung könnte möglicherweise darin bestehen, etwas auf die Stifte des RAM-Chips zu löten, damit Signale abgefangen werden, und dann die Schreibvorgänge in einen internen RAM "zu wiederholen", wodurch effektiv eine synchronisierte Kopie erstellt wird des Geräte-RAM.

Der interne RAM könnte dann einen zweiten Port haben, der es dem Benutzer ermöglichen würde, ihn zu lesen, zum Beispiel über einen Controller, der eine USB-Massenspeicherschnittstelle freilegt.

Alternativ könnte der Controller ohne den zweiten Port vielleicht dem ursprünglichen Gerät Zugriff auf den internen RAM geben, wenn es schreibt, und stattdessen Lesevorgänge durch die Lesevorgänge ersetzen, die vom Benutzer ausgegeben werden, um den RAM zu untersuchen, wenn er liest.

Oder für DRAM-Chips, die vom Controller aufgefrischt werden, könnte er alle Zugriffe mit Ausnahme von Schreibvorgängen herausfiltern, die für die DRAM-Auffrischung verwendet werden (indem er eine Auffrischung erkennt und dann einen Timer verwendet), und dann die Prüfungslesevorgänge zu Zeiten bestehen, in denen keine DRAM-Auffrischung stattfindet.

Ein alternatives Design könnte darin bestehen, den RAM-Chip durch einen Dual-Port-RAM zu ersetzen und dann den ursprünglichen Port mit dem Zielgerät und den anderen Port mit dem Controller zu verbinden, um ihn lesen oder schreiben zu können.

Dieses letztere Design würde es auch ermöglichen, den RAM zusätzlich zum Lesen zu beschreiben.

Alternativ könnte man vielleicht versuchen, den Strom von RAM-Signalen in Software zu verarbeiten, anstatt ihn an einen RAM-Chip zu senden, aber es scheint, dass dies aufgrund der hohen Datenrate weitaus komplexer und teurer wäre (was möglicherweise eine Aufteilung des Stroms und eine Verarbeitung erfordert). es mit einem Cluster von Maschinen).

Genau genommen lauten die Fragen:

  1. Ist es überhaupt möglich?

  2. Ist dies auf kommerziell hergestellten Motherboards mit gelöteten RAM-Chips möglich, die in Unterhaltungselektronikgeräten zu finden sind?

  3. Gibt es handelsübliche Geräte, die das können?

  4. Wenn nicht, was wäre der billigste/einfachste Weg, eine einzelne Kopie eines solchen Geräts mit nur Leseunterstützung zu erstellen? Was ist mit Schreibunterstützung? (vorausgesetzt alles über das Zielgerät hinaus und ein normaler PC muss gekauft werden)

Dies ist eine allgemeine Frage zu SRAM-, DDR-, LPDDR-, GDDR-, Rambus- usw. Chips.

Viele Unterhaltungselektronikgeräte verwenden nicht einmal diskrete RAM-Chips.
Meinst du, dass sich CPU/SoC und RAM auf demselben Chip befinden? Ich frage nach denen, bei denen dies nicht der Fall ist und auf dem Motherboard einzelne RAM-Chips vorhanden sind.
Der hier verwendete Ansatz könnte von Interesse sein - scanlime.org/2009/09/dsi-ram-tracing . Wie ich es verstehe, schnüffelt sie auf der "Lese" -Seite den Speicherbus und kann daraus jederzeit (nicht unbedingt in Echtzeit) den RAM-Inhalt rekonstruieren, und auf der Schreibseite macht sie einen "Man in the Middle". Typ-Angriff durch Deaktivieren der Chipauswahl des RAMs, wenn Lesevorgänge von bestimmten Adressen gesehen werden, und dann Ansteuern des Busses auf den gewünschten Wert.
@IgnacioVazquez-Abrams - das wären im Allgemeinen nur die kleinsten Systeme. Alles, was Megabytes an Speicher benötigt, wird externes RAM verwenden, obwohl dies in einigen Fällen heute in einem Package-on-Package-Format vorliegen könnte.
Ein springendes Anliegen bei der Frage selbst wäre die Wahrscheinlichkeit eines On-Chip-Cache. Dies würde die Überwachung von Lesevorgängen etwas erschweren, aber die Ausführungsverfolgung und Datensubstitution sehr schwierig machen.

Antworten (1)

Ist es überhaupt möglich?

Nun, vielleicht ja.

Ist dies auf kommerziell hergestellten Motherboards mit gelöteten RAM-Chips möglich, die in Unterhaltungselektronikgeräten zu finden sind?

Definitiv nein. Es ist extrem schwierig, Drähte mit den Leitungen zwischen der CPU und dem RAM zu verbinden, ohne die Kommunikation zu stören. Je schneller der Bus ist, desto schwieriger ist dies. Das Ersetzen der RAM-Chips durch etwas (ein größeres FPGA + externes RAM würde wahrscheinlich ausreichen), das einen RAM-Chip für das modifizierte System "simuliert" und mit den Daten macht, was immer Sie wollen, ist wahrscheinlich viel praktikabler.

Gibt es handelsübliche Geräte, die das können?

Höchstwahrscheinlich nein.

Hätte das Ersetzen nicht den Nachteil, dass zusätzliche Latenz eingeführt wird, die möglicherweise ausreichen könnte, um den Speichercontroller aufzugeben, oder das Ziel-Timing-Verhalten auf andere Weise erkennbar verändert? Wenn das Anschließen von Drähten nicht machbar ist, wäre die Erkennung des durch Strom in einer Motherboard-Spur erzeugten Magnetfelds vielleicht machbarer? (Ich denke nicht, aber keine Ahnung)
@chippy: Es würde das Gerät im Allgemeinen nicht dazu bringen, "aufzugeben"; Von den meisten RAM-Geräten wird erwartet, dass sie Daten innerhalb einer bestimmten Zeitspanne nach Erhalt einer Anfrage geliefert haben, und es wird angenommen, dass sie gültige Daten an ihre Ausgangspins gesendet haben. Wenn es zu viel Latenz gibt, wird es nicht möglich sein. Wenn man andererseits 3 ns Latenz mit dem Abfangen hinzufügt, kann man möglicherweise einen RAM-Chip verwenden, der 3 ns schneller ist als der ursprünglich in der Schaltung, um dies zu kompensieren.
@chippy: Wenn Sie den "Ersatz" nahe genug an den Verbindungspunkten platzieren, können Sie die zusätzliche Latenzzeit recht gering machen. Wenige cms sollten keine Probleme bereiten (30cm = 1ns). Magnetfelderkennung im Bereich von mehreren 100 MHz klingt für mich nach einem sehr holprigen Weg.