私はMach-oファイルの仕組みを理解しようとしており、利用可能なオンラインリソース(特にAppleページはhttp://developer.apple.com/library/mac/#documentation/developertools/conceptual/MachORuntime/Reference/reference.html)でかなり進歩しましたが、シンボルスタブがどのように機能するかを理解する上での障害となっています。Mach-Oシンボルスタブ(IOS)
を:私はバイナリエディタでバイナリファイルからのデータを見るとしかし、私は、次の4つのバイトは、何度も何度も繰り返し見Section
sectname __symbolstub1
segname __TEXT
addr 0x00005fc0
size 0x00000040
offset 20416
align 2^2 (4)
reloff 0
nreloc 0
flags 0x80000408
:私は次のセクションを参照してください「-lコマンドotool」使用
00005FC0 38 F0 9F E5 38 F0 9F E5 38 F0 9F E5 38 F0 9F E5 88
00005FD0 38 F0 9F E5 38 F0 9F E5 38 F0 9F E5 38 F0 9F E5 88
00005FE0 38 F0 9F E5 38 F0 9F E5 38 F0 9F E5 38 F0 9F E5 88
00005FF0 38 F0 9F E5 38 F0 9F E5 38 F0 9F E5 38 F0 9F E5 88
これは一定量のPCを増加させるLDRのように見えますが、シンボルテーブル内の各エントリの量が同じ理由はわかりません。
誰かがこれがなぜそうであるかを明らかにしたり、この低レベルを取得するリソースを提供してもらえる場合は、私に知らせてください。
ありがとうございます!
私は、テーブルの4バイトのエントリのそれぞれが、関数呼び出しの場所を格納するDCD命令を持つデータ領域を指していることを理解したと思います。しかし、私はまだこの余分なレベルのインダイレクションが必要な理由を少し混乱させています。だから誰でもフォローインフォメーションを提供できれば分かります。 – Locksleyu