added support for odysseus 64bit (warning untested!)

pull/291/head
tihmstar 2019-11-02 23:25:47 +01:00
parent c0fd39374b
commit 292fca0e02
12 changed files with 396 additions and 542 deletions

3
.gitmodules vendored
View File

@ -4,3 +4,6 @@
[submodule "external/idevicerestore"]
path = external/idevicerestore
url = https://github.com/tihmstar/idevicerestore.git
[submodule "external/libgeneral"]
path = external/libgeneral
url = https://github.com/tihmstar/libgeneral

View File

@ -1,3 +1,3 @@
AUTOMAKE_OPTIONS = foreign
ACLOCAL_AMFLAGS = -I m4
SUBDIRS = external/idevicerestore external/img4tool external/tsschecker futurerestore
SUBDIRS = external/idevicerestore external/tsschecker futurerestore

View File

@ -1,18 +1,19 @@
#!/bin/bash
gprefix=`which glibtoolize 2>&1 >/dev/null`
if [ $? -eq 0 ]; then
if [ $? -eq 0 ]; then
glibtoolize --force
else
libtoolize --force
fi
aclocal -I m4
autoconf
autoheader
automake --add-missing
autoconf
autoreconf -i
export NOCONFIGURE=1
SUBDIRS="external/idevicerestore external/img4tool external/tsschecker"
SUBDIRS="external/idevicerestore external/tsschecker"
for SUB in $SUBDIRS; do
pushd $SUB
./autogen.sh
@ -24,5 +25,3 @@ unset NOCONFIGURE
if [ -z "$NOCONFIGURE" ]; then
./configure "$@"
fi
./setBuildVersion.sh

View File

