otool を使用してバイナリに関する情報を取得しています。ここに私の出力の一部があります:
Load command 0
cmd LC_SEGMENT_64
cmdsize 72
segname __PAGEZERO
vmaddr 0x0000000000000000
vmsize 0x0000000100000000
fileoff 0
filesize 0
maxprot 0x00000000
initprot 0x00000000
nsects 0
flags 0x0
Load command 1
cmd LC_SEGMENT_64
cmdsize 952
segname __TEXT
vmaddr 0x0000000100000000
vmsize 0x0000000000268000
fileoff 0
filesize 2523136
maxprot 0x00000005
initprot 0x00000005
nsects 11
flags 0x0
ここで、command 1
でsegname __TEXT
始まることがわかりますvmaddr 0x0000000100000000
問題は、バイナリ サイズが 2.3 MB で、0x0000000100000000 が 4 GB であることです。
アドレスの真ん中の「1」は64ビットアーキテクチャに関係していると思いますが0x0000000100000000
、実際には address 0x00
. 私はそれについていくつかの情報を探していましたが、有用なものは何も見つかりませんでした. 誰かが私の仮定を確認し、これがどのように機能しているかを説明できますか?