diff options
author | comex | 2015-07-16 13:22:21 -0400 |
---|---|---|
committer | comex | 2015-07-16 13:22:21 -0400 |
commit | 81436f02a4dbf37649a300f021992f2b6fa2c0f5 (patch) | |
tree | 98ce1bc24793e0f1915b471d820d26b208cf804f /README.md | |
parent | Add options field to struct substitute_{function,import}_hook. (diff) | |
download | substitute-81436f02a4dbf37649a300f021992f2b6fa2c0f5.tar.gz |
improve readme
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 65 |
1 files changed, 32 insertions, 33 deletions
@@ -1,38 +1,47 @@ (lib)substitute --------------- -[3/1/15] Time flies whether or not you're having fun? "Tomorrow" became a -month, thanks to work, but at least we're getting somewhere. +Substitute is a system for modifying code at runtime by substituting custom +implementations for arbitrary functions and Objective-C methods. It is also a +Free Software substitute for [Cydia Substrate](http://www.cydiasubstrate.com). +It currently has full support for iOS and limited support for OS X; in the +(hopefully near) future I will port it more widely. -ALPHA VERSION: +License: LGPLv2.1+ with optional extra permissiveness; see LICENSE.txt + +Current status +============== - This code has not yet been tested anywhere near adequately and is probably - completely broken. Especially sharp edges are the iOS bootstrap stuff and - the disassemblers. +Alpha. Currently only build tested on Mac, targeting Mac and iOS. - Please only try to install this on iOS 8. Before installing this, *please* install - [safestrat](https://github.com/comex/safestrat) so that if Substitute - breaks booting, you can SSH in and uninstall it. (Ensure that its entry in - /etc/rc.d comes alphabetically before 'substitute'! Although this - package's volume-up disable should be pretty stable too.) +To compile for iOS: - Please reboot after installing and uninstalling. Magic rebootless - installation and uninstallation is planned, but not implemented yet! + ./configure --xcode-sdk=iphoneos --enable-ios-bootstrap && make -j8 && ./script/gen-deb.sh - Automatically entering a safe mode after SpringBoard crashes is not - implemented yet (though you can see the UI in progress in - ios-bootstrap/SafetyDance). Manually disabling the system by holding - volume up while booting (the same shortcut as Substrate) should work, - though. +You may want to turn off IB_VERBOSE in darwin-bootstrap/ib-log.h, which +currently spams a lot of files to /tmp and spams the syslog. I will turn it +off by default soon. - ...If you read through all that and still want to install, you can build it - on a Mac with: +To compile for Mac (does not support bootstrapping/bundle loading/etc., only +direct usage as a library): - make ARCH="-arch armv7 -arch arm64 -isysroot <xxx>" && ./script/gen-deb.sh + ./configure && make -j8 - or use a deb I uploaded to GitHub - see the release page: +In other situations, `./configure --help` should be informative. I'm using a +build system I wrote from scratch, intended to be extensible for many use cases +rather than project specific, and therefore somewhat complex; it's currently +rather rough around the edges. Please let me know about any problems with it. - https://github.com/comex/substitute/releases +Known issues (will be fixed soon): + - launchd will sometimes crash when injecting Substrate while Substitute is + already loaded. + - substituted will forget what libraries were loaded into SpringBoard if it + gets killed for inactivity, breaking the crash. + - White-on-white status bar (I think) in SafetyDance. + - Each dylib is >100kb due mostly to zero padding (and fat binaries). This + is easily fixed by adding FS compression, which I need to do in the deb. + +How to use on iOS: Extensions should be placed in /Library/Substitute/DynamicLibraries, with the same layout as Substrate. If you want to quickly test whether an @@ -45,16 +54,6 @@ ALPHA VERSION: and move it to the new directory. -Substitute is a system for modifying code at runtime by substituting custom -implementations for arbitrary functions and Objective-C methods. It is also a -Free Software substitute for [Cydia Substrate](http://www.cydiasubstrate.com). -It currently has full support for iOS and limited support for OS X; in the -(hopefully near) future I will port it more widely. - -License: LGPLv2.1+ with optional extra permissiveness; see LICENSE.txt - -Note: x86 support should be functional now, although I haven't tested it much. - Substitute compared to Substrate ================================ * `+` Free software, so you can actually use it somewhere other than iOS or |