Crate appleargs

Source
Expand description

§appleargs

CI Status Docs Latest Version

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…

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

Structs§

AppleArgs
An iterator over the process’ apple arguments.
AppleArgsOs
An iterator over the process’ apple arguments.

Functions§

apple_args
Returns the Apple arguments of the current process as UTF-8 strings.
apple_args_os
Returns the Apple arguments of the current process.