diff options
Diffstat (limited to 'data/ldid/1-cdversion.diff')
-rw-r--r-- | data/ldid/1-cdversion.diff | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/data/ldid/1-cdversion.diff b/data/ldid/1-cdversion.diff new file mode 100644 index 000000000..7976e00f1 --- /dev/null +++ b/data/ldid/1-cdversion.diff @@ -0,0 +1,49 @@ +commit b462a92349c57f38f2a6844adabee940afe01ca6 +Author: kabiroberai <oberai.kabir@gmail.com> +Date: Fri Jul 31 03:29:44 2020 +0530 + + Update CodeDirectory version for iOS 14 + + iOS 14b3 seems to not support CodeDirectory version 0x00020200 anymore + +diff --git a/ldid.cpp b/ldid.cpp +index b82ad01..a6538a4 100644 +--- a/ldid.cpp ++++ b/ldid.cpp +@@ -892,8 +892,11 @@ struct CodeDirectory { + uint32_t spare2; + uint32_t scatterOffset; + uint32_t teamIDOffset; +- //uint32_t spare3; +- //uint64_t codeLimit64; ++ uint32_t spare3; ++ uint64_t codeLimit64; ++ uint64_t execSegBase; ++ uint64_t execSegLimit; ++ uint64_t execSegFlags; + } _packed; + + enum CodeSignatureFlags { +@@ -1994,7 +1997,7 @@ Hash Sign(const void *idata, size_t isize, std::streambuf &output, const std::st + uint32_t normal((limit + PageSize_ - 1) / PageSize_); + + CodeDirectory directory; +- directory.version = Swap(uint32_t(0x00020200)); ++ directory.version = Swap(uint32_t(0x00020400)); + directory.flags = Swap(uint32_t(flags)); + directory.nSpecialSlots = Swap(special); + directory.codeLimit = Swap(uint32_t(limit)); +@@ -2005,8 +2008,11 @@ Hash Sign(const void *idata, size_t isize, std::streambuf &output, const std::st + directory.pageSize = PageShift_; + directory.spare2 = Swap(uint32_t(0)); + directory.scatterOffset = Swap(uint32_t(0)); +- //directory.spare3 = Swap(uint32_t(0)); +- //directory.codeLimit64 = Swap(uint64_t(0)); ++ directory.spare3 = Swap(uint32_t(0)); ++ directory.codeLimit64 = Swap(uint64_t(0));; ++ directory.execSegBase = Swap(uint64_t(0)); ++ directory.execSegLimit = Swap(uint64_t(0)); ++ directory.execSegFlags = Swap(uint64_t(0)); + + uint32_t offset(sizeof(Blob) + sizeof(CodeDirectory)); + |