mirror of
https://github.com/tihmstar/futurerestore.git
synced 2024-12-21 17:25:30 +00:00
added support for odysseus 64bit (warning untested!)
This commit is contained in:
parent
c0fd39374b
commit
292fca0e02
3
.gitmodules
vendored
3
.gitmodules
vendored
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
44
configure.ac
44
configure.ac
|
@ -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
1
external/libgeneral
vendored
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit e423f64d9b535c9a963f2ed3ed0fbf300c1ec24c
|
|
@ -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;
|
||||
};
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
Loading…
Reference in a new issue