0.1.8 RAM β the desk
In one line: RAM is the working space where your computer keeps everything itβs currently using β and everything in there is in plaintext, until the power goes off.
A story β the magnetic donuts of the 1950s
The first practical computer memory wasnβt silicon. It was literally tiny ceramic donuts.
In the early 1950s, MIT professor Jay Forrester invented magnetic core memory. Each bit was a doughnut of ferrite ceramic about a millimetre wide, threaded with three wires. Pulse the wires one way, the donut magnetised βnorthβ = 1. Pulse the other way, βsouthβ = 0. To read a bit, you tried to flip it β if it changed, it was a 0; if not, a 1. Reading destroyed the bit, so you had to write it back immediately. Computers had whole rooms full of these things, hand-woven by women called βcore stringersβ β IBMβs primary supplier was textile mills.
In 1968 Intel started selling DRAM (Dynamic RAM) β silicon chips that did the same job a million times faster, at a tiny fraction of the size. Core memory was dead in a decade. But the name stuck β the operating system kernelβs memory image is still called a core dump, fifty years after the last ceramic donut was strung.
Whatβs actually going on
RAM (Random Access Memory) is the computerβs working memory β the desk surface. When you double-click a program:
- The OS reads the program file from storage (slow).
- It copies the programβs instructions and data into RAM (fast access from now on).
- The CPU executes from RAM, billions of times per second.
Itβs called βrandom accessβ because the CPU can jump to any byte directly β unlike a tape, where youβd have to spool through everything. Modern desktops typically have 16β64 GB. Servers run 256 GB to multiple TB.
RAM is volatile: the moment you cut power, every bit returns to garbage within seconds. Thatβs the trade-off you make for the speed.
DRAM works by storing each bit as charge in a tiny capacitor. The capacitor leaks charge over milliseconds, so the memory controller has to refresh every cell thousands of times per second β read and rewrite each row. That refresh cycle is also the basis for the Rowhammer family of attacks.
Why a hacker cares
RAM is the goldmine of forensic and offensive value because everything is in plaintext while the program is running:
- Decrypted documents β the disk file may be encrypted, but the open document in your editor lives unencrypted in RAM.
- Encryption keys β your VeraCrypt, BitLocker, full-disk-encryption keys all sit in RAM while youβre logged in. Cold-boot attacks chill the RAM with cooling spray (slowing the leak) and dump it before it forgets.
- Passwords β typed credentials, browser-stored cookies, session tokens, OAuth bearer tokens β all of them touch RAM in plaintext.
- Live malware β RAM-resident malware that never writes to disk. Antivirus that only scans files misses it. This is fileless malware and itβs a major modern threat.
For defenders, memory forensics (tools like Volatility, Rekall) is its own specialty. Triage an incident, dump RAM first, then image the disk β because RAM tells you what was running, while the disk only tells you whatβs stored.
For offence, Rowhammer, Meltdown, and DMA attacks (Direct Memory Access from a malicious USB or Thunderbolt device) all let attackers read or modify RAM they shouldnβt be able to touch.
In one sketch
ββββββββββ RAM stick (DIMM) ββββββββββ
β ββββββββββββββββββββββββββββββββ β
β β DRAM chips (8 or 16 of them) β β
β ββββββββββββββββββββββββββββββββ β
β ββββββββββββββββββββββββββββββββ β β gold contacts
ββββββββββββββββββββββββββββββββββββββ
β slots into motherboard
What's inside RAM right now:
ββββββββββββββββββββββββββββββββββββ
β Linux kernel β
β Browser process β 3 GB β
β Spotify β 800 MB β
β VS Code β 1.2 GB β
β Claude desktop β 600 MB β
β ... encryption keys ... β β everything in plaintext
β ... OAuth tokens ... β
β ... your typed password ... β
ββββββββββββββββββββββββββββββββββββ
Reference and image credit
- RAM_Module_(SDRAM-DDR4).jpg β ElooKoN, CC BY-SA 4.0.
Memory peg
RAM is the desk. Fast, volatile, plaintext. Pull the plug β it forgets. Read it while itβs running β you read everything.