今日、Xcode 8.1がインストールされました。これには、バージョン360.1.65のlldbが含まれています。 lldbを使ってiOS 7.1.2でarmv7バイナリをデバッグすると親指のコードを自動的に害することはできません。これはdisasコマンドの結果です。lldb-360.1.65(xcode8.1)結果エラーのあるdisasコマンド
(lldb) disas -s 0x709d8 -e 0x709e0
networkd`_mh_execute_header:
0x709d8 <+39384>: b 0xff3aca20
0x709dc <+39388>: .long 0xf64c6940 ; unknown opcode
lldb-350.0.21.9(Xcode 7.3.1)で同じコードをテストしても問題ありません。
(lldb) disas -s 0x479d8 -e 0x479e0
networkd`___lldb_unnamed_function192$$networkd:
0x479d8 <+352>: blx 0x57f74 ; symbol stub for: xpc_data_get_bytes_ptr
0x479dc <+356>: ldr r0, [r0, #0x14]
0x479de <+358>: movw r0, #0xc800
誰でも助けてくれますか?ありがとうございました。
私は「分解する」に「親指」を使用します。結果は親指だけです。最初のアームコード(0x..9d8)は処理できません。 lldbで親指と腕を切り替える方法はありますか? – LinuxPad
いいえ、lldbには「この命令ストリームは腕ではないように見え始めています」というタイプのヒューリスティックスはありません。これは可能かもしれませんが、ARMではコード内にデータが存在することが多いため、常に適切に処理するのは難しいでしょう。それは価値があるよりも、おそらく多くのトラブルです。そしてあなたは一般的にシンボルから知っているので、ほとんどの時間は必要ではありません。 –
逆アセンブルしようとしているバイナリのシンボルが表示されなくなった理由を理解することは興味深いでしょう。 –