Ö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)