@ -1,9 +1,23 @@
AC_PREREQ(2.64)
AC_INIT([futurerestore], [1.0], [http://url.me/issues],, [http://url.me])
AC_PREREQ([2.69])
AC_INIT([futurerestore], m4_esyscmd([git rev-list --count HEAD | tr -d '\n']), [tihmstar@gmail.com])
AC_CANONICAL_SYSTEM
AC_CANONICAL_HOST
AM_INIT_AUTOMAKE([subdir-objects])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIRS([m4])
AC_DEFINE([VERSION_COMMIT_COUNT], "m4_esyscmd([git rev-list --count HEAD | tr -d '\n'])", [Git commit count])
AC_DEFINE([VERSION_COMMIT_SHA], "m4_esyscmd([git rev-parse HEAD | tr -d '\n'])", [Git commit sha])
AC_SUBST([VERSION_COMMIT_COUNT], ["m4_esyscmd([git rev-list --count HEAD | tr -d '\n'])"])
AC_SUBST([VERSION_COMMIT_SHA], ["m4_esyscmd([git rev-parse HEAD | tr -d '\n'])"])
# Checks for programs.
AC_PROG_CXX
AC_PROG_CC
# Check for operating system
AC_MSG_CHECKING([whether we need platform-specific build settings])
case $host_os in
@ -12,30 +26,29 @@ case $host_os in
;;
esac
AM_INIT_AUTOMAKE
CFLAGS="-DIDEVICERESTORE_NOMAIN=1 -DIMG4TOOL_NOMAIN=1 -DTSSCHECKER_NOMAIN=1"
CFLAGS="-DIDEVICERESTORE_NOMAIN=1 -DTSSCHECKER_NOMAIN=1"
CXXFLAGS+=" -std=c++11"
CFLAGS+=" -std=c11"
AC_DEFUN([AX_UNPRECIOUS], [
m4_define([_AC_PRECIOUS_VARS], m4_bpatsubst(_AC_PRECIOUS_VARS, [$1
], []))
m4_define([_AC_PRECIOUS_VARS], m4_bpatsubst(_AC_PRECIOUS_VARS, [$1], []))
])
AX_UNPRECIOUS([CFLAGS])
export CFLAGS
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIRS([m4])
AC_CONFIG_SUBDIRS(external/idevicerestore external/img4tool external/tsschecker)
AC_CONFIG_SUBDIRS(external/idevicerestore external/tsschecker)
AC_CONFIG_SRCDIR([futurerestore])
PKG_CHECK_MODULES(libplist, libplist >= 1.12)
PKG_CHECK_MODULES(libzip, libzip >= 0.10)
PKG_CHECK_MODULES(libimobiledevice, libimobiledevice-1.0 >= 1.2.1)
PKG_CHECK_MODULES(libfragmentzip, libfragmentzip >= 1.0)
PKG_CHECK_MODULES(libirecovery, libirecovery >= 0.2.0)
AC_PROG_CC
AC_PROG_CXX
PKG_CHECK_MODULES(libimg4tool, libimg4tool >= 158)
# Optional module libipatcher
@ -53,13 +66,16 @@ else
AC_MSG_CHECKING([for futurerestore libipatcher])
if test "$build_libipatcher" = "true"; then
PKG_CHECK_MODULES(libipatcher, libipatcher >= 47)
do_libipatcher=yes
AC_DEFINE(HAVE_LIBIPATCHER, 1, [Define if you have libipatcher])
do_libipatcher=yes
else
do_libipatcher=no
fi
fi
AM_CONDITIONAL([HAVE_LIBIPATCHER],[test "x$do_libipatcher" = "xyes"])
AC_DEFINE(CUSTOM_LOGGING, 1, [required for futurerestore])
LT_INIT

1
external/libgeneral vendored Submodule

@ -0,0 +1 @@
Subproject commit e423f64d9b535c9a963f2ed3ed0fbf300c1ec24c

View File

@ -7,6 +7,8 @@
objects = {
/* Begin PBXBuildFile section */
8762F344236DF4D900F42FDB /* libimg4tool.0.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 8762F343236DF4D900F42FDB /* libimg4tool.0.dylib */; };
8762F345236DF4D900F42FDB /* libimg4tool.0.dylib in Embed Libraries */ = {isa = PBXBuildFile; fileRef = 8762F343236DF4D900F42FDB /* libimg4tool.0.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
878587471D89CFDC008689F0 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 878587461D89CFDC008689F0 /* main.cpp */; };
878587A71D89D56E008689F0 /* libplist.3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 878587A61D89D56E008689F0 /* libplist.3.dylib */; };
878587AB1D89D590008689F0 /* libimobiledevice.6.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 878587AA1D89D590008689F0 /* libimobiledevice.6.dylib */; };
@ -14,10 +16,9 @@
878587AF1D89D5A5008689F0 /* libcurl.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 878587AE1D89D5A5008689F0 /* libcurl.tbd */; };
878587B71D89D637008689F0 /* libirecovery.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 878587B61D89D637008689F0 /* libirecovery.2.dylib */; };
8788A6811EE8426A00138E07 /* libipatcher.0.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 8788A6801EE8426A00138E07 /* libipatcher.0.dylib */; };
8788A6831EE8544000138E07 /* jssy.c in Sources */ = {isa = PBXBuildFile; fileRef = 8788A6821EE8544000138E07 /* jssy.c */; };
878E1AC51F73EB3F00B1565B /* libzip.5.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 878E1AC41F73EB3F00B1565B /* libzip.5.dylib */; };
8799B0B21D89D99D002F4D5F /* futurerestore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8799B0B01D89D99D002F4D5F /* futurerestore.cpp */; };
8799B0B31D89DAE7002F4D5F /* idevicerestore.c in Sources */ = {isa = PBXBuildFile; fileRef = 8785875C1D89D1C1008689F0 /* idevicerestore.c */; settings = {COMPILER_FLAGS = "-D HAVE_CONFIG_H=1 "; }; };
8799B0B31D89DAE7002F4D5F /* idevicerestore.c in Sources */ = {isa = PBXBuildFile; fileRef = 8785875C1D89D1C1008689F0 /* idevicerestore.c */; };
8799B0B41D89DAF6002F4D5F /* tss.c in Sources */ = {isa = PBXBuildFile; fileRef = 878587761D89D1C1008689F0 /* tss.c */; };
8799B0B51D89DAFF002F4D5F /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = 878587511D89D1C1008689F0 /* common.c */; };
8799B0B61D89DAFF002F4D5F /* dfu.c in Sources */ = {isa = PBXBuildFile; fileRef = 878587531D89D1C1008689F0 /* dfu.c */; };
@ -35,8 +36,6 @@
8799B0C31D89DB4B002F4D5F /* socket.c in Sources */ = {isa = PBXBuildFile; fileRef = 878587721D89D1C1008689F0 /* socket.c */; };
8799B0C41D89DB55002F4D5F /* mbn.c in Sources */ = {isa = PBXBuildFile; fileRef = 8785876A1D89D1C1008689F0 /* mbn.c */; };
8799B0C51D89DB67002F4D5F /* locking.c in Sources */ = {isa = PBXBuildFile; fileRef = 878587671D89D1C1008689F0 /* locking.c */; };
8799B0C81D89E2BD002F4D5F /* img4tool.c in Sources */ = {isa = PBXBuildFile; fileRef = 878587901D89D1ED008689F0 /* img4tool.c */; settings = {COMPILER_FLAGS = "-D HAVE_CONFIG_H=1 "; }; };
8799B0C91D89E2C3002F4D5F /* img4.c in Sources */ = {isa = PBXBuildFile; fileRef = 8785878E1D89D1ED008689F0 /* img4.c */; };
8799B0CA1D89E371002F4D5F /* img4.c in Sources */ = {isa = PBXBuildFile; fileRef = 878587601D89D1C1008689F0 /* img4.c */; };
8799B0CB1D89F796002F4D5F /* tsschecker.c in Sources */ = {isa = PBXBuildFile; fileRef = 8785879F1D89D2BA008689F0 /* tsschecker.c */; };
8799B0CC1D89F7B9002F4D5F /* download.c in Sources */ = {isa = PBXBuildFile; fileRef = 878587981D89D2BA008689F0 /* download.c */; };
@ -45,6 +44,17 @@
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
8762F346236DF4D900F42FDB /* Embed Libraries */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
8762F345236DF4D900F42FDB /* libimg4tool.0.dylib in Embed Libraries */,
);
name = "Embed Libraries";
runOnlyForDeploymentPostprocessing = 0;
};
878587411D89CFDC008689F0 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
@ -57,6 +67,7 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
8762F343236DF4D900F42FDB /* libimg4tool.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libimg4tool.0.dylib; path = ../../../../usr/local/lib/libimg4tool.0.dylib; sourceTree = "<group>"; };
878587431D89CFDC008689F0 /* futurerestore */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = futurerestore; sourceTree = BUILT_PRODUCTS_DIR; };
878587461D89CFDC008689F0 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = "<group>"; };
8785874F1D89D1C1008689F0 /* asr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = asr.c; sourceTree = "<group>"; };
@ -99,17 +110,11 @@
878587751D89D1C1008689F0 /* thread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = thread.h; sourceTree = "<group>"; };
878587761D89D1C1008689F0 /* tss.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tss.c; sourceTree = "<group>"; };
878587771D89D1C1008689F0 /* tss.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tss.h; sourceTree = "<group>"; };
8785878C1D89D1ED008689F0 /* all_img4tool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = all_img4tool.h; sourceTree = "<group>"; };
8785878E1D89D1ED008689F0 /* img4.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = img4.c; sourceTree = "<group>"; };
8785878F1D89D1ED008689F0 /* img4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = img4.h; sourceTree = "<group>"; };
878587901D89D1ED008689F0 /* img4tool.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = img4tool.c; sourceTree = "<group>"; };
878587941D89D243008689F0 /* img4tool.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = img4tool.h; sourceTree = "<group>"; };
878587951D89D290008689F0 /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = "<group>"; };
878587971D89D2BA008689F0 /* all_tsschecker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = all_tsschecker.h; sourceTree = "<group>"; };
878587981D89D2BA008689F0 /* download.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = download.c; sourceTree = "<group>"; };
878587991D89D2BA008689F0 /* download.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = download.h; sourceTree = "<group>"; };
8785879A1D89D2BA008689F0 /* jsmn.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jsmn.c; sourceTree = "<group>"; };
8785879B1D89D2BA008689F0 /* jsmn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = jsmn.h; sourceTree = "<group>"; };
8785879A1D89D2BA008689F0 /* jssy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jssy.c; path = ../external/jssy/jssy/jssy.c; sourceTree = "<group>"; };
8785879B1D89D2BA008689F0 /* jssy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jssy.h; path = ../external/jssy/jssy/jssy.h; sourceTree = "<group>"; };
8785879F1D89D2BA008689F0 /* tsschecker.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tsschecker.c; sourceTree = "<group>"; };
878587A01D89D2BA008689F0 /* tsschecker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tsschecker.h; sourceTree = "<group>"; };
878587A61D89D56E008689F0 /* libplist.3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libplist.3.dylib; path = ../../../../usr/local/lib/libplist.3.dylib; sourceTree = "<group>"; };
@ -121,7 +126,6 @@
878587B41D89D5E6008689F0 /* libpartialzip-1.0.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libpartialzip-1.0.0.dylib"; path = "../../../../usr/local/lib/libpartialzip-1.0.0.dylib"; sourceTree = "<group>"; };
878587B61D89D637008689F0 /* libirecovery.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libirecovery.2.dylib; path = ../../../../usr/local/lib/libirecovery.2.dylib; sourceTree = "<group>"; };
8788A6801EE8426A00138E07 /* libipatcher.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libipatcher.0.dylib; path = ../../../../usr/local/lib/libipatcher.0.dylib; sourceTree = "<group>"; };
8788A6821EE8544000138E07 /* jssy.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = jssy.c; path = external/tsschecker/external/jssy/jssy/jssy.c; sourceTree = "<group>"; };
878E1AC41F73EB3F00B1565B /* libzip.5.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libzip.5.dylib; path = ../../../../usr/local/Cellar/libzip/1.3.0/lib/libzip.5.dylib; sourceTree = "<group>"; };
8799B0B01D89D99D002F4D5F /* futurerestore.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = futurerestore.cpp; sourceTree = "<group>"; };
8799B0B11D89D99D002F4D5F /* futurerestore.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = futurerestore.hpp; sourceTree = "<group>"; };
@ -140,6 +144,7 @@
878E1AC51F73EB3F00B1565B /* libzip.5.dylib in Frameworks */,
878587AD1D89D59E008689F0 /* libz.tbd in Frameworks */,
8788A6811EE8426A00138E07 /* libipatcher.0.dylib in Frameworks */,
8762F344236DF4D900F42FDB /* libimg4tool.0.dylib in Frameworks */,
87F574D01E151F44008D5C4D /* libcrypto.dylib in Frameworks */,
87F574CB1E151E97008D5C4D /* libfragmentzip.0.dylib in Frameworks */,
878587B71D89D637008689F0 /* libirecovery.2.dylib in Frameworks */,
@ -155,7 +160,6 @@
8785873A1D89CFDC008689F0 = {
isa = PBXGroup;
children = (
8788A6821EE8544000138E07 /* jssy.c */,
878587B61D89D637008689F0 /* libirecovery.2.dylib */,
878587B41D89D5E6008689F0 /* libpartialzip-1.0.0.dylib */,
878587B21D89D5D5008689F0 /* libzip.4.dylib */,
@ -181,7 +185,6 @@
878587451D89CFDC008689F0 /* futurerestore */ = {
isa = PBXGroup;
children = (
878587951D89D290008689F0 /* config.h */,
8785874D1D89D1A4008689F0 /* external */,
8799B0B11D89D99D002F4D5F /* futurerestore.hpp */,
8799B0B01D89D99D002F4D5F /* futurerestore.cpp */,
@ -194,7 +197,6 @@
isa = PBXGroup;
children = (
878587961D89D2BA008689F0 /* tsschecker */,
8785878B1D89D1ED008689F0 /* img4tool */,
8785874E1D89D1C1008689F0 /* idevicerestore */,
);
name = external;
@ -248,27 +250,14 @@
path = external/idevicerestore/src;
sourceTree = SOURCE_ROOT;
};
8785878B1D89D1ED008689F0 /* img4tool */ = {
isa = PBXGroup;
children = (
8785878C1D89D1ED008689F0 /* all_img4tool.h */,
8785878F1D89D1ED008689F0 /* img4.h */,
8785878E1D89D1ED008689F0 /* img4.c */,
878587941D89D243008689F0 /* img4tool.h */,
878587901D89D1ED008689F0 /* img4tool.c */,
);
name = img4tool;
path = external/img4tool/img4tool;
sourceTree = SOURCE_ROOT;
};
878587961D89D2BA008689F0 /* tsschecker */ = {
isa = PBXGroup;
children = (
878587971D89D2BA008689F0 /* all_tsschecker.h */,
878587991D89D2BA008689F0 /* download.h */,
878587981D89D2BA008689F0 /* download.c */,
8785879B1D89D2BA008689F0 /* jsmn.h */,
8785879A1D89D2BA008689F0 /* jsmn.c */,
8785879B1D89D2BA008689F0 /* jssy.h */,
8785879A1D89D2BA008689F0 /* jssy.c */,
878587A01D89D2BA008689F0 /* tsschecker.h */,
8785879F1D89D2BA008689F0 /* tsschecker.c */,
);
@ -279,6 +268,7 @@
87F574C21E151CDE008D5C4D /* Frameworks */ = {
isa = PBXGroup;
children = (
8762F343236DF4D900F42FDB /* libimg4tool.0.dylib */,
878E1AC41F73EB3F00B1565B /* libzip.5.dylib */,
8788A6801EE8426A00138E07 /* libipatcher.0.dylib */,
87F574CE1E151F11008D5C4D /* libSystem.tbd */,
@ -300,6 +290,7 @@
8785873F1D89CFDC008689F0 /* Sources */,
878587401D89CFDC008689F0 /* Frameworks */,
878587411D89CFDC008689F0 /* CopyFiles */,
8762F346236DF4D900F42FDB /* Embed Libraries */,
);
buildRules = (
);
@ -329,6 +320,7 @@
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
English,
en,
);
mainGroup = 8785873A1D89CFDC008689F0;
@ -346,7 +338,6 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8788A6831EE8544000138E07 /* jssy.c in Sources */,
8799B0C11D89DB38002F4D5F /* fls.c in Sources */,
8799B0B41D89DAF6002F4D5F /* tss.c in Sources */,
8799B0C01D89DB38002F4D5F /* fdr.c in Sources */,
@ -357,7 +348,6 @@
8799B0C41D89DB55002F4D5F /* mbn.c in Sources */,
8799B0B81D89DAFF002F4D5F /* recovery.c in Sources */,
8799B0B31D89DAE7002F4D5F /* idevicerestore.c in Sources */,
8799B0C81D89E2BD002F4D5F /* img4tool.c in Sources */,
8799B0BB1D89DB12002F4D5F /* download.c in Sources */,
8799B0B71D89DAFF002F4D5F /* normal.c in Sources */,
8799B0C31D89DB4B002F4D5F /* socket.c in Sources */,
@ -369,7 +359,6 @@
8799B0BF1D89DB38002F4D5F /* asr.c in Sources */,
8799B0BE1D89DB27002F4D5F /* restore.c in Sources */,
8799B0CB1D89F796002F4D5F /* tsschecker.c in Sources */,
8799B0C91D89E2C3002F4D5F /* img4.c in Sources */,
8799B0CA1D89E371002F4D5F /* img4.c in Sources */,
8799B0B21D89D99D002F4D5F /* futurerestore.cpp in Sources */,
);
@ -463,6 +452,12 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = YES;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
"IDEVICERESTORE_NOMAIN=1",
"CUSTOM_LOGGING=1",
);
HEADER_SEARCH_PATHS = "";
LIBRARY_SEARCH_PATHS = (
/usr/local/lib,
@ -473,7 +468,7 @@
);
OTHER_CFLAGS = "-DHAVE_LIBIPATCHER";
PRODUCT_NAME = "$(TARGET_NAME)";
USER_HEADER_SEARCH_PATHS = "/usr/local/opt/openssl/include /usr/local/include $(SRCROOT)/external/tsschecker/external/jssy/jssy";
USER_HEADER_SEARCH_PATHS = "/usr/local/opt/openssl/include /usr/local/include $(SRCROOT)/external/libgeneral/include $(SRCROOT)/external/tsschecker/external/jssy/jssy $(SRCROOT)/external/idevicerestore/src";
};
name = Debug;
};
@ -491,7 +486,7 @@
);
OTHER_CFLAGS = "-DHAVE_LIBIPATCHER";
PRODUCT_NAME = "$(TARGET_NAME)";
USER_HEADER_SEARCH_PATHS = "/usr/local/opt/openssl/include /usr/local/include $(SRCROOT)/external/tsschecker/external/jssy/jssy";
USER_HEADER_SEARCH_PATHS = "/usr/local/opt/openssl/include /usr/local/include $(SRCROOT)/external/libgeneral/include $(SRCROOT)/external/tsschecker/external/jssy/jssy $(SRCROOT)/external/idevicerestore/src";
};
name = Release;
};

