• 先日iPad Air 9.3.2を脱獄してから久しぶりにいろいろ遊んでます。
  • ech0chrome iPhone Repo on Cydia (昔私がビルドしたソフト群)も一部使えました。ncompressとか(tar.Zとか今は使われてるんでしょうか…)
  • しかし、nkfやPuTTY、OpenHSPは「Illegal Instruction: 4」と出て動かない。
  • 少し調べたところ、http://theiostream.tumblr.com/post/63923259800/patching-iphone-gcc-binaries-to-armv7s に行き当たりました。ldr r3, [r3]命令がarmv6/v7専用命令になっていて、armv7sで解釈できないのが原因とのこと。armv7sで解釈できるように手直しすればよいそうです。crt1.oだけがおかしく、原因は不明とのこと。
#!/bin/sh
for file in "$@";do
sed -i'' 's/\x00\x30\x93\xe4/\x00\x30\x93\xe5/g;s/\x00\x30\xd3\xe4/\x00\x30\xd3\xe5/g;' $file
ldid -S $file
done
  • まあ、当時はiPhone 3GSやiPhone 4の時代だったので、v7sのことなんて頭になかったですからねぇ…
  • ビルドスクリプト、もしあったら、パッケージ化しようと思います。バックアップは今何処^^;(開発機のiPod Touch 3rdはヒューズが飛んだ状態)
  • てか、私の出してるiOS gccは間違いなく壊れたバイナリを出力するんですが、どうしたもんか。3.1.2用のtoolchainをセルフコンパイル用にポートしただけなので、新たにtoolchainを作る能力は私にはない^^;

  • ちなみに、Illegal Instruction: 4はこのパッチで直せますが、mmap error 22は直せません。

  • https://forums.developer.apple.com/thread/7524 によると、32bit dylibを読み込むにはMach-Oのヘッダがどうこうという話っぽいです。

  • 話は変わりますが、アプリ領域にアクセスするのが不便なのでapplinkなるソフトを作ってましたが、これもiOS8で使えなくなってた模様。com.apple.mobile.installation.plistがなくなったため。
  • 突貫工事で新たに作りました。Pythonが必要ではありますが。しかもリンク名がアプリ識別子になる制限付き。
  • https://gist.github.com/cielavenir/089ae47301458db8e2e04a67f72132b3