← man/system_admin
otool — man otool — 80×24
ugur@toprak:~/man/system_admin$man otool
Bölüm 1 Sistem Yönetimi

otool

nesne dosyası görüntüleme aracı

Özet

       otool-classic [ seçenek ...  ] [ dosya ...  ]

Açıklama

otool-classic komutu, nesne dosyalarının veya kitaplıkların belirtilen kısımlarını görüntüler. Bozuk, hasarlı veya fuzzed (rastgele verilerle test edilmiş) ikili dosyalar başta olmak üzere Mach-O ikili dosyalarını incelemek için tercih edilen araçtır. Ayrıca yeni veya "en yeni" Mach-O dosya biçimi değişikliklerine sahip dosyaları incelerken de kullanışlıdır.

Tarihsel nedenlerden dolayı, LLVM tabanlı llvm-objdump(1) aracı, Mach-O bilgilerini bir "otool-uyumluluk" modunda görüntülemeyi destekler. llvm-objdump(1) aracını bu şekilde kullanma hakkında daha fazla bilgi için llvm-otool(1) komut satırı dolgusuna (shim) bakın. llvm-objdump(1) aracının tüm Mach-O dosyalarındaki bilgileri görüntüleyemediğini unutmayın.

Eğer -m seçeneği kullanılmazsa, dosya argümanları tüm kitaplık yerine yalnızca o nesne dosyası hakkında bilgi istemek için libx.a(foo.o) biçiminde olabilir. (Genellikle bu argümanın kabuktan zarar görmeden geçebilmesi için tırnak içine alınması gerekir, ``libx.a(foo.o)''). Otool-classic hem Mach-O (Mach nesnesi) dosyalarını hem de evrensel (universal) dosya biçimlerini anlar. Otool-classic, belirtilen bilgileri ya ham (sayısal) biçiminde (-v bayrağı olmadan) ya da sabitlerin makro adlarını vb. kullanarak sembolik bir biçimde (-v veya -V bayrağıyla) görüntüleyebilir.

