76 lines
2.5 KiB
Bash
Executable File
76 lines
2.5 KiB
Bash
Executable File
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
|