appleargs
A smol crate to grab your process' "apple arguments"
What are apple arguments?
They are an extra set of strings optionally passed to an executable by the kernel on Darwin-based operating systems. They are entirely undocumented (Open an issue if you find it :D), and as far as anyone can tell, solely intended to store or hint precomputed information about the running process for dyld
to use.
The values are set during the exec sequence of a process and subsequently read by dyld
at various points when it starts an executable. While these can easily change, dyld
is open source so it can be referenced for good examples like...
- building executable launch caches
- checking pointer auth configuration
- determine platform binary support
kern_exec.c
seems to have the full list of parameters that could appear. This crate doesn't attempt to document or parse them because of their amazingly unstable nature.
Example
"executable_path=/Users/person/dev/project/target/debug/bin"
"ptr_munge="
"main_stack="
"executable_file=0x1a0100000f,0x71b112"
"dyld_file=0x1a0100000f,0xfffffff000dc897"
"executable_cdhash=acd984a2fa40d1b36ba71094e7c0318a6bf15084"
"executable_boothash=cd0228d404782f85c4ef3d65dc2ae92aaa66578b"
"arm64e_abi=os"
"th_port="
Supported Operating Systems
This crate should on most macOS and iOS versions (but is not explictly tested). Automated testing occurs on:
- macOS 10.15
- macOS 11
- macOS 12
- iOS 12.4