From c1662728c3a87abda8aa737a334539d4189ab18b Mon Sep 17 00:00:00 2001 From: 1Conan <7620342+1Conan@users.noreply.github.com> Date: Fri, 5 Nov 2021 01:47:21 +0800 Subject: Cleanup and switch to a Makefile (#7) --- .github/workflows/build.yml | 13 ++-- .gitignore | 7 -- .gitmodules | 3 - Makefile | 40 +++++++++++ control | 12 ---- control.sh | 5 -- deb.sh | 10 --- docs/ldid.1 | 164 ++++++++++++++++++++++++++++++++++++++++++ docs/ldid.1.zh_TW | 168 ++++++++++++++++++++++++++++++++++++++++++++ ios.sh | 2 - ldid.1 | 164 ------------------------------------------ ldid.1.zh_TW | 168 -------------------------------------------- libplist | 1 - make.sh | 90 ------------------------ plist.sh | 2 - sha1.h | 64 ----------------- sysroot.sh | 31 -------- version.sh | 2 - 18 files changed, 379 insertions(+), 567 deletions(-) delete mode 100644 .gitmodules create mode 100644 Makefile delete mode 100644 control delete mode 100755 control.sh delete mode 100755 deb.sh create mode 100644 docs/ldid.1 create mode 100644 docs/ldid.1.zh_TW delete mode 100755 ios.sh delete mode 100644 ldid.1 delete mode 100644 ldid.1.zh_TW delete mode 160000 libplist delete mode 100755 make.sh delete mode 100755 plist.sh delete mode 100644 sha1.h delete mode 100755 sysroot.sh delete mode 100755 version.sh diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 37252dd..1fe67fb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -109,9 +109,9 @@ jobs: - name: build run: | export LDID_VERSION=$(echo "$(git describe --tags --abbrev=0)") - ${CC} ${CFLAGS} -c -o lookup2.o lookup2.c - ${CXX} ${CFLAGS} -c -o ldid.o ldid.cpp -std=c++11 -DLDID_VERSION=\"${LDID_VERSION}\" - ${CXX} ${CFLAGS} -std=c++11 ldid.o lookup2.o ${LIBPLIST_LIB} ${LIBCRYPTO_LIB} -o ldid + make -j$(nproc) \ + VERSION="${LDID_VERSION}" \ + LIBS="${LIBPLIST_LIB} ${LIBCRYPTO_LIB}" ${TRIPLE}-strip ldid - uses: actions/upload-artifact@v1 @@ -207,9 +207,10 @@ jobs: - name: build run: | export LDID_VERSION=$(echo "$(git describe --tags --abbrev=0)") - ${CC} ${CFLAGS} -flto=thin -Os -c -o lookup2.o lookup2.c - ${CXX} ${CFLAGS} -flto=thin -Os -c -o ldid.o ldid.cpp -std=c++11 -DLDID_VERSION=\"${LDID_VERSION}\" - ${CXX} ${LIBPLIST_LIB} ${LIBCRYPTO_LIB} -flto=thin -Os -std=c++11 ldid.o lookup2.o -o ldid + make -j$(sysctl -n hw.ncpu) \ + CFLAGS="${CFLAGS} -flto=thin" \ + VERSION="${LDID_VERSION}" \ + LIBS="${LIBPLIST_LIB} ${LIBCRYPTO_LIB}" strip ldid - uses: actions/upload-artifact@v1 diff --git a/.gitignore b/.gitignore index edf9bc5..994aaa8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,2 @@ -ios -out ldid -ldid.deb -debs *.o -_ -sysroot32 -sysroot64 diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 5b41a81..0000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "libplist"] - path = libplist - url = https://github.com/libimobiledevice/libplist.git diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..6efccc4 --- /dev/null +++ b/Makefile @@ -0,0 +1,40 @@ +VERSION ?= 2.1.5 + +CC ?= cc +CXX ?= c++ +INSTALL ?= install +LN ?= ln + +CFLAGS ?= -O2 -pipe +CXXFLAGS ?= $(CFLAGS) +LDFLAGS ?= + +PREFIX ?= /usr/local + +BINDIR ?= $(PREFIX)/bin +MANDIR ?= $(PREFIX)/share/man + +SRC := $(wildcard *.c) $(wildcard *.cpp) +LIBS ?= -lcrypto -lplist-2.0 + +all: ldid + +%.c.o: %.c + $(CC) -c $(CFLAGS) -I. $< -o $@ + +%.cpp.o: %.cpp + $(CXX) -c -std=c++11 $(CXXFLAGS) -I. -DLDID_VERSION=\"$(VERSION)\" $< -o $@ + +ldid: $(SRC:%=%.o) + $(CXX) $^ $(LDFLAGS) $(LIBS) -o ldid + +install: all + $(INSTALL) -D -m755 ldid $(DESTDIR)$(BINDIR)/ldid + $(LN) -sf ldid $(DESTDIR)$(BINDIR)/ldid2 + $(INSTALL) -D -m644 docs/ldid.1 $(DESTDIR)$(MANDIR)/man1/ldid.1 + $(INSTALL) -D -m644 docs/ldid.1.zh_TW $(DESTDIR)$(MANDIR)/zh_TW/man1/ldid.1 + +clean: + rm -rf ldid *.o + +.PHONY: all clean install diff --git a/control b/control deleted file mode 100644 index 73136be..0000000 --- a/control +++ /dev/null @@ -1,12 +0,0 @@ -Package: ldid -Priority: optional -Section: Development -Maintainer: Jay Freeman (saurik) -Architecture: iphoneos-arm -Version: -Description: pseudo-codesign Mach-O files -Name: Link Identity Editor -Author: Jay Freeman (saurik) -Depiction: http://cydia.saurik.com/info/ldid/ -Depends: libplist (>= 2.0.0), openssl -Tag: purpose::console, role::developer diff --git a/control.sh b/control.sh deleted file mode 100755 index 7a11d56..0000000 --- a/control.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -dir=$1 -dir=${dir:=_} -sed -e "s@^\(Version:.*\)@\1$(./version.sh)@" control -echo "Installed-Size: $(du -s "${dir}" | cut -f 1)" diff --git a/deb.sh b/deb.sh deleted file mode 100755 index 3fb31a5..0000000 --- a/deb.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -rm -rf _ -mkdir -p _/usr/bin -cp -a ios/ldid _/usr/bin/ldid -mkdir -p _/DEBIAN -./control.sh _ >_/DEBIAN/control -mkdir -p debs -ln -sf debs/ldid_$(./version.sh)_iphoneos-arm.deb ldid.deb -dpkg-deb -b _ ldid.deb -readlink ldid.deb diff --git a/docs/ldid.1 b/docs/ldid.1 new file mode 100644 index 0000000..fdab9ed --- /dev/null +++ b/docs/ldid.1 @@ -0,0 +1,164 @@ +.\"- +.\" Copyright (c) 2021 ProcursusTeam +.\" SPDX-License-Identifier: AGPL-3.0-or-later +.\" +.Dd October 8, 2021 +.Dt LDID 1 +.Os +.Sh NAME +.Nm ldid +.Nd Link Identity Editor +.Sh SYNOPSIS +.Nm +.Op Fl A Ns Ar cputype : Ns Ar subtype +.Op Fl a +.Op Fl C Ns Op Ar adhoc | Ar enforcement | Ar expires | Ar hard | Ar host | Ar kill | Ar library-validation | Ar restrict | Ar runtime +.Op Fl D +.Op Fl d +.Op Fl e +.Op Fl h +.Op Fl K Ns Ar key.p12 Op Fl U Ns Ar password +.Op Fl M +.Op Fl P +.Op Fl q +.Op Fl r | Fl S Ns Ar file.xml | Fl s +.Op Fl T Ns Ar timestamp +.Op Fl u +.Ar +.Sh DESCRIPTION +.Nm +adds SHA1 and SHA256 hashes to a Mach-O file so that they can be run on a system that has validation but not signature verification. +.Bl -tag -width -indent +.It Fl a +Print the CPU types and subtypes in hexadecimal. +.It Fl A Ns Ar cputype : Ns Ar subtype +When used with +.Fl a , Fl D , Fl e , Fl h , Fl q , +or +.Fl u , +only act on the slice specified by +.Ar cputype +and +.Ar subtype . +.Ar cputype +and +.Ar subtype +should both be integers. +.It Fl C Ns Op Ar adhoc | Ar enforcement | Ar expires | Ar hard | Ar host | Ar kill | Ar library-validation | Ar restrict | Ar runtime +Specify the option flags to embed in the code signature. +See +.Xr codesign 1 +for details about these options. +.It Fl D +Reset the cryptid. +.It Fl d +Print the cryptid in the binaries if it exists. +For compatibility reasons it also acts as +.Fl h , +but this will be removed in the future. +.It Fl e +Print the entitlements in each slice, or the slice specified by +.Fl A , +to +.Ar stdout . +.It Fl h +Print information about the signature, such as hash types, flags, CDHash, and CodeDirectory version to +.Ar stdout . +.It Fl K Ns Ar key.p12 +Sign using the identity in +.Ar key.p12 . +This will give the binary a valid signature so that it can be run on a system with signature validation. +If +.Ar key.p12 +has a password you will be prompted for it, or you can specify from the command line with +.Fl U . +.It Fl M +When used with +.Fl S , +merge the new and existing entitlements instead of replacing the existing entitlements, this is useful for adding a few specific entitlements to a handful of binaries. +.It Fl P +Mark the Mach-O as a platform binary. +.It Fl Q Ns Ar file +Embed the requirements found in +.Ar file . +.It Fl q +Print embedded requirements of the binaries. +.It Fl r +Remove the signature from the Mach-O. +.It Fl S Ns Op Ar file.xml +Pseudo-sign the Mach-O binaries. +If +.Ar file.xml +is specified then the entitlements found in +.Ar file.xml +will be embedded in the Mach-O. +.It Fl s +Resign the Mach-O binaries while keeping the existing entitlements. +.It Fl T Ns Ar timestamp +When signing a dylib, set the timestamp to +.Ar timestamp . +.Ar timestamp +should be an UNIX timestamp in seconds, if +.Ar timestamp +is a single dash +.Pq Sq Fl , +the timestamp will be set to a hash of the Mach-O header. +.It Fl U Ns Ar password +Use +.Ar password +as the password for the p12 certificate instead of prompting. +.It Fl u +If the binary was linked against UIKit, then print the UIKit version that the Mach-O binaries was linked against. +.El +.Sh EXAMPLES +The command: +.Pp +.Dl "ldid -S file" +.Pp +will fakesign +.Ar file +with no entitlements. +.Pp +The command: +.Pp +.Dl "ldid -Cadhoc -K/path/to/key.p12 -Sent.xml file" +.Pp +will sign +.Ar file +using the key in +.Ar /path/to/key.p12 +with the entitlements found in +.Ar ent.xml , +and mark it as an adhoc signature. +.Pp +The command: +.Pp +.Dl "ldid -Sent.xml -M file" +.Pp +will add the entitlements in +.Ar ent.xml +to the entitlements already in +.Ar file . +.Pp +The command: +.Pp +.Dl "ldid -e file > ent.xml" +.Pp +will save the entitlements found in each slice of +.Ar file +to +.Ar ent.xml . +.Sh SEE ALSO +.Xr codesign 1 +.Sh HISTORY +The +.Nm +utility was written by +.An Jay \*qSaurik\*q Freeman . +iPhoneOS 1.2.0 and 2.0 support was added on April 6, 2008. +.Fl S +was added on June 13, 2008. +SHA256 support was added on August 25, 2016, fixing iOS 11 support. +iOS 14 support was added on July 31, 2020 by +.An Kabir Oberai . +iOS 15 support was added on June 11, 2021. diff --git a/docs/ldid.1.zh_TW b/docs/ldid.1.zh_TW new file mode 100644 index 0000000..257b4b1 --- /dev/null +++ b/docs/ldid.1.zh_TW @@ -0,0 +1,168 @@ +.\"- +.\" Copyright (c) 2021 ProcursusTeam +.\" SPDX-License-Identifier: AGPL-3.0-or-later +.\" +.Dd October 8, 2021 +.Dt LDID 1 +.Os +.Sh 名稱 +.Nm ldid +.Nd 鏈接身份編輯器 +.Sh 語法 +.Nm +.Op Fl A Ns Ar cputype : Ns Ar subtype +.Op Fl a +.Op Fl C Ns Op Ar adhoc | Ar enforcement | Ar expires | Ar hard | Ar host | Ar kill | Ar library-validation | Ar restrict | Ar runtime +.Op Fl D +.Op Fl d +.Op Fl e +.Op Fl h +.Op Fl K Ns Ar key.p12 Op Fl U Ns Ar password +.Op Fl M +.Op Fl P +.Op Fl q +.Op Fl r | Fl S Ns Ar 檔案.xml | Fl s +.Op Fl T Ns Ar timestamp +.Op Fl u +.Ar +.Sh 描述 +.Nm +把SHA1和SHA256雜湊值加入到Mach-O檔案中,讓它們能在有驗證但沒有簽署驗證的系統上運行。 +.Bl -tag -width -indent +.It Fl a +以十六進制印出處理器類型和亞類型。 +.It Fl A Ns Ar cputype : Ns Ar subtype +當和 +.Fl a , Fl D , Fl e , Fl h , Fl q , +或 +.Fl u , +一起被使用時,只作用在被 +.Ar cputype +和 +.Ar subtype . +.Ar cputype +和 +.Ar subtype +指定的部分。它們都應該是整數。 +.It Fl C Ns Op Ar adhoc | Ar enforcement | Ar expires | Ar hard | Ar host | Ar kill | Ar library-validation | Ar restrict | Ar runtime +設定要在檔案中包含的程式碼簽署選項。 +請看 +.Xr codesign 1 +來獲得關於這些選項的更多資訊。 +.It Fl D +重設加密碼 (cryptid)。 +.It Fl d +輸出在二進位檔案中的加密碼。 +由於兼容性原因,這像 +.Fl h , +但在將來這會被移除。 +.It Fl e +把每一部分的權限印出, 或印出 +.Fl A , +所指定的部分的權限 +.Ar 到標準輸出。 +.It Fl h +印出關於簽署的資訊,包括雜湊值的類型,選項,CDHash, 和 CodeDirectory 版本到 +.Ar 標準輸出。 . +.It Fl K Ns Ar key.p12 +用在 +.Ar key.p12 . +的身份簽署。這會給二進位檔案有一個有效的簽署,令它能夠在有簽署驗證的系統上運行。 +如果 +.Ar key.p12 +有密碼的話,你會被詢問。你也可以用 +.Fl U . +.Ar 選項來提供密碼。 . +.It Fl M +當和 +.Fl S , +一起使用時,和現有的權限合併而不是取代它。 這在加入權限時有用。 +.It Fl P +將這個Mach-O二進位檔案標示為系統二進位檔案。 +.It Fl Q Ns Ar 檔案 +把需求嵌入到 +.Ar 檔案 . +中。 +.It Fl q +印出被嵌入在二進位檔案中的需求。 +.It Fl r +從Mach-O檔案中刪除簽署。 +.It Fl S Ns Op Ar 檔案.xml +偽簽署Mach-O檔案。 +如果提供了 +.Ar 檔案.xml +那麼在 +.Ar 檔案.xml +中的權限會被嵌入到Mach-O中。 +.It Fl s +重新簽署Mach-O檔案但保留現有權限。 +.It Fl T Ns Ar 時間印章 +當簽署一個動態鏈結函式庫時,把時間印章設定為 +.Ar 時間印章 . +.Ar 時間印章 +應該是一個以秒作為單位的UNIX時間印章,如果 +.Ar +是一個連字號的話 +.Pq Sq Fl , +時間印章會被設定為Mach-O頭中的時間印章。 +.It Fl U Ns Ar 密碼 +使用 +.Ar 密碼 +作為p12證書的密碼,而不是詢問。 +.It Fl u +如果Mach-O檔案有和UIKit鏈結,印出被鏈結的UIKit版本。 +.El +.Sh 例子 +指令: +.Pp +.Dl "ldid -S 檔案" +.Pp +會偽簽署 +.Ar 檔案 +而且不嵌入任何權限。 +.Pp +指令: +.Pp +.Dl "ldid -Cadhoc -K/path/to/key.p12 -Sent.xml 檔案" +.Pp +會使用 +.Ar /path/to/key.p12 +中的私錀來簽署 +.Ar 檔案 +也會使用在 +.Ar ent.xml , +中的權限並把簽署標示為特別用途 (adhoc) 簽署。. +.Pp +指令: +.Pp +.Dl "ldid -Sent.xml -M 檔案" +.Pp +會把 +.Ar ent.xml +中的權限加入到已經在 +.Ar 檔案 . +中的權限。 +.Pp +指令: +.Pp +.Dl "ldid -e 檔案 > ent.xml" +.Pp +會把在 +.Ar 檔案 +中每一部分的權限儲存到 +.Ar ent.xml . +.Sh 另見 +.Xr codesign 1 +.Sh 歷史 +這個 +.Nm +工具程式是由 +.An Jay \*qSaurik\*q Freeman . 所編寫的。 +對iPhoneOS 1.2.0 和 2.0 的支援在2008年4月6號被加入。 +.Fl S +在2008年6月13日被加入。. +SHA256 支援在2016年8月25日被加入,修正iOS 11支援。 +iOS 14支援在2020年7月31日由 +.An Kabir Oberai . +加入。 +iOS 15支援在2021年6月11日加入。 diff --git a/ios.sh b/ios.sh deleted file mode 100755 index f4c112c..0000000 --- a/ios.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -./make.sh true diff --git a/ldid.1 b/ldid.1 deleted file mode 100644 index fdab9ed..0000000 --- a/ldid.1 +++ /dev/null @@ -1,164 +0,0 @@ -.\"- -.\" Copyright (c) 2021 ProcursusTeam -.\" SPDX-License-Identifier: AGPL-3.0-or-later -.\" -.Dd October 8, 2021 -.Dt LDID 1 -.Os -.Sh NAME -.Nm ldid -.Nd Link Identity Editor -.Sh SYNOPSIS -.Nm -.Op Fl A Ns Ar cputype : Ns Ar subtype -.Op Fl a -.Op Fl C Ns Op Ar adhoc | Ar enforcement | Ar expires | Ar hard | Ar host | Ar kill | Ar library-validation | Ar restrict | Ar runtime -.Op Fl D -.Op Fl d -.Op Fl e -.Op Fl h -.Op Fl K Ns Ar key.p12 Op Fl U Ns Ar password -.Op Fl M -.Op Fl P -.Op Fl q -.Op Fl r | Fl S Ns Ar file.xml | Fl s -.Op Fl T Ns Ar timestamp -.Op Fl u -.Ar -.Sh DESCRIPTION -.Nm -adds SHA1 and SHA256 hashes to a Mach-O file so that they can be run on a system that has validation but not signature verification. -.Bl -tag -width -indent -.It Fl a -Print the CPU types and subtypes in hexadecimal. -.It Fl A Ns Ar cputype : Ns Ar subtype -When used with -.Fl a , Fl D , Fl e , Fl h , Fl q , -or -.Fl u , -only act on the slice specified by -.Ar cputype -and -.Ar subtype . -.Ar cputype -and -.Ar subtype -should both be integers. -.It Fl C Ns Op Ar adhoc | Ar enforcement | Ar expires | Ar hard | Ar host | Ar kill | Ar library-validation | Ar restrict | Ar runtime -Specify the option flags to embed in the code signature. -See -.Xr codesign 1 -for details about these options. -.It Fl D -Reset the cryptid. -.It Fl d -Print the cryptid in the binaries if it exists. -For compatibility reasons it also acts as -.Fl h , -but this will be removed in the future. -.It Fl e -Print the entitlements in each slice, or the slice specified by -.Fl A , -to -.Ar stdout . -.It Fl h -Print information about the signature, such as hash types, flags, CDHash, and CodeDirectory version to -.Ar stdout . -.It Fl K Ns Ar key.p12 -Sign using the identity in -.Ar key.p12 . -This will give the binary a valid signature so that it can be run on a system with signature validation. -If -.Ar key.p12 -has a password you will be prompted for it, or you can specify from the command line with -.Fl U . -.It Fl M -When used with -.Fl S , -merge the new and existing entitlements instead of replacing the existing entitlements, this is useful for adding a few specific entitlements to a handful of binaries. -.It Fl P -Mark the Mach-O as a platform binary. -.It Fl Q Ns Ar file -Embed the requirements found in -.Ar file . -.It Fl q -Print embedded requirements of the binaries. -.It Fl r -Remove the signature from the Mach-O. -.It Fl S Ns Op Ar file.xml -Pseudo-sign the Mach-O binaries. -If -.Ar file.xml -is specified then the entitlements found in -.Ar file.xml -will be embedded in the Mach-O. -.It Fl s -Resign the Mach-O binaries while keeping the existing entitlements. -.It Fl T Ns Ar timestamp -When signing a dylib, set the timestamp to -.Ar timestamp . -.Ar timestamp -should be an UNIX timestamp in seconds, if -.Ar timestamp -is a single dash -.Pq Sq Fl , -the timestamp will be set to a hash of the Mach-O header. -.It Fl U Ns Ar password -Use -.Ar password -as the password for the p12 certificate instead of prompting. -.It Fl u -If the binary was linked against UIKit, then print the UIKit version that the Mach-O binaries was linked against. -.El -.Sh EXAMPLES -The command: -.Pp -.Dl "ldid -S file" -.Pp -will fakesign -.Ar file -with no entitlements. -.Pp -The command: -.Pp -.Dl "ldid -Cadhoc -K/path/to/key.p12 -Sent.xml file" -.Pp -will sign -.Ar file -using the key in -.Ar /path/to/key.p12 -with the entitlements found in -.Ar ent.xml , -and mark it as an adhoc signature. -.Pp -The command: -.Pp -.Dl "ldid -Sent.xml -M file" -.Pp -will add the entitlements in -.Ar ent.xml -to the entitlements already in -.Ar file . -.Pp -The command: -.Pp -.Dl "ldid -e file > ent.xml" -.Pp -will save the entitlements found in each slice of -.Ar file -to -.Ar ent.xml . -.Sh SEE ALSO -.Xr codesign 1 -.Sh HISTORY -The -.Nm -utility was written by -.An Jay \*qSaurik\*q Freeman . -iPhoneOS 1.2.0 and 2.0 support was added on April 6, 2008. -.Fl S -was added on June 13, 2008. -SHA256 support was added on August 25, 2016, fixing iOS 11 support. -iOS 14 support was added on July 31, 2020 by -.An Kabir Oberai . -iOS 15 support was added on June 11, 2021. diff --git a/ldid.1.zh_TW b/ldid.1.zh_TW deleted file mode 100644 index 257b4b1..0000000 --- a/ldid.1.zh_TW +++ /dev/null @@ -1,168 +0,0 @@ -.\"- -.\" Copyright (c) 2021 ProcursusTeam -.\" SPDX-License-Identifier: AGPL-3.0-or-later -.\" -.Dd October 8, 2021 -.Dt LDID 1 -.Os -.Sh 名稱 -.Nm ldid -.Nd 鏈接身份編輯器 -.Sh 語法 -.Nm -.Op Fl A Ns Ar cputype : Ns Ar subtype -.Op Fl a -.Op Fl C Ns Op Ar adhoc | Ar enforcement | Ar expires | Ar hard | Ar host | Ar kill | Ar library-validation | Ar restrict | Ar runtime -.Op Fl D -.Op Fl d -.Op Fl e -.Op Fl h -.Op Fl K Ns Ar key.p12 Op Fl U Ns Ar password -.Op Fl M -.Op Fl P -.Op Fl q -.Op Fl r | Fl S Ns Ar 檔案.xml | Fl s -.Op Fl T Ns Ar timestamp -.Op Fl u -.Ar -.Sh 描述 -.Nm -把SHA1和SHA256雜湊值加入到Mach-O檔案中,讓它們能在有驗證但沒有簽署驗證的系統上運行。 -.Bl -tag -width -indent -.It Fl a -以十六進制印出處理器類型和亞類型。 -.It Fl A Ns Ar cputype : Ns Ar subtype -當和 -.Fl a , Fl D , Fl e , Fl h , Fl q , -或 -.Fl u , -一起被使用時,只作用在被 -.Ar cputype -和 -.Ar subtype . -.Ar cputype -和 -.Ar subtype -指定的部分。它們都應該是整數。 -.It Fl C Ns Op Ar adhoc | Ar enforcement | Ar expires | Ar hard | Ar host | Ar kill | Ar library-validation | Ar restrict | Ar runtime -設定要在檔案中包含的程式碼簽署選項。 -請看 -.Xr codesign 1 -來獲得關於這些選項的更多資訊。 -.It Fl D -重設加密碼 (cryptid)。 -.It Fl d -輸出在二進位檔案中的加密碼。 -由於兼容性原因,這像 -.Fl h , -但在將來這會被移除。 -.It Fl e -把每一部分的權限印出, 或印出 -.Fl A , -所指定的部分的權限 -.Ar 到標準輸出。 -.It Fl h -印出關於簽署的資訊,包括雜湊值的類型,選項,CDHash, 和 CodeDirectory 版本到 -.Ar 標準輸出。 . -.It Fl K Ns Ar key.p12 -用在 -.Ar key.p12 . -的身份簽署。這會給二進位檔案有一個有效的簽署,令它能夠在有簽署驗證的系統上運行。 -如果 -.Ar key.p12 -有密碼的話,你會被詢問。你也可以用 -.Fl U . -.Ar 選項來提供密碼。 . -.It Fl M -當和 -.Fl S , -一起使用時,和現有的權限合併而不是取代它。 這在加入權限時有用。 -.It Fl P -將這個Mach-O二進位檔案標示為系統二進位檔案。 -.It Fl Q Ns Ar 檔案 -把需求嵌入到 -.Ar 檔案 . -中。 -.It Fl q -印出被嵌入在二進位檔案中的需求。 -.It Fl r -從Mach-O檔案中刪除簽署。 -.It Fl S Ns Op Ar 檔案.xml -偽簽署Mach-O檔案。 -如果提供了 -.Ar 檔案.xml -那麼在 -.Ar 檔案.xml -中的權限會被嵌入到Mach-O中。 -.It Fl s -重新簽署Mach-O檔案但保留現有權限。 -.It Fl T Ns Ar 時間印章 -當簽署一個動態鏈結函式庫時,把時間印章設定為 -.Ar 時間印章 . -.Ar 時間印章 -應該是一個以秒作為單位的UNIX時間印章,如果 -.Ar -是一個連字號的話 -.Pq Sq Fl , -時間印章會被設定為Mach-O頭中的時間印章。 -.It Fl U Ns Ar 密碼 -使用 -.Ar 密碼 -作為p12證書的密碼,而不是詢問。 -.It Fl u -如果Mach-O檔案有和UIKit鏈結,印出被鏈結的UIKit版本。 -.El -.Sh 例子 -指令: -.Pp -.Dl "ldid -S 檔案" -.Pp -會偽簽署 -.Ar 檔案 -而且不嵌入任何權限。 -.Pp -指令: -.Pp -.Dl "ldid -Cadhoc -K/path/to/key.p12 -Sent.xml 檔案" -.Pp -會使用 -.Ar /path/to/key.p12 -中的私錀來簽署 -.Ar 檔案 -也會使用在 -.Ar ent.xml , -中的權限並把簽署標示為特別用途 (adhoc) 簽署。. -.Pp -指令: -.Pp -.Dl "ldid -Sent.xml -M 檔案" -.Pp -會把 -.Ar ent.xml -中的權限加入到已經在 -.Ar 檔案 . -中的權限。 -.Pp -指令: -.Pp -.Dl "ldid -e 檔案 > ent.xml" -.Pp -會把在 -.Ar 檔案 -中每一部分的權限儲存到 -.Ar ent.xml . -.Sh 另見 -.Xr codesign 1 -.Sh 歷史 -這個 -.Nm -工具程式是由 -.An Jay \*qSaurik\*q Freeman . 所編寫的。 -對iPhoneOS 1.2.0 和 2.0 的支援在2008年4月6號被加入。 -.Fl S -在2008年6月13日被加入。. -SHA256 支援在2016年8月25日被加入,修正iOS 11支援。 -iOS 14支援在2020年7月31日由 -.An Kabir Oberai . -加入。 -iOS 15支援在2021年6月11日加入。 diff --git a/libplist b/libplist deleted file mode 160000 index 9ca25d2..0000000 --- a/libplist +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 9ca25d293fe7f8aca8d952fc7bb91464fe2d34ab diff --git a/make.sh b/make.sh deleted file mode 100755 index 9c5361b..0000000 --- a/make.sh +++ /dev/null @@ -1,90 +0,0 @@ -#!/bin/bash - -set -e -shopt -s extglob - -if [[ $# == 0 ]]; then - ios=false -else - ios=$1 - shift -fi - -export DEVELOPER_DIR=/Applications/Xcode-5.1.1.app - -os=() - -if "${ios}"; then - -out=ios -flags=(cycc -- -miphoneos-version-min=2.0 -arch armv6 -arch arm64) - -flags+=(-Xarch_armv6 -Isysroot32/usr/include) -flags+=(-Xarch_arm64 -Isysroot64/usr/include) - -flags+=(-Xarch_armv6 -Lsysroot32/usr/lib) -flags+=(-Xarch_arm64 -Lsysroot64/usr/lib) - -static=false -flags+=(-framework CoreFoundation) - -flags+=(-lplist) -flags+=(-lcrypto) - -else - -out=out - -if which xcrun &>/dev/null; then - flags=(xcrun -sdk macosx g++) - flags+=(-mmacosx-version-min=10.4) - - for arch in i386 x86_64; do - flags+=(-arch "${arch}") - done -else - flags=(g++) -fi - -#flags+=(-L../../lib-osx/openssl) - -# XXX: cannot redistribute -static=true -flags+=(-Isysroot64/usr/include) -flags+=(-lcrypto) -#flags+=(-Wl,/usr/lib/libcrypto.42.dylib) - -fi - -sdk=$(xcodebuild -sdk iphoneos -version Path) - -flags+=(-I.) - -if ${static}; then - -flags+=(-I"${sdk}"/usr/include/libxml2) -flags+=(-Ilibplist/include) -flags+=(-Ilibplist/libcnary/include) - -for c in libplist/libcnary/!(cnary).c libplist/src/*.c; do - o=${c%.c}.o - o="${out}"/${o##*/} - os+=("${o}") - if [[ "${c}" -nt "${o}" ]]; then - "${flags[@]}" -c -o "${o}" -x c "${c}" - fi -done - -fi - -flags+=("$@") - -mkdir -p "${out}" -set -x - -"${flags[@]}" -O3 -g0 -c -std=c++11 -o "${out}"/ldid.o ldid.cpp -"${flags[@]}" -O3 -g0 -o "${out}"/ldid "${out}"/ldid.o "${os[@]}" -x c lookup2.c -lxml2 -framework Security - -if ! "${ios}"; then - ln -sf out/ldid . -fi diff --git a/plist.sh b/plist.sh deleted file mode 100755 index bda6327..0000000 --- a/plist.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -./configure CC='clang -mmacosx-version-min=10.4 -arch i386 -arch x86_64' CXX='clang++ -mmacosx-version-min=10.4 -arch i386 -arch x86_64' CPP='clang -E' CXXCPP='clang++ -E' libxml2_LIBS=-lxml2 libxml2_CFLAGS=-I/usr/include/libxml2 --enable-static --disable-shared diff --git a/sha1.h b/sha1.h deleted file mode 100644 index 32a62a3..0000000 --- a/sha1.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * sha1.h - * - * Description: - * This is the header file for code which implements the Secure - * Hashing Algorithm 1 as defined in FIPS PUB 180-1 published - * April 17, 1995. - * - * Many of the variable names in this code, especially the - * single character names, were used because those were the names - * used in the publication. - * - * Please read the file sha1.c for more information. - * - */ - -#ifndef _SHA1_H_ -#define _SHA1_H_ - -#include - -#ifndef _SHA_enum_ -#define _SHA_enum_ -enum -{ - shaSuccess = 0, - shaNull, /* Null pointer parameter */ - shaInputTooLong, /* input data too long */ - shaStateError /* called Input after Result */ -}; -#endif -#define SHA1HashSize 20 - -/* - * This structure will hold context information for the SHA-1 - * hashing operation - */ -typedef struct SHA1Context -{ - uint32_t Intermediate_Hash[SHA1HashSize/4]; /* Message Digest */ - - uint32_t Length_Low; /* Message length in bits */ - uint32_t Length_High; /* Message length in bits */ - - /* Index into message block array */ - int_least16_t Message_Block_Index; - uint8_t Message_Block[64]; /* 512-bit message blocks */ - - int Computed; /* Is the digest computed? */ - int Corrupted; /* Is the message digest corrupted? */ -} SHA1Context; - -/* - * Function Prototypes - */ - -int SHA1Reset( SHA1Context *); -int SHA1Input( SHA1Context *, - const uint8_t *, - unsigned int); -int SHA1Result( SHA1Context *, - uint8_t Message_Digest[SHA1HashSize]); - -#endif diff --git a/sysroot.sh b/sysroot.sh deleted file mode 100755 index e595621..0000000 --- a/sysroot.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash -set -e - -rm -rf sysroot32 sysroot64 -mkdir -p sysroot32 sysroot64 - -function merge() { - wget --no-check-certificate "${apt}/$1" - dpkg-deb -x "$1" . -} - -pushd sysroot32 -apt=http://apt.saurik.com/debs -merge openssl_0.9.8zg-13_iphoneos-arm.deb -merge libplist_2.0.0-1_iphoneos-arm.deb -popd - -pushd sysroot64 -apt=https://apt.bingner.com/debs/1443.00 -merge libssl1.0_1.0.2q-1_iphoneos-arm.deb -merge libssl-dev_1.0.2q-1_iphoneos-arm.deb -merge libplist_2.0.0-1_iphoneos-arm.deb -popd - -for lib in libplist libcrypto; do - for dylib in sysroot*/usr/lib/"${lib}".*.dylib; do - echo install_name_tool -id /usr/lib/"${lib}".dylib "${dylib}" - chmod 755 "${dylib}" - install_name_tool -id /usr/lib/"${lib}".dylib "${dylib}" - done -done diff --git a/version.sh b/version.sh deleted file mode 100755 index 19212f3..0000000 --- a/version.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -echo "$(git describe --tags --dirty="+" --match="v*" | sed -e 's@-\([^-]*\)-\([^-]*\)$@+\1.\2@;s@^v@2:@')" -- cgit v1.2.3-56-ge451