set -e clear VERSION=${1:-14} OUT=./out LOGIC=1 make -C ../../macho-go mkdir -p $OUT echo "using mach-o version $VERSION" if [[ $VERSION -ge 14 ]] then echo "Resulting binary uses MODERN symbol resolver" else echo "Resulting binary uses LEGACY symbol resolver" fi cat <<'fly' ______ _\ _~-\___ = = ==(____AA____D \_____\___________________,-~~~~~~~`-.._ / o O o o o o O O o o o o o o O o |\_ `~-.__ ___..----.. ) `---~~\___________/------------````` = ===(_________D fly # this is a joke for those who knows # https://www.blackhat.com/presentations/bh-dc-09/Iozzo/BlackHat-DC-09-Iozzo-let-your-mach0-fly-whitepaper.pdf echo "make your Mach-O fly" if [[ $LOGIC -eq 0 ]] then clang-format -i -style=llvm *.cc elif [[ $LOGIC -eq 1 ]] then # build test binaries clang -mmacosx-version-min=$VERSION -o $OUT/c_code tests/c_code.c clang -fobjc-arc -ObjC -mmacosx-version-min=$VERSION -o $OUT/objc_code tests/objc_code.m swiftc -o $OUT/swift_code tests/swift_code.swift # c program ../../macho-go/bin/ios-wrapper pepe -o $OUT/c_code_fixed -b $OUT/c_code.bcell -l $OUT/librestore_c.dylib --remove-strings $OUT/c_code ../../macho-go/bin/ios-wrapper bcell2header -b $OUT/c_code.bcell -o $OUT/restore.h clang++ -mmacosx-version-min=$VERSION -o $OUT/librestore_c.dylib -shared -Wl,-reexport_library restore.cc # objc program # ../../macho-go/bin/ios-wrapper pepe -o $OUT/objc_code_fixed -b $OUT/objc_code.bcell -l $OUT/librestore_objc.dylib --remove-strings $OUT/objc_code # ../../macho-go/bin/ios-wrapper bcell2header -b $OUT/c_code.bcell -o $OUT/restore.h # clang++ -mmacosx-version-min=$VERSION -o $OUT/librestore_objc.dylib -shared -Wl,-reexport_library restore.cc # swift program # ../../macho-go/bin/ios-wrapper pepe -o $OUT/swift_code_fixed -b $OUT/swift_code.bcell -l $OUT/librestore_swift.dylib --remove-strings $OUT/swift_code # ../../macho-go/bin/ios-wrapper bcell2header -b $OUT/c_code.bcell -o $OUT/restore.h # clang++ -mmacosx-version-min=$VERSION -o $OUT/librestore_swift.dylib -shared -Wl,-reexport_library restore.cc # executable chmod +x $OUT/c_code_fixed # chmod +x $OUT/objc_code_fixed # chmod +x $OUT/swift_code_fixed # resign codesign --force --deep -s - $OUT/c_code_fixed # codesign --force --deep -s - $OUT/objc_code_fixed # codesign --force --deep -s - $OUT/swift_code_fixed # run $OUT/c_code_fixed # $OUT/objc_code_fixed # $OUT/swift_code_fixed fi