バイナリをパッチするときに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.

文字列は間違って書かれており、オフセットは455808と比較して439424です。なぜこれですか?どうすれば解決できますか?

注:文字列が大きくなる可能性があるため、書き込みが不可能になる可能性があると考えており、ローカルコンピュータで短いURLでバイナリを独自にホストしてみました。

http://192.168.0.108:4000/altstore.ipa

(ダウンロードしたaltstore-beta.ipaの名前をaltstore.ipaに変更しましたが、それでも機能せず、誤ったオフセットを書き込むのと同じ問題が発生しました。

ベストアンサー1

おすすめ記事