View File

@ -1,12 +1,12 @@
AM_CFLAGS = $(libplist_CFLAGS) $(libzip_CFLAGS) $(libimobiledevice_CFLAGS) $(libfragmentzip_CFLAGS) $(libirecovery_CFLAGS) -I$(top_srcdir)/external/tsschecker/external/jssy/jssy -I$(top_srcdir)/external/tsschecker/tsschecker -I$(top_srcdir)/external/img4tool/img4tool -I$(top_srcdir)/external/idevicerestore/src -std=c++11
AM_LDFLAGS = $(libplist_LIBS) $(libzip_LIBS) $(libimobiledevice_LIBS) $(libfragmentzip_LIBS) $(libirecovery_LIBS)
AM_CFLAGS = -I$(top_srcdir)/external/libgeneral/include -I$(top_srcdir)/external/tsschecker/external/jssy/jssy -I$(top_srcdir)/external/tsschecker/tsschecker -I$(top_srcdir)/external/idevicerestore/src $(libplist_CFLAGS) $(libzip_CFLAGS) $(libimobiledevice_CFLAGS) $(libfragmentzip_CFLAGS) $(libirecovery_CFLAGS) $(libimg4tool_CFLAGS)
AM_LDFLAGS = $(libplist_LIBS) $(libzip_LIBS) $(libimobiledevice_LIBS) $(libfragmentzip_LIBS) $(libirecovery_LIBS) $(libimg4tool_LIBS)
if HAVE_LIBIPATCHER
AM_LDFLAGS += $(libipatcher_LIBS)
AM_CFLAGS += $(libipatcher_CFLAGS) -DHAVE_LIBIPATCHER
AM_CFLAGS += $(libipatcher_CFLAGS)
endif
bin_PROGRAMS = futurerestore
futurerestore_CXXFLAGS = $(AM_CFLAGS)
futurerestore_LDADD = $(top_srcdir)/external/idevicerestore/src/libidevicerestore.la $(top_srcdir)/external/img4tool/img4tool/libimg4tool.la $(top_srcdir)/external/tsschecker/tsschecker/libtsschecker.la $(top_srcdir)/external/tsschecker/tsschecker/libjssy.a $(AM_LDFLAGS)
futurerestore_LDADD = $(top_srcdir)/external/idevicerestore/src/libidevicerestore.la $(top_srcdir)/external/tsschecker/tsschecker/libtsschecker.la $(top_srcdir)/external/tsschecker/tsschecker/libjssy.a $(AM_LDFLAGS)
futurerestore_SOURCES = futurerestore.cpp main.cpp

