Skip to content

Commit 090ccae

Browse files
h4x0rclaude
andcommitted
docs: reorder CLI examples to flags-before-dump style
clap v4 already accepts flags in any position relative to positionals. Update all README and --help examples to the cleaner `memf SUBCMD --flags DUMP` convention so the dump path reads as the object of the subcommand rather than a positional noise prefix. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 874df72 commit 090ccae

2 files changed

Lines changed: 50 additions & 50 deletions

File tree

README.md

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
cargo install memory-forensic
1616

1717
# Linux — supply an ISF symbol file
18-
memf ps memdump.lime --symbols linux.json --tree
18+
memf ps --symbols linux.json --tree memdump.lime
1919

2020
# Windows — no symbol file needed, PDB auto-downloaded from msdl.microsoft.com
21-
memf ps win10.dmp --tree
21+
memf ps --tree win10.dmp
2222
```
2323

2424
> **Windows auto-profile:** `memory-forensic` scans physical pages for the ntoskrnl PE, extracts its PDB GUID via the CodeView debug directory, fetches the exact matching PDB from Microsoft's public symbol server, and parses struct layouts at runtime — all without any pre-staged symbol file. Works for every Windows build automatically.
@@ -51,37 +51,37 @@ cargo build --release
5151
memf info memdump.dmp
5252

5353
# Process tree with threads and DLLs
54-
memf ps memdump.dmp --symbols ntkrnlmp.json --tree --threads --dlls
54+
memf ps --symbols ntkrnlmp.json --tree --threads --dlls memdump.dmp
5555

5656
# Network connections (json / csv / table)
57-
memf net memdump.dmp --symbols ntkrnlmp.json --output json
57+
memf net --symbols ntkrnlmp.json --output json memdump.dmp
5858

5959
# Kernel integrity checks (SSDT, IDT, callbacks, hooks)
60-
memf check memdump.dmp --symbols ntkrnlmp.json --ssdt --callbacks
60+
memf check --symbols ntkrnlmp.json --ssdt --callbacks memdump.dmp
6161

6262
# Linux syscall hook and malfind scan
63-
memf check memdump.lime --symbols linux.json --hooks --malfind
63+
memf check --symbols linux.json --hooks --malfind memdump.lime
6464

6565
# String extraction with YARA rules
66-
memf strings memdump.dmp --rules ./yara-rules/ --min-length 8
66+
memf strings --rules ./yara-rules/ --min-length 8 memdump.dmp
6767

6868
# Hash lookup against NSRL (known-good) and MalwareBazaar (known-bad)
69-
memf hash memdump.dmp --lookup
69+
memf hash --lookup memdump.dmp
7070

7171
# Extract framebuffer screenshot from live memory dump
72-
memf framebuf memdump.dmp --symbols linux.json --png screen.png
72+
memf framebuf --symbols linux.json --png screen.png memdump.dmp
7373

7474
# Recover files from tmpfs mounts + detect memfd fileless ELF execution
75-
memf check memdump.lime --symbols linux.json --tmpfs-recovery --memfd
75+
memf check --symbols linux.json --tmpfs-recovery --memfd memdump.lime
7676

7777
# Detect EDR bypass: direct syscalls, ETW patching, AMSI/DSE bypass
78-
memf check memdump.dmp --symbols ntkrnlmp.json --direct-syscalls --etw-patch --amsi-bypass
78+
memf check --symbols ntkrnlmp.json --direct-syscalls --etw-patch --amsi-bypass memdump.dmp
7979

8080
# Novel kernel interface abuse: io_uring, netfilter hooks, perf_event
81-
memf check memdump.lime --symbols linux.json --io-uring --netfilter --perf-event
81+
memf check --symbols linux.json --io-uring --netfilter --perf-event memdump.lime
8282

8383
# Cross-artifact ATT&CK correlation across all walkers
84-
memf correlate memdump.dmp --symbols ntkrnlmp.json --output json
84+
memf correlate --symbols ntkrnlmp.json --output json memdump.dmp
8585
```
8686

8787
Symbol files are ISF JSON, compatible with Volatility 3 symbol packs.
@@ -92,7 +92,7 @@ Symbol files are ISF JSON, compatible with Volatility 3 symbol packs.
9292

9393
```bash
9494
# SSDT, IDT, ftrace, LSM, and kernel callback checks in one pass
95-
memf check memdump.lime --symbols linux.json --hooks --idt --syscalls
95+
memf check --symbols linux.json --hooks --idt --syscalls memdump.lime
9696
```
9797

