Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/limneos/UIDaemon
An iOS daemon that can show UI /over/ SpringBoard
https://github.com/limneos/UIDaemon
Last synced: 3 months ago
JSON representation
An iOS daemon that can show UI /over/ SpringBoard
- Host: GitHub
- URL: https://github.com/limneos/UIDaemon
- Owner: limneos
- Created: 2017-04-11T16:01:31.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2019-10-26T22:26:54.000Z (about 5 years ago)
- Last Synced: 2024-04-12T22:55:35.573Z (7 months ago)
- Language: Logos
- Size: 15.6 KB
- Stars: 121
- Watchers: 8
- Forks: 15
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-hacking-lists - limneos/UIDaemon - An iOS daemon that can show UI /over/ SpringBoard (Logos)
README
# UIDaemon
A daemon sample running on iOS that can show UI contents over SpringBoard,
supporting window transparency and touches.Inspired after studying how assistivetouchd works, the daemon that runs on iOS when AssistiveTouch accessibility feature
is enabled, and shows UI tools for accessibility /over/ SpringBoard.Note: Touches work out of the box on iOS 9-10, for earlier versions you need to pass the touches to your views. (You still get all the touch info, dispatching is the only thing lacking).
The daemon registers a mach service port and you can launch it on demand by sending a message to that port.
e.g. upon springboard launch:
%hook SpringBoard
-(void)applicationDidFinishLaunching:(id)appl{
%orig;
CFMessagePortRef port=CFMessagePortCreateRemote(NULL,CFSTR("net.limneos.magicapp.springboardDidFinishLaunching"));
CFMessagePortSendRequest(port, 1,(CFDataRef)[NSData data], 10,10, NULL,NULL);
}
%endTo manually launch the application:
/System/Library/CoreServices/MagicApp.app/MagicApp
This sample demonstrates the ability to use touches out of the box,
the ability to choose hitTest transparency ,
and the ability to set view's transparency over SpringBoard, still showing SpringBoard's contents.
e.g. Getting a screen shot from within the daemon, will also grab SpringBoard's contents.You will be surprised to see that even after killing SpringBoard process, the application
still runs, showing its UI and accepting touches.
The only thing that stops the app's UI is backboardd termination.
Therefore I have a listener that stops the application when backboardd exits.