View File

@ -1,28 +0,0 @@
//
// config.h
// futurerestore
//
// Created by tihmstar on 04.09.16.
// Copyright © 2016 tihmstar. All rights reserved.
//
#ifndef config_h
#define config_h
#define IMG4TOOL_NOMAIN
#define NO_DEBUG_PLIST
#define NO_GENERATE_GUID
//idevicerestore config
#define IDEVICERESTORE_NOMAIN
#define PACKAGE_URL "http://libimobiledevice.org"
#undef VERSION_COMMIT_SHA
#undef VERSION_COMMIT_COUNT
#define VERSION_COMMIT_COUNT_FUTURERESTORE "undefined version number"
#define VERSION_COMMIT_SHA_FUTURERESTORE "undefined version commit"
#endif /* config_h */

File diff suppressed because it is too large Load Diff

View File

@ -9,7 +9,6 @@
#ifndef futurerestore_hpp
#define futurerestore_hpp
#include "config.h"
#include <stdio.h>
#include <functional>
#include <vector>
@ -42,7 +41,7 @@ class futurerestore {
char *_ibootBuild = NULL;
bool _didInit = false;
vector<plist_t> _aptickets;
vector<char *>_im4ms;
vector<pair<char *, size_t>>_im4ms;
int _foundnonce = -1;
bool _isUpdateInstall = false;
bool _isPwnDfu = false;
@ -78,7 +77,7 @@ public:
char *getiBootBuild();
plist_t nonceMatchesApTickets();
const char *nonceMatchesIM4Ms();
std::pair<const char *,size_t> nonceMatchesIM4Ms();
void loadFirmwareTokens();
const char *getDeviceModelNoCopy();
@ -109,11 +108,9 @@ public:
~futurerestore();
static const char *getRamdiskHashFromSCAB(const char* scab, size_t *hashSize);
static char *getNonceFromSCAB(const char* scab, size_t *nonceSize);
static uint64_t getEcidFromSCAB(const char* scab);
static uint64_t getEcidFromIM4M(const char* im4m);
static char *getNonceFromAPTicket(const char* apticketPath);
static std::pair<const char *,size_t> getRamdiskHashFromSCAB(const char* scab, size_t scabSize);
static std::pair<const char *,size_t> getNonceFromSCAB(const char* scab, size_t scabSize);
static uint64_t getEcidFromSCAB(const char* scab, size_t scabSize);
static plist_t loadPlistFromFile(const char *path);
static void saveStringToFile(const char *str, const char *path);
static char *getPathOfElementInManifest(const char *element, const char *manifeststr, const char *model, int isUpdateInstall);

View File

@ -6,21 +6,21 @@
// Copyright © 2016 tihmstar. All rights reserved.
//
#include <libgeneral/macros.h>
#include <iostream>
#include <getopt.h>
#include <string.h>
#include <unistd.h>
#include <vector>
#include "futurerestore.hpp"
#include "all_tsschecker.h"
#include "tsschecker.h"
#ifdef HAVE_LIBIPATCHER
#include <libipatcher/libipatcher.hpp>
#endif
#include "config.h"
#define safeFree(buf) if (buf) free(buf), buf = NULL
#define safePlistFree(buf) if (buf) plist_free(buf), buf = NULL
extern "C"{
#include "tsschecker.h"
};
static struct option longopts[] = {
{ "apticket", required_argument, NULL, 't' },
@ -72,14 +72,15 @@ void cmd_help(){
}
using namespace std;
int main(int argc, const char * argv[]) {
#define reterror(code,a ...) do {error(a); err = code; goto error;} while (0)
using namespace tihmstar;
int main_r(int argc, const char * argv[]) {
int err=0;
int res = -1;
printf("Version: " VERSION_COMMIT_SHA_FUTURERESTORE" - " VERSION_COMMIT_COUNT_FUTURERESTORE"\n");
printf("Version: " VERSION_COMMIT_SHA " - " VERSION_COMMIT_COUNT "\n");
#ifdef HAVE_LIBIPATCHER
printf("%s\n",libipatcher::version().c_str());
printf("Odysseus Support: yes\n");
printf("Odysseus 64bit support: %s\n",(libipatcher::has64bitSupport() ? "yes" : "no"));
#else
printf("Odysseus Support: no\n");
#endif
@ -176,12 +177,10 @@ int main(int argc, const char * argv[]) {
}
futurerestore client(flags & FLAG_UPDATE, flags & FLAG_IS_PWN_DFU);
if (!client.init()) reterror(-3,"can't init, no device found\n");
retassure(client.init(),"can't init, no device found\n");
printf("futurerestore init done\n");
if (bootargs && !(flags & FLAG_IS_PWN_DFU)) {
reterror(-2,"--just-boot required --use-pwndfu\n");
}
retassure(!bootargs || (flags & FLAG_IS_PWN_DFU),"--just-boot requires --use-pwndfu\n");
try {
if (apticketPaths.size()) client.loadAPTickets(apticketPaths);
@ -220,7 +219,7 @@ int main(int argc, const char * argv[]) {
versVals.basebandMode = kBasebandModeWithoutBaseband;
if (!client.is32bit() && !(isSepManifestSigned = isManifestSignedForDevice(client.sepManifestPath(), &devVals, &versVals))){
reterror(-3,"sep firmware isn't signed\n");
reterror("sep firmware isn't signed\n");
}
if (flags & FLAG_NO_BASEBAND){
@ -249,7 +248,7 @@ int main(int argc, const char * argv[]) {
printf("[WARNING] using tsschecker's fallback to get BasebandGoldCertID. This might result in invalid baseband signing status information\n");
}
if (!(isBasebandSigned = isManifestSignedForDevice(client.basebandManifestPath(), &devVals, &versVals))) {
reterror(-3,"baseband firmware isn't signed\n");
reterror("baseband firmware isn't signed\n");
}
}
}
@ -280,3 +279,17 @@ error:
return err;
#undef reterror
}
int main(int argc, const char * argv[]) {
#ifdef DEBUG
return main_r(argc, argv);
#else
try {
return main_r(argc, argv);
} catch (tihmstar::exception &e) {
printf("%s: failed with exception:\n",PACKAGE_NAME);
e.dump();
return e.code();
}
#endif
}

View File

@ -1,3 +0,0 @@
#!/bin/bash
sed -i '.bak' "s/.*define VERSION_COMMIT_COUNT_FUTURERESTORE.*/#define VERSION_COMMIT_COUNT_FUTURERESTORE \"$(git rev-list --count HEAD)\"/" ./futurerestore/config.h 2>/dev/null || sed -i "s/.*VERSION_COMMIT_COUNT_FUTURERESTORE.*/#define VERSION_COMMIT_COUNT_FUTURERESTORE \"$(git rev-list --count HEAD)\"/" ./futurerestore/config.h 2>/dev/null
sed -i '.bak' "s/.*define VERSION_COMMIT_SHA_FUTURERESTORE.*/#define VERSION_COMMIT_SHA_FUTURERESTORE \"$(git rev-parse HEAD)\"/" ./futurerestore/config.h 2>/dev/null || sed -i "s/.*VERSION_COMMIT_SHA_FUTURERESTORE.*/#define VERSION_COMMIT_SHA_FUTURERESTORE \"$(git rev-parse HEAD)\"/" ./futurerestore/config.h 2>/dev/null