Skip to content

Instantly share code, notes, and snippets.

@0xallie
Last active January 16, 2023 14:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save 0xallie/e71409f0d59c01f4ae40409c3b51bd9e to your computer and use it in GitHub Desktop.
Save 0xallie/e71409f0d59c01f4ae40409c3b51bd9e to your computer and use it in GitHub Desktop.
FROM alpine AS base
ENV CONF_ARGS="--disable-shared" \
CMAKE_ARGS="-DBUILD_SHARED_LIBS=0" \
CC="clang" \
CFLAGS="-fPIC" \
CXX="clang++" \
CXXFLAGS="-fPIC" \
LD="ld.lld" \
LDFLAGS="-fuse-ld=/usr/bin/ld.lld -static -static-libgcc -Wl,--allow-multiple-definition -Wl,--no-dynamic-linker -Wl,-static"
RUN apk add --no-cache autoconf automake bash clang15 cmake coreutils gcc g++ git libtool lld m4 make musl musl-dev openssl-dev openssl-libs-static pkgconf && \
ln -sf /bin/bash /bin/sh
FROM base AS libgeneral
WORKDIR /tmp/build/libgeneral
RUN git clone --single-branch https://github.com/tihmstar/libgeneral . && \
./autogen.sh $CONF_ARGS && \
make -j$(nproc) && \
make install && \
rm -rf /tmp/build
FROM base AS libinsn
WORKDIR /tmp/build/libinsn
COPY --from=libgeneral /usr/local/ /usr/local/
RUN git clone --single-branch https://github.com/tihmstar/libinsn . && \
./autogen.sh $CONF_ARGS && \
make -j$(nproc) && \
make install && \
rm -rf /tmp/build
FROM base AS cctools
WORKDIR /tmp/build/cctools
RUN wget https://opensource.apple.com/tarballs/cctools/cctools-927.0.2.tar.gz && \
tar -xvzf cctools-927.0.2.tar.gz && \
sed -i 's_#include_//_g' cctools-cctools-927.0.2/include/mach-o/loader.h && \
sed -i -e 's=<stdint.h>=\n#include <stdint.h>\ntypedef int integer_t;\ntypedef integer_t cpu_type_t;\ntypedef integer_t cpu_subtype_t;\ntypedef integer_t cpu_threadtype_t;\ntypedef int vm_prot_t;=g' cctools-cctools-927.0.2/include/mach-o/loader.h && \
mkdir -p /usr/local/include && \
cp -r cctools-cctools-927.0.2/include/* /usr/local/include/ && \
rm -rf tmp cctools-927.0.2.tar.gz
FROM base AS liboffsetfinder64
WORKDIR /tmp/build/liboffsetfinder64
COPY --from=cctools /usr/local/ /usr/local/
COPY --from=libgeneral /usr/local/ /usr/local/
COPY --from=libinsn /usr/local/ /usr/local/
RUN git clone --single-branch https://github.com/Cryptiiiic/liboffsetfinder64 . && \
cmake . $CMAKE_ARGS && \
sed -i -r 's/_entrypoint\(NULL\)/_entrypoint(0)/' src/patchfinder64.cpp && \
sed -i -r 's/_base\(NULL\)/_base(0)/' src/patchfinder64.cpp && \
make -j$(nproc) && \
make install && \
rm -rf /tmp/build
FROM base AS lzfse
WORKDIR /tmp/build/lzfse
RUN git clone --depth=1 https://github.com/lzfse/lzfse . && \
cmake . $CMAKE_ARGS && \
make -j$(nproc) && \
make install && \
rm -rf /tmp/build
FROM base AS libplist
WORKDIR /tmp/build/libplist
RUN git clone --depth=1 https://github.com/libimobiledevice/libplist.git . && \
./autogen.sh $CONF_ARGS --without-cython && \
make -j$(nproc) && \
make install && \
rm -rf /tmp/build
FROM base AS img4tool
WORKDIR /tmp/build/img4tool
COPY --from=libgeneral /usr/local/ /usr/local/
COPY --from=libplist /usr/local/include/ /usr/local/include/
COPY --from=libplist /usr/local/lib/ /usr/local/lib/
COPY --from=lzfse /usr/local/include/ /usr/local/include/
COPY --from=lzfse /usr/local/lib/ /usr/local/lib/
ENV LDFLAGS="${LDFLAGS} -L/usr/local/lib"
RUN git clone --single-branch https://github.com/tihmstar/img4tool . && \
ls -l /usr/local/include/ /usr/local/lib/ && \
./autogen.sh $CONF_ARGS && \
make -j$(nproc) && \
make install && \
rm -rf /tmp/build
FROM base AS iboot64patcher
WORKDIR /tmp/build/iboot64patcher
COPY --from=img4tool /usr/local/include/ /usr/local/include/
COPY --from=img4tool /usr/local/lib/ /usr/local/lib/
COPY --from=libgeneral /usr/local/ /usr/local/
COPY --from=libinsn /usr/local/ /usr/local/
COPY --from=libgeneral /usr/local/ /usr/local/
COPY --from=libinsn /usr/local/ /usr/local/
COPY --from=liboffsetfinder64 /usr/local/ /usr/local/
RUN git clone --depth=1 https://github.com/Cryptiiiic/iBoot64Patcher . && \
sed -i 's/futurerestore/iBoot64Patcher/g' CMakeLists.txt && \
cmake . $CMAKE_ARGS && \
make -j$(nproc) && \
make install && \
mv /usr/local/iBoot64Patcher /usr/local/bin/ && \
rm -rf /tmp/build
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment