Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,7 @@ _
obj
.theos
.DS_Store
layout
packages
compile_commands.json
.cache
5 changes: 1 addition & 4 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
[submodule "framework"]
path = framework
url = git://github.com/rpetrich/theos.git
[submodule "LightMessaging"]
path = LightMessaging
url = git://github.com/rpetrich/LightMessaging.git
url = https://github.com/rpetrich/LightMessaging.git
2 changes: 1 addition & 1 deletion LightMessaging
97 changes: 40 additions & 57 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,65 +1,48 @@
LIBRARY_NAME = librocketbootstrap
librocketbootstrap_FILES = Tweak.x Shims.x
librocketbootstrap_LIBRARIES = substrate
librocketbootstrap_FRAMEWORKS = Foundation
librocketbootstrap_USE_MODULES = 0
TARGET := iphone:clang:latest:13.0
ARCHS := arm64 arm64e
INSTALL_TARGET_PROCESSES = SpringBoard MobileGestaltHelper rocketd _rocketd_reenable
GO_EASY_ON_ME = 1

TOOL_NAME = rocketd _rocketd_reenable
rocketd_FILES = rocketd.c
rocketd_CFLAGS = -fblocks
rocketd_FRAMEWORKS = CoreFoundation
rocketd_INSTALL_PATH = /usr/libexec
rocketd_USE_MODULES = 0
rocketd_CODESIGN_FLAGS = -Sentitlements.xml
LIBRARY_NAME := librocketbootstrap
librocketbootstrap_FILES += Tweak.x Shims.x
ifeq ($(THEOS_PACKAGE_SCHEME),rootless)
librocketbootstrap_LDFLAGS += -install_name @rpath/librocketbootstrap.dylib
librocketbootstrap_WEAK_LIBRARIES += libs/rootless/TweakInject.tbd
else
librocketbootstrap_WEAK_LIBRARIES += libs/TweakInject.tbd
endif
librocketbootstrap_LIBRARIES += substrate
librocketbootstrap_FRAMEWORKS += Foundation
librocketbootstrap_USE_MODULES += 0

_rocketd_reenable_FILES = rocketd_reenable.c
_rocketd_reenable_INSTALL_PATH = /usr/libexec
_rocketd_reenable_USE_MODULES = 0
_rocketd_reenable_CODESIGN_FLAGS = -Sentitlements.xml
TOOL_NAME := rocketd _rocketd_reenable
rocketd_FILES += rocketd.c
rocketd_CFLAGS += -fblocks
rocketd_FRAMEWORKS += CoreFoundation
rocketd_INSTALL_PATH += /usr/libexec
rocketd_USE_MODULES += 0
rocketd_CODESIGN_FLAGS += -Sentitlements.xml

ADDITIONAL_CFLAGS = -std=c99 -Ioverlayheaders
_rocketd_reenable_FILES += rocketd_reenable.c
_rocketd_reenable_INSTALL_PATH += /usr/libexec
_rocketd_reenable_USE_MODULES += 0
_rocketd_reenable_CODESIGN_FLAGS += -Sentitlements.xml

# Support targeting 3.0 in packaged builds, but allow testing packages/builds to be missing support for old iOS versions
XCODE4_PATH ?= /Applications/Xcode_Legacy.app
XCODE6_PATH ?= /Volumes/Xcode/Xcode.app
XCODE9_PATH ?= /Volumes/Xcode_9.4.1/Xcode.app
ADDITIONAL_CFLAGS += -std=c99 -Idefaultheaders -include prefix.pch
ADDITIONAL_LDFLAGS += -Wl,-no_warn_inits

