RAM is volatile memory used while programs run. A memory image is a copy acquired by a particular method at a particular time. Acquisition means obtaining that copy; the method, time, system and any missing regions affect what later analysis can establish.
Volatility analyzes memory samples to recover artifacts of runtime state. A plugin is a tool component for a particular analysis; it needs compatible input and supporting format/symbol information. The lesson uses a typed three-row process model, not a memory image, so no installation or large dump is required.
Before you begin
- Recommended first
- Hex, Base64, and XOR in code, Encoding, hashing, and encryption, Notes: scope, command, result, time, Logs as evidence
- Estimated time
- 18 min reading, 16 min activity. Setup and optional practice may take longer.
- Where you work
- Read the supplied byte tables and authored records in any browser, with paper or a text editor. Preserve original files; inspect copies in any later lab. No scanner, image decoder, capture, memory acquisition or installation is required. Practical tool work remains separate from this reading activity.
- Without a lab
- All evidence needed for the activity appears on this page. Copy it into notes if downloads are unavailable. Read the labeled model and predict each result; a paper trace practises the reasoning while tool operation waits for a lab. Reading needs no JavaScript. Answer checking needs JavaScript and a secure context; saving progress also needs usable browser storage.
After this lesson you can:
- Find the name beside PID 422 in the model.
- State the acquisition time and that the table was typed.
- Limit the model to process rows present at that time.
01Example
Fresh snapshot example, separate from the supplied three-process activity.
Authored state at 08:00 UTC:
PID 90: ledger-reader
At 08:05 the process may have ended or changed.
The 08:00 row supports a claim about that modeled capture time.
It is not a complete record of all earlier activity.02A snapshot holds what was captured
A PID is a process identifier assigned by a system. It identifies a process in its relevant context and time; numbers can be reused later. Read acquisition context before copying a process name.
A process that ended before acquisition or started afterward may not be represented. Capturing memory can be incomplete, and runtime state is not automatically a complete event history. Keep the model’s three names and acquisition time distinct from a real memory-reader result.
Read captured process state as a time-bounded snapshot and state what a small model cannot establish.Model. A teaching model drawn by hand. It shows the idea, not real tool output.
Read the full explanation below.
08:00 UTC contains the authored PID 90 ledger-reader row.
Authored 08:00 UTC snapshot
08:05 state
A snapshot supports time-bounded state, not complete history; this is authored state, not memory acquisition.
08:00 UTC contains the authored PID 90 ledger-reader row.
Follow the explanation
- 08:00 UTC contains the authored PID 90 ledger-reader row.
- 08:05 may differ; the earlier snapshot remains unchanged.
Read every state and value
1. 08:00 UTC contains the authored PID 90 ledger-reader row.
- Example
- Supplied capture-time model
- Items
- Value: PID 90: ledger-reader; Status: authored snapshot · Value: unknown; Status: not captured
- Active Item
- pid
- Event Label
- 08:00 UTC contains the authored PID 90 ledger-reader row.
- Visible Limit
- A snapshot supports time-bounded state, not complete history; this is authored state, not memory acquisition.
2. 08:05 may differ; the earlier snapshot remains unchanged.
- Example
- Supplied capture-time model
- Items
- Value: PID 90: ledger-reader; Status: 08:00 only · Value: unknown: may have ended or changed; Status: not captured
- Active Item
- current
- Event Label
- 08:05 may differ; the earlier snapshot remains unchanged.
- Visible Limit
- A snapshot supports time-bounded state, not complete history; this is authored state, not memory acquisition.
03Find PID 422
Use the printed table acquired in the story at 10:00 UTC on 2026-04-02. The method line explicitly says typed table.
Label: small process-state model. Not a memory image. Not Volatility output.
Acquisition time on the card: 10:00 UTC, 2026-04-02.
Method: typed table. No RAM was copied.
PID 410 name note-reader
PID 422 name lamp-index
PID 438 name clock
The table lists three names present in the model at 10:00.
It does not list earlier logins. It does not list processes that had already ended.
- Find PID 422 and copy its name, lamp-index, together with the modeled acquisition time.
- Compare PID 410, note-reader, to show why the identifier is needed rather than just a name guessed from the example.
- Write a bounded claim about the listed process state. Add the limit that neither ended processes nor a complete login history is provided.
- Stop after the three-part note: source/method, supported state and limit. Do not acquire RAM or download a public dump.
04Module case
For about fifteen minutes, complete the seven-row module case. For each artifact, identify source/method, one supported observation and one unperformed confirmation. The rows connect signatures, tags, offsets, a text chunk, a typed HTTP body, logs and process state. Preserve the distinction between an original artifact, an authored model and a historical tool record.
Label: ungraded Forensics and steganography module case.
About fifteen minutes. Use the supplied packet and keep the reasoning in notes.
Write one provenance line, one supported clue, and one limit for each row.
1. benign-note.txt is named like a text note. Offset 0 is the PNG signature.
Supported clue: the leading bytes. Limit: a decoder has not confirmed the image.
2. metadata-table.txt Comment is spare cable. The JPEG file does not hold that tag.
Supported clue: the card's Comment line. Limit: the DateTime line has no zone and was typed.
3. combined.bin places the PNG signature at offset 5 after NOTE and a line feed.
Supported clue: the author offset. Limit: scan.txt is not a binwalk transcript.
4. owned-carrier.png contains a tEXt Comment, night lamp, because this lesson put it there.
Supported clue: that chunk. Limit: other hiding methods were not inspected.
5. stream.txt activity body is ribbon. No capture file exists.
Supported clue: the typed body. Limit: an encrypted payload without secrets is a different card.
6. On 2026-04-02 UTC, access R-19 is 11:00:09 and the auth ok for R-19 is 11:00:12.
Supported clue: the order of those two stamps. Limit: the account label is not a person.
7. The memory model at 10:00 lists PID 422 as lamp-index.
Supported clue: that row. Limit: the table is not every past login.
Stop when the seven limit lines are written. Do not acquire a real image, log, or capture.
05Optional challenge
Spend about ten optional minutes drafting an acquisition form with system, time and timezone, method/tool, original-copy location and known gaps. Leave unobserved fields unknown. This is a planning exercise; it does not authorize copying memory that may contain secrets.
06Fresh cases for the checks
Use these fictional cases for the checks below. They have different inputs from the worked examples. Read them here or make notes; no installation or external service is needed.
Snapshot card A: independent typed process modelOwned fixture. An original file made for this course. Follow the activity's instructions in your own lab.
Acquisition time in the story: 2026-06-08 14:30 UTC.
Method: typed table; no RAM acquisition or memory tool output.
PID 610 name note-viewer
PID 627 name map-reader
PID 645 name timer
These are modeled rows at the stated time. No earlier process list or login history is supplied.
Two-snapshot card B: separate same-system modelOwned fixture. An original file made for this course. Follow the activity's instructions in your own lab.
Snapshot B1 at 15:00 UTC lists PID 710 worker.
Snapshot B2 at 15:10 UTC does not list PID 710.
Both are typed partial state tables. No intervening events or complete acquisition coverage are provided.
07Explain the evidence and its limit
Optional self-check: draft a snapshot evidence note with system context, acquisition time/zone, source method, PID/name and known gaps.
Review it: distinguish a typed model from a memory image, keep PID meaning tied to time and avoid complete-history or verified-person claims.
08Common mistakes
If a PID seems permanent, attach the capture context and time; the same number can be reused later.
If three process rows become every past login, identify the evidence needed for a complete history and leave it unclaimed.
If the model is called Volatility output, retain its method line: these rows were typed, with no RAM acquisition or plugin run.
References
- Volatility 3 README
Official Volatility background describes recovering runtime artifacts from memory samples; no plugin run is required.
- Volatility 3 documentation
Official Volatility background describes recovering runtime artifacts from memory samples; no plugin run is required.