Aliases and settings
Both persist. Set them once and they are there next time you open the shell, which is the point — a setting you have to type every session is a setting you stop using.
Settings
picklock> config:list
+----------------+---------+-----------------------------------------------+
| SETTING | VALUE | DESCRIPTION |
+----------------+---------+-----------------------------------------------+
| limit | 20 | Rows printed per result table (0 = no limit). |
| max_results | 1000000 | Scan hits kept in memory (0 = no cap). |
| hex | off | Print integer values in hexadecimal. |
| timing | on | Print the elapsed time after each command. |
| progress | on | Show a progress line while scanning. |
| writable_only | off | Scan only writable regions (faster). |
| hex_width | 16 | Bytes per line in 'memory:hex' output. |
| watch_interval | 0.5 | Seconds between 'memory:watch' samples. |
+----------------+---------+-----------------------------------------------+
config:set limit 50 change one
config:set hex on booleans take on/off, true/false, 1/0
config:reset limit put one back to its default
config:reset put them all back
The two worth knowing about:
writable_only— makes--writablethe default for every scan. If you are always scanning for values that change, turn it on and stop typing it.max_results— the cap on how many hits a scan keeps in memory. A loose first scan on a big process can match tens of millions of addresses, and the cap is what stops that from becoming a swap storm. The scan says when it hit the cap.
Aliases
Your own names for commands:
picklock> alias:add r memory:read
picklock> alias:add hp scan:next --decreased
picklock> r #1 int32
An alias stands for the first word of a line, and is substituted before
anything else looks at it — so r --help describes memory:read, and
arguments you type are appended to the ones the alias carries.
alias:list what you have defined, and where they are stored
alias:remove r
A name that is already a command or an existing alias is refused, so you cannot
shadow scan:value with something that surprises you three weeks later.
Where they live
$XDG_CONFIG_HOME/picklock/ ~/.config/picklock/ by default
%APPDATA%\picklock\ on Windows
as aliases.json and settings.json. alias:list and config:list print the
path they are using, so you never have to guess.
Two details:
PICKLOCK_CONFIG_DIRmoves both. It is the environment variable to reach for in CI, or when you want a session that cannot touch your real configuration.Only settings you changed are stored. A default that moves in a later release still reaches you, instead of being frozen by a file that recorded the old value for no reason.
If either file cannot be read or written — a read-only home directory, a corrupt file — Picklock says so once and carries on with defaults. Losing your aliases is not a reason to be unable to start the shell.