9898
```
@@ -110,7 +110,7 @@ Three hook types — syscall table, ftrace, and LSM — all resolving into the s
110110
Name-pattern matching misses recompiled or renamed rootkit variants. ELF dynamic symbol analysis catches them regardless of name:
111111

112112
```bash
113-
memf check memdump.lime --symbols linux.json --elf-hooks
113+
memf check --symbols linux.json --elf-hooks memdump.lime
114114
```
115115

116116
```
@@ -134,10 +134,10 @@ memf check memdump.lime --symbols linux.json --elf-hooks
134134

135135
```bash
136136
# Extract DPAPI master keys from LSASS g_MasterKeyCache linked list
137-
memf check memdump.dmp --symbols ntkrnlmp.json --dpapi-keys
137+
memf check --symbols ntkrnlmp.json --dpapi-keys memdump.dmp
138138

139139
# Detect Chrome cookies (v10/v20 encrypted blobs) from heap memory
140-
memf check memdump.dmp --symbols ntkrnlmp.json --browser-cookies
140+
memf check --symbols ntkrnlmp.json --browser-cookies memdump.dmp
141141
```
142142

143143
```
@@ -156,7 +156,7 @@ The Windows credential walkers cover:
156156
## Framebuffer screenshot extraction
157157

158158
```bash
159-
memf framebuf memdump.dmp --symbols ntkrnlmp.json --png screen.png
159+
memf framebuf --symbols ntkrnlmp.json --png screen.png memdump.dmp
160160
```
161161

162162
Extracts the framebuffer from a live or hibernation memory dump and writes it as a PNG. Works on both Linux (DRM/KMS `drm_framebuffer` walker) and Windows (session framebuffer via `win32k` pool scan). Useful for capturing the screen state at the moment of acquisition without booting the image.
@@ -169,10 +169,10 @@ Attackers using tmpfs or `memfd_create(2)` leave no filesystem artifacts — the
169169

170170
```bash
171171
# Recover inodes and file content from Linux tmpfs/ramfs mounts
172-
memf check memdump.lime --symbols linux.json --tmpfs-recovery
172+
memf check --symbols linux.json --tmpfs-recovery memdump.lime
173173

174174
# Detect ELF binaries running from anonymous memfd file descriptors
175-
memf check memdump.lime --symbols linux.json --memfd
175+
memf check --symbols linux.json --memfd memdump.lime
176176
```
177177

178178
```
@@ -196,16 +196,16 @@ Modern offensive tooling patches Windows security instrumentation in memory to e
196196

197197
```bash
198198
# Direct syscalls — Syswhispers/Hell's Gate bypass Win32 API entirely
199-
memf check memdump.dmp --symbols ntkrnlmp.json --direct-syscalls
199+
memf check --symbols ntkrnlmp.json --direct-syscalls memdump.dmp
200200

201201
# ETW patching — log suppression via ret/xor at ETW write functions
202-
memf check memdump.dmp --symbols ntkrnlmp.json --etw-patch
202+
memf check --symbols ntkrnlmp.json --etw-patch memdump.dmp
203203

204204
# AMSI bypass — script-scanning suppression via amsi.dll patch
205-
memf check memdump.dmp --symbols ntkrnlmp.json --amsi-bypass
205+
memf check --symbols ntkrnlmp.json --amsi-bypass memdump.dmp
206206

207207
# DSE bypass — Driver Signature Enforcement disabled for unsigned drivers
208-
memf check memdump.dmp --symbols ntkrnlmp.json --dse-bypass
208+
memf check --symbols ntkrnlmp.json --dse-bypass memdump.dmp
209209
```
210210

211211
```
@@ -231,7 +231,7 @@ memf check memdump.dmp --symbols ntkrnlmp.json --dse-bypass
231231
Beyond classic syscall hooks, modern rootkits abuse newer kernel subsystems. `memory-forensic` covers all three:
232232

233233
```bash
234-
memf check memdump.lime --symbols linux.json --io-uring --netfilter --perf-event
234+
memf check --symbols linux.json --io-uring --netfilter --perf-event memdump.lime
235235
```
236236

237237
```
@@ -253,7 +253,7 @@ memf check memdump.lime --symbols linux.json --io-uring --netfilter --perf-event
253253
## Container escape indicators
254254

255255
```bash
256-
memf check memdump.lime --symbols linux.json --container-escape
256+
memf check --symbols linux.json --container-escape memdump.lime
257257
```
258258

