Skip to main content

amfidont

Description

A macOS utility that attaches to amfid with LLDB and bypasses app signature validation for explicitly allowed binaries. Allowed targets are matched by executable path prefix and/or cdhash.

Requirements

  • SIP configuration that allows debugging system processes by either:
    • fully disable SIP
    • disable only debugging restrictions (csrutil enable --without debug)

Installation

xcrun python3 -m pip install -U amfidont

Usage

Usage: amfidont [OPTIONS] COMMAND [ARGS]...

A simple utility for bypassing amfid signature verification

Options:
  --path, -p TEXT      path of executable to allow (can be specified multiple times, merged with ~/.amfidont/paths)
  --cdhash, -c TEXT    cdhash of executable to allow (can be specified multiple times, merged with ~/.amfidont/cdhashes)
  --verbose, -v        enable verbose output
  --allow-all          allow all validations to pass
  --spoof-apple, -S    patch isApple to return true for allowed binaries
  --install-completion Install completion for the current shell.
  --show-completion    Show completion for the current shell, to copy it or customize the installation.
  --help               Show this message and exit.

Commands:
  daemon        Start amfidont in daemon mode.
  add-path      Add an allowed path prefix to persistent configuration.
  remove-path   Remove an allowed path prefix from persistent configuration.
  add-cdhash    Add an allowed cdhash to persistent configuration.
  remove-cdhash Remove an allowed cdhash from persistent configuration.

Example

  1. Add a persistent allowed path:

    sudo amfidont add-path /Users/user/dev/myapp/build/Release/MyApp.app/
    
  2. Start bypass mode (foreground):

    sudo amfidont --verbose
    
  3. (Optional) Start as daemon instead:

    sudo amfidont daemon --verbose
    
  4. (Optional) Spoof allowed binaries as Apple-signed:

    sudo amfidont --spoof-apple --verbose
    

    For example, this can be used to run self-signed arm64e binaries without setting the arm64e_preview_abi boot argument.

  5. Stop foreground mode with Ctrl-C (this detaches amfidont and leaves amfid running).

Inner implementation details

  • amfidont attaches to /usr/libexec/amfid using LLDB.
  • It sets a breakpoint on:
-[AMFIPathValidator_macos validateWithError:]
  • On each breakpoint hit, it inspects validator fields:
    • code path (codePath)
    • cdhash (cdhashAsData)
    • validation state (isValid)
  • If the validator is invalid but the path/cdhash matches configured allow-rules, the return register is patched to success and execution continues.
  • When --spoof-apple is enabled, an additional breakpoint is set on:
-[AMFIPathValidator_macos isApple]

This patches isApple to return true for allowed binaries, making them appear Apple-signed. For example, this allows running self-signed arm64e binaries without the arm64e_preview_abi boot argument.

  • Persistent configuration is stored in:
    • ~/.amfidont/paths
    • ~/.amfidont/cdhashes

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

amfidont-0.0.3.tar.gz (52.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

amfidont-0.0.3-py3-none-any.whl (39.4 kB view details)

Uploaded Python 3

File details

Details for the file amfidont-0.0.3.tar.gz.

File metadata

  • Download URL: amfidont-0.0.3.tar.gz
  • Upload date:
  • Size: 52.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for amfidont-0.0.3.tar.gz
Algorithm Hash digest
SHA256 172da70fb8e78252732eff13d3d3c6f2aff114c76d8999d265b42c99c29a8b4a
MD5 f201893987cdcaaf90fd35e5d5778c0b
BLAKE2b-256 db97ce8b0e3759973ee26f267d2c677117035c3dd944d106e17690e5f1657987

See more details on using hashes here.

Provenance

The following attestation bundles were made for amfidont-0.0.3.tar.gz:

Publisher: python-publish.yml on zqxwce/amfidont

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file amfidont-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: amfidont-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 39.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for amfidont-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 4cbd929c49083848210dc8806b22182ff99e7fa42edb5bbe6d832b7246fd3ce7
MD5 6825c1a1bd10a4a583ceb1dc4df8fa82
BLAKE2b-256 2ec2d9f450eb196b5fb50c4917cdb955560f5802d1e4dc57ceeb8499d3281495

See more details on using hashes here.

Provenance

The following attestation bundles were made for amfidont-0.0.3-py3-none-any.whl:

Publisher: python-publish.yml on zqxwce/amfidont

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.0.3 This release

2 files

0.0.2

2 files

0.0.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page