Aşağıdaki seçeneklerden en az biri belirtilmelidir:

  • -a: Dosya bir arşivse arşiv başlığını görüntüler.

  • -S: Dosya bir arşivse `__.SYMDEF' dosyasının içeriğini görüntüler.

  • -f: Evrensel (universal) başlıkları görüntüler.

  • -h: Mach başlığını görüntüler.

  • -l: Yükleme komutlarını (load commands) görüntüler.

  • -L: Nesne dosyasının kullandığı paylaşılan kitaplıkların adlarını ve sürüm numaralarını ve ayrıca dosya bir paylaşılan kitaplıksa paylaşılan kitaplık kimliğini (ID) görüntüler.

  • -D: Bir paylaşılan kitaplığın yalnızca yükleme adını (install name) görüntüler. Daha fazla bilgi için install_name_tool(1) sayfasına bakın.

-s segname sectname Bölümün (segname,sectname) içeriklerini görüntüler. -v bayrağı belirtilirse, tür sıfır (bölüm başlığı bayrakları) olmadığı sürece bölüm kendi türü olarak görüntülenir. Ayrıca -v bayrağı belirtilirse (__OBJC,__protocol), (__OBJC,__string_object) ve (__OBJC,__runtime_setup) bölümleri sembolik olarak görüntülenir. Bilinmeyen bölüm türleri için, eğer -V bayrağı belirtilirse, bölümün içeriği kurallı (canonical) hex+ASCII görünümünde görüntülenir; burada onaltılık değerler sütunu, ASCII karakterleri sütunu ile yan yana basılır.

  • -t: (__TEXT,__text) bölümünün içeriğini görüntüler. -v bayrağıyla bu, metni tersine çevirir. -V bayrağıyla, operandları da sembolik olarak tersine çevirir.

  • -x: Dosyada bulunan her __text bölümünün içeriğini görüntüler. Bu, Mach çekirdeğine ve birden fazla segmentte __text bölümü bulunan diğer dosyalara bakarken veya __text bölümünün __TEXT dışında bir yerde olduğu durumlarda kullanışlıdır. -v bayrağıyla kullanıldığında bu, metni tersine çevirir. -V bayrağıyla kullanıldığında, operandları da sembolik olarak tersine çevirir.

  • -d: (__DATA,__data) bölümünün içeriğini görüntüler.

  • -o: Objective-C çalışma zamanı sistemi tarafından kullanılan __OBJC segmentinin içeriğini görüntüler.

  • -r: Yeniden konumlandırma (relocation) girdilerini görüntüler.

  • -c: Bir çekirdek (core) dosyasındaki argüman dizelerini (argv[] ve envp[]) görüntüler.

  • -I: Dolaylı sembol tablosunu görüntüler.

  • -T: Dinamik olarak bağlantılı bir paylaşılan kitaplığın içindekiler tablosunu görüntüler.

  • -R: Dinamik olarak bağlantılı bir paylaşılan kitaplığın referans tablosunu görüntüler.

  • -M: Dinamik olarak bağlantılı bir paylaşılan kitaplığın modül tablosunu görüntüler.

  • -H: İki seviyeli isim alanı ipuçları (two-level namespace hints) tablosunu görüntüler.

  • -G: Kod tablosundaki verileri (data in code) görüntüler.

  • -C: Bağlayıcı optimizasyon ipuçlarını görüntüler (ayrıntılı mod için -v de eklenebilir).

  • -P: Info plist bölümünü, (__TEXT,__info_plist), dizeler olarak yazdırır.

-dyld_info Nihai bağlantılı bir ikili dosyadaki harici referansları çözmek için dyld tarafından kullanılan bağlama (bind) ve yeniden temellendirme (rebase) bilgilerini yazdırır.

-dyld_opcodes Nihai bağlantılı bir ikili dosyada bulunan ham dyld bağlama (bind) ve yeniden temellendirme (rebase) işlem kodlarını (opcodes) yazdırır. Bu işlem kodları, LC_DYLD_INFO* yükleme komutlarının işaret ettiği bir bölgede saklanır.

-show-latency Tersine çevirme yaparken, talimatlar için gecikme (latency) açıklamalarını yazdırır.

-no-show-latency Tersine çevirme yaparken, talimatlar için gecikme açıklamalarını yazdırmaz.

-use-color Tersine çevirme yaparken ANSI renkleriyle yazdırır. Standart çıktı (stdout) görüntülendiğinde varsayılan budur.

-no-use-color Tersine çevirme yaparken ANSI renkleriyle yazdırmaz.

-chained_fixups Zincirlenmiş düzeltmelerle (chained fixups) oluşturulmuş nihai bağlantılı bir ikili dosyada bulunan ham zincirlenmiş düzeltme verilerini yazdırır. Zincirlenmiş düzeltme verileri, LC_DYLD_CHAINED_FIXUPS yükleme komutunun işaret ettiği bir bölgede veya bir (__TEXT,__chain_starts) bölümünde saklanır. Bu veriler, segment bazında her sayfadaki düzeltme zincirinin başlangıç konumunu ve her bağlama için sembol bilgilerini içerir. Her zincirdeki bireysel bağlantıları görmek için -dyld_info seçeneğini kullanın.

Aşağıdaki seçenekler de belirtilebilir:

  • -j: Tersine çevirme yaparken talimatların işlem kodu (opcode) baytlarını yazdırır.

  • -m: Nesne dosyası adlarının arşiv(üye) sözdiziminde olduğu varsayılmaz, bu da parantez içeren dosya adlarına izin verir.

-p ad Tersine çevirmeyi sembol ad'ından başlatmak ve (__TEXT,__text) bölümünün sonuna kadar devam ettirmek için -t ve -v veya -V seçenekleriyle kullanılır. Bu seçenek, __text bölümünün bulunduğu herhangi bir segmentteki sembol ad'ından tersine çevirmeyi başlatmak için -x seçeneğiyle de kullanılabilir.

  • -q: Tersine çevirme yaparken llvm tersine çeviricisini kullanır; bu x86 ve arm mimarileri için mevcuttur. Varsayılan budur.

  • -Q: Tersine çevirme yaparken otool-classic(1)'in kendi tersine çeviricisini kullanır.

  • -v: Mümkün olduğunda ayrıntılı (sembolik) görüntüler.

  • -V: Tersine çevrilmiş operandları sembolik olarak görüntüler (bu, -v seçeneğini ima eder). -s, -t ve -x seçenekleriyle kullanışlıdır.

  • -X: Bölümlerin tersine çevrilmesinde başlangıç adreslerini veya başlıkları yazdırmaz.

-addr_slide=argüman -s, -t veya -o seçeneklerini kullanarak bir ikili dosyayı tersine çevirirken, görüntülendiğinde her işaretçi (pointer) değerine rastgele bir kaydırma (slide) ekler. Bu, otool çıktısını çalışan bir sürecinkiyle eşleştirmek için kullanışlıdır.

-arch mimari_türü Dosya bir evrensel (universal) dosya olduğunda (yani birden fazla mimariye sahip bir dosya), otool-classic(1)'in üzerinde işlem yapacağı dosyanın mimarisini (mimari_türü) belirtir. (Şu anda bilinen mimari_türleri için arch(3) sayfasına bakın.) mimari_türü, dosyadaki tüm mimariler üzerinde işlem yapmak için "all" olabilir. Varsayılan, dosya barındırıyorsa yalnızca ana bilgisayar (host) mimarisini görüntülemektir; aksi takdirde dosyadaki tüm mimariler gösterilir.

-function_offsets Tersine çevirme yaparken yazdırılan son etiketten itibaren onluk ofseti yazdırır.

-mcpu=argüman llvm tersine çeviricisini kullanarak tersine çevirme yaparken belirtilen cpu argümanını kullanır.

--version otool-classic(1) sürüm bilgisini yazdırır.

Ayrıca Bakınız

dyld(1), install_name_tool(1), libtool(1), lipo(1), llvm-otool(1) ve vtool(1)