- evasi0nジェイルブレイクを備えたiOS 7.0-7.0.4デバイスと、Xcode 5.1.1およびMachOView 2.4がインストールされたMac OS X 10.9.4を搭載したコンピューター(他のバージョンでも動作する可能性が高いですが、試していません)
- iOS用のサードパーティアプリケーションのデバッグの経験があります。ASLRとは何か、 ASLRを無効にする理由を理解することをお勧めします
さあ、始めましょう。
まず、デバッグするASLRを無効にする必要がある実行可能ファイルを選択します。 デーモン
/usr/sbin/absd
とします。これは、一部のAppleサービスの承認を担当します。 もちろん、
absd
ここにありますが、実際には、任意の実行可能ファイルを使用できます。
scp
を使用して、実行可能ファイルをコンピューターにコピーします(以降、
192.168.1.112
はiOSデバイスのIPアドレスです):
$ scp root@192.168.1.112:/usr/sbin/absd ./
警告! absdで何かを行う前に、必ずコピーをどこかに保存してください!
次に、
codesign
の
codesign
ユーティリティを使用して、実行可能ファイルから資格のリストを含むplistを抽出します(ロシア語でどのようになっているのかわかりません。「権利のリスト」かもしれません)。
$ codesign -d --entitlements - absd > absd.entitlements
その後、MachOViewで実行可能ファイルを開き、関心のあるアーキテクチャのMachヘッダーを見つけます。 ファットバイナリの場合、このようなヘッダーがいくつかあります(アーキテクチャごとに1つ)。 ファットバイナリがない場合、ヘッダーは1つだけになります。 ヘッダーで
MH_PIE
フラグを見つけ、対応するオフセットを覚えておいてください。 MachOViewでは、すべて次のようになります。
フラグをリセットする必要がありますが、これはMachOViewで実行できません。したがって、HEXエディターで実行可能ファイルを開き、対応するオフセットに移動して、フラグをクリアします。 次に、保存された資格で実行可能ファイルに再署名します。
$ codesign -s - --entitlements absd.entitlements -f absd
それをデバイスにコピーして戻します
$ scp ./absd root@192.168.1.112:/usr/sbin/absd
それだけです。 デーモンを呼び出して(たとえば、iMessageにログインして)、lldbでデバッグを実行すると、次のように表示されます。
(lldbではなくgdbを使用している場合は、 適切なコマンドを使用してください)。 スクリーンショットからわかるように、これ以上ASLRはありません! これが全体の説明です-記事の冒頭で約束したように、シンプルで短いものです。
PS念のため:著者は、記事で提案されている方法が常に最適とはほど遠いことを認識しています。 著者はまた、ASLRを無効にする別の方法を知っており、それらは将来の記事で議論されるかもしれません。 しかし、ここは今日です-Machヘッダーのパッチに関する記事です。
楽しいデバッグ!