为什么 dd 程序在修补二进制文件时不能按预期工作?

为什么 dd 程序在修补二进制文件时不能按预期工作?

我正在尝试使用以下位置提供的说明修补二进制文件这个答案

初始设置:

wget https://f000.backblazeb2.com/file/altstore/altserver/1_4_1.zip
unzip 1_4_1.zip

这个程序主要是下载 ipa 文件,对其进行签名并将其推送到我的 iPhone 中。我的主要目标是更改此程序以加载相同的测试版,所以我这样做:

strings -o -t d ~/Desktop/AltServer.app/Contents/MacOS/AltServer | grep ipa

我得到:

450486 Unzipping .ipa...
455808 https://f000.backblazeb2.com/file/altstore/altstore.ipa
455872 Failed to remove downloaded .ipa.

很明显,下载 ipa 文件的 URL 位于偏移量 455808 处。我尝试使用上面提到的 Stackoverflow 答案提供的说明来修补它:

printf "https://f000.backblazeb2.com/file/altstore/altstore-beta.ipa" > tmp
dd if=tmp of=~/Desktop/AltServer.app/Contents/MacOS/AltServer obs=1 seek=455808 conv=notrunc

它在二进制代码中写入输出:

0+1 records in
60+0 records out
60 bytes transferred in 0.001586 secs (37832 bytes/sec)

但是,当我再次运行字符串时,URL 被设置在其他位置,例如:

$ strings -o -t d ~/Desktop/AltServer.app/Contents/MacOS/AltServer | grep ipa
439424 https://f000.backblazeb2.com/file/altstore/altstore-beta.ipa
450486 Unzipping .ipa...
455808 https://f000.backblazeb2.com/file/altstore/altstore.ipa
455872 Failed to remove downloaded .ipa.
459568 Failed to remove .ipa.

字符串明显写错了,偏移量439424比455808。这是为什么呢?我该如何解决它?

注意:我确实认为该字符串可能更大,因此可能无法写入,并且我尝试在本地计算机中将二进制文件作为较短的 URL 自托管:

http://192.168.0.108:4000/altstore.ipa

(将下载的 altstore-beta.ipa 重命名为 altstore.ipa,但即使这样也不起作用,并且出现了写入错误偏移量的相同问题。

相关内容