ifeq ($(wildcard $(XCODE4_PATH)/.*),)
ADDITIONAL_CFLAGS += -Idefaultheaders
IPHONE_ARCHS = armv7 armv7s arm64 arm64e
TARGET_IPHONEOS_DEPLOYMENT_VERSION = 8.4
ifeq ($(FINALPACKAGE),1)
$(error Building final package requires a legacy Xcode install!)
endif
else
armv6_CFLAGS += -Ifullheaders
armv7_CFLAGS += -Ifullheaders
armv7s_CFLAGS += -Ifullheaders
arm64_CFLAGS += -Idefaultheaders
arm64e_CFLAGS += -Idefaultheaders
rocketd_IPHONE_ARCHS = armv6 arm64
_rocketd_reenable_IPHONE_ARCHS = armv6 arm64
IPHONE_ARCHS = armv6 armv7 armv7s arm64 arm64e
SDKVERSION_armv6 = 5.1
INCLUDE_SDKVERSION_armv6 = 8.4
TARGET_IPHONEOS_DEPLOYMENT_VERSION_armv6 = 3.0
TARGET_IPHONEOS_DEPLOYMENT_VERSION_armv7 = 4.0
TARGET_IPHONEOS_DEPLOYMENT_VERSION_armv7s = 6.0
TARGET_IPHONEOS_DEPLOYMENT_VERSION_arm64 = 7.0
TARGET_IPHONEOS_DEPLOYMENT_VERSION_arm64e = 12.0
TARGET_IPHONEOS_DEPLOYMENT_VERSION = 9.0
THEOS_PLATFORM_SDK_ROOT_armv6 = $(XCODE4_PATH)/Contents/Developer
THEOS_PLATFORM_SDK_ROOT_armv7 = $(XCODE6_PATH)/Contents/Developer
THEOS_PLATFORM_SDK_ROOT_armv7s = $(XCODE6_PATH)/Contents/Developer
THEOS_PLATFORM_SDK_ROOT_arm64 = $(XCODE9_PATH)/Contents/Developer
endif
include $(THEOS)/makefiles/common.mk
include $(THEOS_MAKE_PATH)/library.mk
include $(THEOS_MAKE_PATH)/tool.mk

include framework/makefiles/common.mk
include framework/makefiles/library.mk
include framework/makefiles/tool.mk
before-all::
@rm -rf layout
@mkdir -p layout
@[ "$$THEOS_PACKAGE_SCHEME" = "rootless" ] && cp -rP defaultlayout/DEBIAN defaultlayout/var/jb/Library layout/ || true
@[ "$$THEOS_PACKAGE_SCHEME" = "" ] && cp -rP defaultlayout/DEBIAN defaultlayout/Library layout/ || true

stage::
mkdir -p "$(THEOS_STAGING_DIR)/usr/include"
cp -a rocketbootstrap.h rocketbootstrap_dynamic.h "$(THEOS_STAGING_DIR)/usr/include"
plutil -convert binary1 "$(THEOS_STAGING_DIR)/Library/MobileSubstrate/DynamicLibraries/RocketBootstrap.plist"
plutil -convert binary1 "$(THEOS_STAGING_DIR)/Library/LaunchDaemons/com.rpetrich.rocketbootstrapd.plist"
@mkdir -p "$(THEOS_STAGING_DIR)/usr/include"
@cp -a rocketbootstrap.h rocketbootstrap_dynamic.h "$(THEOS_STAGING_DIR)/usr/include"
@plutil -convert binary1 "$(THEOS_STAGING_DIR)/Library/MobileSubstrate/DynamicLibraries/RocketBootstrap.plist" || true
@plutil -convert binary1 "$(THEOS_STAGING_DIR)/Library/LaunchDaemons/com.rpetrich.rocketbootstrapd.plist" || true
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# RocketBootstrap
API to securely expose global services on jailbroken iOS.
Fully tested & worked on iOS 13 - iOS 15.4.1 (Dopamine, a rootless jailbreak).

Special thanks to [@rpetrich](https://github.com/rpetrich), [@coolstar](https://github.com/coolstar) and [@DHowett](https://github.com/DHowett).
Loading