259259
```
@@ -273,7 +273,7 @@ Walks user, mount, PID, net, and cgroup namespaces for every process and flags p
273273
`memf-correlate` joins findings from all walkers into a timeline, scores anomalies by severity, and maps each to MITRE ATT&CK techniques without running walkers one at a time:
274274

275275
```bash
276-
memf correlate memdump.dmp --symbols ntkrnlmp.json --output json > findings.json
276+
memf correlate --symbols ntkrnlmp.json --output json memdump.dmp > findings.json
277277
```
278278

279279
```json

src/main.rs

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -46,29 +46,29 @@ use os_detect::{AnalysisContext, OsProfile};
4646
are required for process, module, and network analysis.",
4747
after_help = "Examples:\n \
4848
memf info memdump.dmp\n \
49-
memf ps memdump.dmp --symbols ntkrnlmp.json\n \
50-
memf ps memdump.dmp --symbols ntkrnlmp.json --threads --output json\n \
51-
memf ps memdump.dmp --symbols ntkrnlmp.json --pid 4\n \
52-
memf ps memdump.dmp --symbols ntkrnlmp.json --tree\n \
53-
memf ps memdump.dmp --symbols ntkrnlmp.json --masquerade\n \
54-
memf ps memdump.dmp --symbols ntkrnlmp.json --dlls --pid 1234\n \
55-
memf ps memdump.lime --symbols linux.json --maps\n \
56-
memf ps memdump.lime --symbols linux.json --envvars\n \
57-
memf ps memdump.dmp --symbols ntkrnlmp.json --cmdline\n \
58-
memf ps memdump.dmp --symbols ntkrnlmp.json --vad\n \
59-
memf ps memdump.dmp --symbols ntkrnlmp.json --privileges\n \
60-
memf ps memdump.lime --symbols linux.json --elfinfo\n \
61-
memf ps memdump.lime --symbols linux.json --bash-history\n \
62-
memf sys memdump.dmp --symbols ntkrnlmp.json\n \
63-
memf sys memdump.lime --symbols linux.json --mounts\n \
64-
memf net memdump.dmp --symbols ntkrnlmp.json --output csv\n \
65-
memf check memdump.lime --symbols linux.json --syscalls\n \
66-
memf check memdump.lime --symbols linux.json --hooks\n \
67-
memf check memdump.lime --symbols linux.json --malfind\n \
68-
memf check memdump.dmp --symbols ntkrnlmp.json --ssdt\n \
69-
memf check memdump.dmp --symbols ntkrnlmp.json --callbacks\n \
70-
memf handles memdump.lime --symbols linux.json\n \
71-
memf strings memdump.dmp --rules ./yara-rules/\n \
49+
memf ps --symbols ntkrnlmp.json memdump.dmp\n \
50+
memf ps --symbols ntkrnlmp.json --threads --output json memdump.dmp\n \
51+
memf ps --symbols ntkrnlmp.json --pid 4 memdump.dmp\n \
52+
memf ps --symbols ntkrnlmp.json --tree memdump.dmp\n \
53+
memf ps --symbols ntkrnlmp.json --masquerade memdump.dmp\n \
54+
memf ps --symbols ntkrnlmp.json --dlls --pid 1234 memdump.dmp\n \
55+
memf ps --symbols linux.json --maps memdump.lime\n \
56+
memf ps --symbols linux.json --envvars memdump.lime\n \
57+
memf ps --symbols ntkrnlmp.json --cmdline memdump.dmp\n \
58+
memf ps --symbols ntkrnlmp.json --vad memdump.dmp\n \
59+
memf ps --symbols ntkrnlmp.json --privileges memdump.dmp\n \
60+
memf ps --symbols linux.json --elfinfo memdump.lime\n \
61+
memf ps --symbols linux.json --bash-history memdump.lime\n \
62+
memf sys --symbols ntkrnlmp.json memdump.dmp\n \
63+
memf sys --symbols linux.json --mounts memdump.lime\n \
64+
memf net --symbols ntkrnlmp.json --output csv memdump.dmp\n \
65+
memf check --symbols linux.json --syscalls memdump.lime\n \
66+
memf check --symbols linux.json --hooks memdump.lime\n \
67+
memf check --symbols linux.json --malfind memdump.lime\n \
68+
memf check --symbols ntkrnlmp.json --ssdt memdump.dmp\n \
69+
memf check --symbols ntkrnlmp.json --callbacks memdump.dmp\n \
70+
memf handles --symbols linux.json memdump.lime\n \
71+
memf strings --rules ./yara-rules/ memdump.dmp\n \
7272
memf strings --from-file extracted.txt --min-length 8"
7373
)]
7474
struct Cli {

0 commit comments

Comments
 (0)