A command-line client for idownloadd, the iDownload kernel debugging shell
listening on the device's 127.0.0.1:1337. Built for jailbroken iOS 15+
(roothide only, iphoneos-arm64e); also runs on macOS through a port forwarder.
idownloadd itself is not part of this package; it has to be running.
idownload-cli # interactive session (shell)
idownload-cli kinfo [--json] # kernel base, slide, unslid base
idownload-cli slide 0xfffffff007004000 # add the slide to an unslid address
idownload-cli read 0x4000 -s # r64 at a slid address (same as 0x4000@S)
idownload-cli read 0x1000 -p -w 32 -n 4
idownload-cli write 0x4000@S 0x41 -w 8 --verify
idownload-cli dump 0xfffffff007004000 0x100 # hexdump
idownload-cli dump 0xfffffff007004000 0x4000 -o k.bin # raw to a file
idownload-cli kcall 0x1234@S 1 2 # up to 8 arguments
idownload-cli kalloc 0x100
idownload-cli ls /var/mobile "/var/mobile/My Folder" [--json]
idownload-cli run uname -a # any command; device program exit status is ours
idownload-cli stop-server --yes # exit_full: stops idownloadd for everyoneAddresses take decimal or 0x hex (lldb's ` separator is fine) and
the server's @V/@P/@S/@PPL suffix, or the -p/-s/--ppl flags.
--host, --port (or IDOWNLOAD_HOST, IDOWNLOAD_PORT) and --timeout
apply to every subcommand. idownload-cli help <subcommand> has the rest.
make check # scripts, config, packaging inputs
make test # host tests against a fake idownloadd
make debs # iOS arm64 build, roothide .deb, SHA256SUMSSee AGENTS.md for how it works and the release contract.
MIT.