👷 🔨 Work in progress 🚧 🚦
dmon is a monitor solution for jailbroken iOS devices. This project's core goal is to ensure a specific iOS application is constantly running without needing to use Single App Mode (SAM) or Guided Access Mode (GAM).
A script is included to help with the initial configuration of a jailbroken device: ./bin/setup
A Mac
A jailbroken iPhone
Apple Command Line Tools (
xcode-select --install)imobiledevice tools (
brew install libimobiledevice)Optional but highly recommend creating a ssh keypair
Setup your ssh config entry. Life is much easier when your ssh sessions are remembered.
cat ~/.ssh/config Host iphone localhost HostName localhost User root Port 2222 StrictHostKeyChecking no UserKnownHostsFile=/dev/null #IdentityFile ~/.ssh/main.pub Host * ControlMaster auto ControlPath /tmp/%r@%h:%p ControlPersist 1800
It is assumed you know your way around a command line. Commands are ran on your computer connected to a single iOS device.
Grab a valid iOS 14+ device and jailbreak it: https://ios.cfw.guide/get-started/select-iphone/
Clone this git repo.
git clone https://github.com/clburlison/dmon
Change directory into the freshly cloned repo.
cd dmonCreate a
config.jsonat the root of this repo with the correct values.Make sure to remove all
// commentsbefore saving. They are not valid JSON!{"api_key": "YOUR_API_KEY","device_configuration_manager_url": "https://YOUR_AWESOME_DCM_URL","dmon_url": "https://YOUR_URL:PORT/path/",// Url to download update files from. Leave empty if you don't want to use the update function."dmon_username": "username",// Basic Auth username. Leave empty if not used"dmon_password": "password"// Basic Auth password. Leave empty if not used}
Download any extra .deb files you want installed into the
./debs/directory.debs to include:
- https://apt.bingner.com/debs/1443.00/com.ex.substitute_2.3.1_iphoneos-arm.deb
- https://apt.bingner.com/debs/1443.00/com.saurik.substrate.safemode_0.9.6005_iphoneos-arm.deb
- https://repo.spooferpro.com/debs/com.spooferpro.kernbypass_1.1.0_iphoneos-arm64.deb
- https://github.com/clburlison/dmon/releases
- (Optional - Required for pogo.ipa updates) https://cydia.akemi.ai/debs/nodelete-ai.akemi.appsyncunified.deb
- (Optional - Required for pogo.ipa updates) https://cydia.akemi.ai/debs/nodelete-ai.akemi.appinst.deb
- Potentially any paid/private debs. Nudge, nudge, wink, wink
Grab a copy of Pokemon Go via majd/ipatool.
brew tap majd/repo brew install ipatool ipatool auth login -e 'youremail@example.com' -p 'PASSWORD' ipatool download --purchase -b com.nianticlabs.pokemongo -o pogo.ipa
Connect your iOS device to your computer via USB.
Open Terminal.app and run (remember only to have one phone connected).
# Alteratively you can pass -u <device-uuid> if multiple phones are connected iproxy 2222 22Then, in a separate terminal window, run:
ssh root@localhost -p 2222 # default password is 'alpine'# Now disconnect with: Control + d
Now run:
./bin/setup # If you want to setup passwordless ssh then pass the argument with the path to your public key ./bin/setup -s ~/.ssh/main.pub
Assuming everything worked correctly, your phone is now properly configured.
Bonus items that are out of scope for this project.
- Configure your device as supervised and push a wireless mobileconfig profile
- Configure your device to use Shared Internet from your Mac
- Supervise your device and push a global proxy to route requests through HAproxy
- All testing has been completed with iOS 15 using palera1n
- Only confirmed on older A9 processors, aka iPhone SE first gen
- DEB Package is built on macOS Ventura
I was expecting to add a few external compiled binaries and wanted to avoid reading the documentation. But, unfortunately, things changed, and I don't want to rewrite it.
Close Pokemon Go on the phone
ssh into the phone & unload the launch daemon
ssh iphone /usr/bin/launchctl unload /Library/LaunchDaemons/com.github.clburlison.dmon.plist
It is a flat structure. You can use Nginx, Apache, Caddy, Python, NodeJS, etc. Your files should be named:
top_level_folder
├── gc.deb
├── pogo.ipa
└── version.txtYour version.txt file should have the following text. Update the versions to match what is currently released.
gc: 2.0.248
pogo: 0.265.0Then in your config, point dmon_url to http://HOSTNAME:PORT/top_level_folder.
I was lazy and figured this would make it easier for you. Now bugger off.
I don't have the original author's permission to upload their files.
dmon is using the stock CA Certificates installed as part of the iOS jailbreak. The Procursus Team placed files in /usr/lib/ssl/cacert.pem and I figured it would be safe to keep using them. Those root certs might have expired and need an update if you are running into an issue.
- dm.pl
- theos
- appknox/Open which was originally from conradev/Open