Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
insidegui committed Sep 20, 2024
0 parents commit b80889c
Show file tree
Hide file tree
Showing 37 changed files with 17,495 additions and 0 deletions.
20 changes: 20 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
.DS_Store
__MACOSX
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata
profile
*.moved-aside
DerivedData
.idea/
Carthage
Provisioning
Build/
.ghissue
.swiftpm
9 changes: 9 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
Copyright 2024 Guilherme Rambo

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
45 changes: 45 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
> Disclaimer: this project is provided for use within the [Apple Security Research Device Program](https://security.apple.com/research-device/), use for any purpose outside of security research is outside the scope of the project, please don't report issues or request features that are not within that scope.
# App Registrar Daemon

A daemon that can be installed to an SRD in order to allow for app installation within research cryptexes.

## Requirements

- Security Research Device running iOS 18.0 or later

## How Does it Work?

Once installed, `appregistrard` runs as a daemon and:

- Checks the list of cryptexes that are currently installed
- Checks for a `System/Applications` directory within the cryptex mounts
- If found, installs any `.app` bundles found in those cryptexes, so that the apps can be launched from SpringBoard as usual

Additionally, the daemon keeps running in the background and automatically installs any apps found in the `System/Applications` directory
within newly-installed cryptexes, so you can easily have small individual cryptexes for different apps, and `appregistrard` will
automatically make sure those apps are installed when the cryptexes are mounted.

A great way to easily install new apps via cryptexes is by using my [appcryptex](https://github.com/insidegui/appcryptex) template.
Just clone the `appcryptex` repo, cd into it, then run `./install.sh path/to/your/app`. That will package the app as a standalone
cryptex, personalize and install it. Assuming `appregistrard` is running, it will pick that up and register the app with the system,
making its icon appear on SpringBoard.

## Build / Install Daemon

You can build `appregistrard` from source or install the pre-built cryptex from the dmg in the repo's releases page.

There is an aggregate target in the Xcode project that automatically builds/installs appregistrard via `cryptexctl`, but it has only
been tested on my setup so it's possible it won't work for everyone.

## Customizing Behavior (optional)

Apps inside a cryptex can customize the way they're installed by adding a `ResearchApp` dictionary to their `Info.plist` file.

Currently, `appregistrard` supports the following properties in the `ResearchApp` dictionary:

- `Removable` (BOOL): set to `YES` to allow the app to be deleted by the user like any normal app
- `WantsContainer` (BOOL): set to `YES` for the daemon to create a data container for the app, which also allows app extensions such as widgets to work reliably
- `SystemApp` (BOOL): set to `YES` to install as a system app (requires app to have the `com.apple.private.security.system-application` entitlement)

If no `ResearchApp` dictionary is specified, `Removable` and `WantsContainer` are defaulted to `YES`, so that the app has a container and can be deleted just like any other app. Set these explicitly to `NO` within the `ResearchApp` dictionary to disable this behavior.
Loading

0 comments on commit b80889c

Please sign in to comment.