Ein Problem, das Sie haben, ist, dass Sie eine virtuelle Adresse zurückerhalten, nicht die physische Adresse, an der sich der Speicher befindet. Beim nächsten Booten wird die Zuordnung wahrscheinlich nicht dieselbe sein.
Dies kann definitiv innerhalb eines Kernel-Moduls unter Linux erfolgen, aber ich glaube nicht, dass es irgendeine Art von API im Userspace gibt, die Sie verwenden könnten.
Wenn Sie die Berechtigung haben ( und ich nehme an, Sie könnten auf diesem Computer root sein, wenn Sie ihn neu starten), können Sie unter /dev/mem nachsehen, um das tatsächliche physische Layout zu sehen. Vielleicht sollten Sie versuchen, Werte abzutasten, neu zu starten und zu sehen, wie viele dieser Werte bestehen bleiben.
Es gibt ein ähnliches Projekt, in dem ein Kaltstartangriff demonstriert wird. Der Quellcode ist verfügbar, vielleicht können Sie sich dort inspirieren lassen.
AFAIR lesen sie jedoch den Speicher aus, ohne zuerst ein Betriebssystem zu laden, und müssen daher nicht mit dem Speicherschutz des Betriebssystems herumspielen. Vielleicht sollten Sie dies auch versuchen, um zu vermeiden, dass der Speicher nach dem Booten vom Betriebssystem überschrieben oder gelöscht wird.
(Sehen Sie sich auch das Video auf der Website an, es ist ziemlich beeindruckend;)