Friday 18 August 2017

Pilihan Objdump Disassemble Arm Binary


Dapatkah saya membongkar file biner datar menggunakan objdump. I m familiar dengan membongkar biner terstruktur yang dapat dieksekusi seperti file ELF yang menggunakan. Tetapi jika saya memiliki file biner datar yang saya tahu seharusnya dimuatkan, misalnya alamat 0xabcd1000, dapatkah saya Mintalah objdump untuk membongkar itu saya mencoba menyediakan pilihan seperti --start-address 0xabcd1000 tapi objdump hanya menyatakan bahwa ia tidak mengenali formatnya. Saya punya ide lain tentang cara membongkar file tapi saya ingin tahu apakah objdump bisa memberikan yang sederhana. Solution. asked 12 Jan 13 at 6 21.starblue dan hlovdal keduanya memiliki bagian dari jawaban kanonik Jika Anda ingin membongkar kode i8086 mentah, Anda biasanya menginginkan sintaks Intel, bukan sintaks AT T juga, jadi gunakan. Jika kode Anda ELF Atau atau E COFF, Anda bisa menggunakan short form. Untuk kode 32-bit atau 64-bit, hilangkan, header ELF 8086 sudah termasuk informasi ini. Perhatian seperti yang disarankan oleh jameslin juga merupakan pilihan yang baik, namun objdump biasanya hadir dengan OS dan bisa menangani semua arsitektur yang didukung oleh GN U binutils superset dari mereka yang didukung oleh GCC, dan hasilnya biasanya dapat dimasukkan ke dalam GNU karena ndisasm s biasanya dapat dimasukkan ke dalam nasm walaupun, tentu saja. Peter Cordes menunjukkan bahwa Agner Fog s objconv sangat bagus Ini menempatkan label pada target cabang, Membuat lebih mudah untuk mencari tahu apa kode yang tidak dapat membongkar sintaks NASM, YASM, MASM, atau ATT GNU. Mike Mike sudah tahu tentang --adjust-vma setara ndisasm adalah opsi - o. Untuk membongkar, Katakanlah, kode sh4 saya menggunakan satu biner dari Debian untuk menguji, gunakan ini dengan GNU binutils hampir semua pembongkaran lain dibatasi pada satu platform, seperti x86 dengan ndisasm dan objconv. The-m adalah mesin, dan - EL berarti Little Endian untuk Sh4eb gunakan - EB sebagai gantinya, yang relevan untuk arsitektur yang ada di kedua endianness. answered Dec 22 15 at 20 48.objdump menampilkan informasi tentang satu atau lebih file objek Pilihan mengendalikan informasi tertentu yang ditampilkan. Informasi ini banyak berguna bagi programmer yang Adalah wo Rking pada alat kompilasi, sebagai lawan dari programmer yang hanya ingin program mereka untuk mengkompilasi dan bekerja. objfile adalah file objek yang akan diperiksa Ketika Anda menentukan arsip, objdump menunjukkan informasi pada masing-masing file objek anggota. Bentuk panjang dan pendek dari Pilihan, yang ditunjukkan di sini sebagai alternatif, setara Setidaknya satu pilihan dari daftar - a, - d, - D, - e, - f, - g, - G, - h, - H, - p, - r, - R, - s, - S, - t, - T, - V, - x harus diberikan - a --archive-header Jika salah satu file objfile adalah arsip, tampilkan informasi header arsip dalam format yang mirip dengan ls - L Selain informasi yang bisa Anda cantumkan dengan ar tv, objdump - a menunjukkan format file objek dari setiap anggota arsip --adjust-vma offset Saat membuang informasi, tambahkan dulu offset ke semua alamat bagian Ini berguna jika alamat bagian tidak Sesuai dengan tabel simbol, yang bisa terjadi saat meletakkan bagian pada alamat tertentu saat menggunakan format yang tidak dapat mewakili alamat bagian, seperti b b btm-bfdname --target bfdname Sp Mengecualikan bahwa format kode objek untuk file objek adalah bfdname Pilihan ini mungkin tidak perlu objdump secara otomatis dapat mengenali banyak format. Menampilkan informasi ringkasan dari header bagian - h dari fu o yang secara eksplisit diidentifikasi - m sebagai file objek VAX di Format yang dihasilkan oleh kompiler Oasys Anda dapat mencantumkan format yang tersedia dengan opsi - i Lihat Seleksi Target untuk informasi lebih lanjut - C-demangle style Decode melontarkan nama simbol tingkat rendah ke dalam nama tingkat pengguna Selain menghapus garis bawah awal yang ditambahkan oleh sistem , Ini membuat nama fungsi C dapat dibaca Kompiler yang berbeda memiliki gaya mangling yang berbeda Argumen gaya demangling opsional dapat digunakan untuk memilih gaya demangling yang sesuai untuk kompiler Anda. Lihat informasi lebih lanjut mengenai demangling - g --debugging Informasi debugging display Ini mencoba untuk mengurai Debugging informasi yang tersimpan dalam file dan mencetaknya dengan menggunakan sintaks C seperti hanya beberapa jenis informasi debug saja yang saya Dilengkapi Beberapa jenis lain didukung oleh readelf - w Lihat readelf - e --debugging-tags Like - g tapi informasinya dihasilkan dalam format yang kompatibel dengan alat ctags - d --disassemble Tampilkan mnemonik assembler untuk instruksi mesin dari objfile Ini Pilihan hanya membongkar bagian-bagian yang diharapkan berisi instruksi - D --disassemble-all Like - d tapi membongkar isi semua bagian, tidak hanya yang diharapkan berisi instruksi --pengenalan-alamat Saat pembongkaran, cetak alamat lengkap pada masing-masing Line Ini adalah format pembongkaran yang lebih tua - EB - EL --endian Tentukan endianitas file objek Ini hanya mempengaruhi pembongkaran Hal ini dapat berguna saat membongkar format file yang tidak menggambarkan informasi endian, seperti S-records - f - File-header Menampilkan informasi ringkasan dari keseluruhan header dari masing-masing file objfile --file-start-context Tentukan bahwa ketika menampilkan kode sumber yang disambungkan secara disassembly mengasumsikan - S dari sebuah fil E yang belum ditampilkan, perpanjang konteks ke awal file - h --section-header --header Tampilkan informasi ringkasan dari header bagian dari file objek. Segmen-segmen kecil dapat dipindahkan ke alamat yang tidak standar, misalnya Dengan menggunakan pilihan - Ttext - Tdata atau - Tbss ke ld Namun, beberapa format file objek, seperti tidak menyimpan alamat awal dari segmen file Dalam situasi tersebut, walaupun mereka memindahkan bagian dengan benar, gunakan objdump - h untuk membuat daftar Header bagian file tidak dapat menunjukkan alamat yang benar Sebaliknya, ini menunjukkan alamat biasa, yang tersirat untuk target - H --help Mencetak ringkasan opsi untuk objdump dan exit - i --info Menampilkan daftar yang menunjukkan semua arsitektur dan objek Format yang tersedia untuk spesifikasi dengan nama - b atau - m - j - nama pilihan Informasi tampilan hanya untuk nama bagian --l --line-numbers Beri label pada layar menggunakan informasi debugging dengan nama file dan nomor baris sumber yang sesuai dengan kode objek Atau relokasi yang ditampilkan Hanya berguna dengan - d - D atau - r - m machine --architecture machine Tentukan arsitektur yang akan digunakan saat membongkar file objek Ini berguna saat membongkar file objek yang tidak menggambarkan informasi arsitektur, seperti S-records You Dapat mencantumkan arsitektur yang tersedia dengan opsi - i opsi - M - opsi pilihan opsi-opsi Pass target spesifik spesifik ke disassembler Hanya didukung pada beberapa target Jika perlu menentukan lebih dari satu opsi disassembler maka beberapa opsi M dapat digunakan. Atau dapat ditempatkan bersama-sama ke dalam daftar yang dipisahkan dengan koma. Jika sasarannya adalah arsitektur ARM maka peralihan ini dapat digunakan untuk memilih kumpulan nama register yang digunakan selama disassembler. Menentukan - M reg-names-std default akan memilih nama register sebagai Digunakan dalam dokumentasi set instruksi ARM, tapi dengan register 13 disebut sp, register 14 disebut lr dan register 15 yang disebut pc Specifying - M reg-names-apcs akan memilih nama yang digunakan oleh ARM P Rocedure Call Standard, sementara menentukan - M reg-names-raw hanya akan menggunakan r diikuti oleh nomor register. Ada juga dua varian pada skema penamaan daftar APCS yang diaktifkan oleh - M reg-name-atpcs dan - M reg-names - Khusus-atpcs yang menggunakan ARM Thumb Procedure Call Standard konvensi penamaan Entah dengan nama register normal atau nama register khusus. Pilihan ini juga dapat digunakan untuk arsitektur ARM untuk memaksa disassembler untuk menafsirkan semua instruksi sebagai petunjuk Thumb dengan menggunakan tombol - - disassembler-options force-thumb Hal ini dapat berguna saat mencoba membongkar kode jempol yang dihasilkan oleh kompiler lain. Untuk x86, beberapa fungsi duplikat pilihan dari saklar m, namun memungkinkan kontrol yang lebih halus Beberapa pilihan dari berikut ini mungkin Ditentukan sebagai string dipisahkan koma x86-64 i386 dan i8086 pilih pembongkaran untuk intel intel yang diberikan dan pilih antara mode sintaks intel dan mode sintaks AT T addr32 addr16 data32 dan data16 specif Ukuran alamat default dan ukuran operan Keempat opsi ini akan diganti jika x86-64 i386 atau i8086 muncul nanti pada opsi string Terakhir, akhiran ketika dalam mode AT T, menginstruksikan pembagi untuk mencetak akhiran mnemonik bahkan ketika akhirannya bisa jadi Disimpulkan oleh operan. Untuk PPC, booke booke32 dan booke64 memilih pembatalan instruksi BookE 32 dan 64 memilih pembangkitan PowerPC dan PowerPC64, masing-masing e300 memilih pembongkaran untuk keluarga e300.Untuk MIPS, opsi ini mengontrol pencetakan nama mneumonic instruksi dan daftar nama Dalam pembongkaran instruksi Beberapa pilihan dari berikut ini dapat ditentukan sebagai string yang dipisahkan koma, dan pilihan yang tidak sah diabaikan tanpa aliasing. Cetak instruksi mentah mneumonic alih-alih beberapa instruksi pseudo mneumonic IE print daddu atau atau alih-alih bergerak, bukan dari nop, Etc gpr-names ABI Cetak GPR nama referensi tujuan umum yang sesuai untuk ABI yang ditentukan Secara default, nama GPR dipilih accordi Ke ABI dari biner yang dibongkar nama-nama ABI Print FPR nama floating-point register yang sesuai untuk ABI yang ditentukan Secara default, nomor FPR dicetak daripada nama cp0-names ARCH Print CP0 coprocessor coprocessor coprocessor 0 mendaftarkan nama sebagai Sesuai untuk CPU atau arsitektur yang ditentukan oleh ARCH Secara default, nama register CP0 dipilih sesuai dengan arsitektur dan CPU dari biner yang dibongkar nama-nama ARCH Print HWR hardware register, yang digunakan oleh nama instruksi rdhwr yang sesuai untuk CPU atau arsitektur Ditentukan oleh ARCH Secara default, nama HWR dipilih sesuai dengan arsitektur dan CPU dari biner yang dibongkar dengan nama registrasi ABI Print GPR dan nama FPR yang sesuai untuk nama registrasi ABI yang dipilih ARCH Print register register CPU-specific CP0 register and HWR Nama yang sesuai untuk CPU atau arsitektur yang dipilih. Untuk opsi mana pun yang tercantum di atas, ABI atau ARCH dapat ditentukan sebagai angka untuk memiliki nomor yang dicetak r Selain dari nama, untuk jenis register yang dipilih Anda dapat mencantumkan nilai ABI dan ARCH yang ada dengan menggunakan opsi --help. Untuk VAX, Anda dapat menentukan alamat masuk fungsi dengan - M entri 0xf00ba Anda dapat menggunakan beberapa kali ini untuk membongkar dengan benar File biner VAX yang tidak berisi tabel simbol seperti ROM dumps Dalam kasus ini, masker entri fungsi dinyatakan dapat diterjemahkan sebagai instruksi VAX, yang mungkin akan menyebabkan sisa fungsi dibelokkan dengan salah - pos - header yang aman Cetak informasi Yang spesifik untuk format file objek Informasi yang tepat tercetak tergantung pada format file objek Untuk beberapa format file objek, tidak ada informasi tambahan yang dicetak - r --reloc Mencetak entri relokasi file Jika digunakan dengan - d atau - D the Relokasi dicetak diselingi dengan disassembly - R --dynamic-reloc Cetak entri relokasi dinamis dari file Ini hanya bermakna untuk objek dinamis, seperti beberapa jenis shared library - s --full-contents Tampilkan isi penuh dari setiap bagian yang diminta Secara default semua bagian yang tidak kosong ditampilkan - S --source Tampilkan kode sumber yang disisipkan dengan pembongkaran, jika mungkin Imakai - d --how-raw-insn Saat membongkar instruksi, Cetak instruksi dalam hex dan juga dalam bentuk simbolis Ini adalah default kecuali bila --prefix-address digunakan --no-show-raw-insn Saat membongkar instruksi, jangan mencetak byte instruksi Ini adalah default kapan - Alamat awalan digunakan - W --dwarf Menampilkan isi bagian debug DWARF pada file, jika ada yang hadir --G --stabs Menampilkan isi penuh dari setiap bagian yang diminta Tampilkan isi dan dan bagian dari ELF File Ini hanya berguna pada sistem seperti Solaris 2 0 dimana entri tabel simbol debugging dibawa ke bagian ELF Pada kebanyakan format file lainnya, debugging entri simbol-tabel disisipkan dengan simbol keterkaitan, dan terlihat dalam --syms Output Untuk informasi lebih lanjut Menusuk simbol, lihat Stabs --start-address address Mulai menampilkan data pada alamat yang ditentukan Ini mempengaruhi output dari opsi - d - r dan - s --stop-address address Berhenti menampilkan data pada alamat yang ditentukan Hal ini mempengaruhi output dari Opsi - d-r dan - s - t - syms Cetak entri tabel simbol dari file Ini sama dengan informasi yang diberikan oleh program nm - T --dynamic-syms Cetak entri tabel simbol dinamis dari file Ini Hanya bermakna untuk objek dinamis, seperti jenis perpustakaan bersama tertentu Ini mirip dengan informasi yang diberikan oleh program nm saat diberi opsi - D --dynamic - symptive - Saat menampilkan simbol termasuk yang menurut target dipertimbangkan Khusus dalam beberapa cara dan yang biasanya tidak menarik bagi pengguna - V - version Mencetak nomor versi objdump dan exit - x --all-header Menampilkan semua informasi header yang tersedia, termasuk tabel simbol dan entri relokasi Menggunakan - X sama dengan yang ditentukan Untuk semua format - a - f - h-p-r - t-wide-wide Format beberapa baris untuk perangkat output yang memiliki lebih dari 80 kolom. Juga jangan memotong nama simbol saat ditampilkan - z --disassemble-zeroes Biasanya Keluaran pembongkaran akan melewati blok nol Opsi ini mengarahkan disassembler untuk membongkar blok-blok tersebut, sama seperti data lainnya. objdump menampilkan informasi tentang satu atau lebih file objek Pilihan mengendalikan informasi khusus apa yang akan ditampilkan Informasi ini banyak berguna bagi programmer yang Bekerja pada alat kompilasi, sebagai lawan dari programmer yang hanya ingin program mereka untuk mengkompilasi dan bekerja. objfile adalah file objek yang akan diperiksa Ketika Anda menentukan arsip, objdump menunjukkan informasi pada masing-masing file objek anggota. Bentuk panjang dan pendek dari Pilihan, yang ditunjukkan di sini sebagai alternatif, setara Setidaknya satu pilihan dari daftar - a, - d, - D, - f, - g, - G, - h, - H, - p, - r, - R, - S, - t, - T, - V, - x harus diberikan.-a - archive-header Jika salah satu file objfile adalah arsip, layar Informasi header arsip dalam format yang mirip dengan ls - l Selain informasi yang bisa Anda daftar dengan ar tv objdump - a menunjukkan format file objek dari setiap anggota arsip .-- menyesuaikan-vma offset Saat membuang informasi, tambahkan dulu offset ke semua Alamat bagian Ini berguna jika alamat bagian tidak sesuai dengan tabel simbol, yang dapat terjadi saat meletakkan bagian pada alamat tertentu saat menggunakan format yang tidak dapat mewakili alamat bagian, seperti.-b bfdname --target bfdname Tentukan bahwa Format kode objek untuk file objek adalah bfdname Pilihan ini mungkin tidak perlu objdump secara otomatis dapat mengenali banyak format. displays informasi ringkasan dari header bagian - h dari fu o yang secara eksplisit diidentifikasi - m sebagai file objek VAX dalam format yang dihasilkan Oleh kompiler Oasys Anda dapat mencantumkan format yang tersedia dengan opsi - i Lihat bagian 15 1 Sasaran Seleksi untuk informasi lebih lanjut.-Gaya C - demangle Decode menanggalkan nama simbol tingkat rendah ke dalam pengguna-lev Nama el Selain menghilangkan garis bawah awal yang ditambahkan oleh sistem, ini membuat nama fungsi C dapat dibaca Kompiler yang berbeda memiliki gaya mangling yang berbeda Argumen gaya demangling opsional dapat digunakan untuk memilih gaya demangling yang sesuai untuk kompiler Anda. Lihat bagian 9 c filt untuk informasi lebih lanjut tentang Demangling.-G --debugging Menampilkan informasi debug Ini mencoba untuk mengurai informasi debug yang tersimpan dalam file dan mencetaknya dengan menggunakan sintaks C seperti hanya beberapa jenis informasi debug yang telah diimplementasikan.-d --disassemble Tampilkan mnemonik assembler untuk Instruksi mesin dari objfile Opsi ini hanya membongkar bagian yang diharapkan berisi instruksi.-D --disassemble-all Like - d tapi membongkar isi semua bagian, tidak hanya yang diharapkan berisi instruksi .-- awalan-alamat Saat pembongkaran , Cetak alamat lengkap pada setiap baris Ini adalah format pembongkaran yang lebih tua. - membongkar-nol Biasanya disko Keluaran keluaran akan melewatkan blok nol Opsi ini mengarahkan pembongkar untuk membongkar blok tersebut, sama seperti data lainnya.-EB - EL --endian Tentukan endianitas file objek Ini hanya akan mempengaruhi pembongkaran Hal ini dapat berguna saat membongkar format file Yang tidak menjelaskan informasi endianness, seperti S-records.-f --file-header Menampilkan informasi ringkasan dari keseluruhan header dari masing-masing file objfile .-- konteks awal file Tentukan bahwa ketika menampilkan kode sumber yang disisipkan, disassembly mengasumsikan - S dari file yang belum ditampilkan, perpanjang konteks ke awal file.-h --section-header --header Menampilkan informasi ringkasan dari header bagian dari file objek. Segmen-segmen kecil dapat dipindahkan ke Alamat yang tidak standar, misalnya dengan menggunakan opsi - TText - Tdata or - Tbss to ld Namun, beberapa format file objek, seperti tidak menyimpan alamat awal dari segmen file Dalam situasi tersebut, walaupun ia merelokasi bagian co Rrectly, menggunakan objdump - h untuk mencantumkan header bagian file tidak dapat menunjukkan alamat yang benar. Sebaliknya, ini menunjukkan alamat biasa, yang tersirat untuk target .-- help Cetak ringkasan opsi untuk objdump dan exit.-i - Info Menampilkan daftar yang menampilkan semua arsitektur dan format objek yang tersedia untuk spesifikasi dengan nama - b atau - m.-j name --section name Menampilkan informasi hanya untuk nama bagian.-l --line-numbers Beri label pada layar menggunakan informasi debugging dengan nama file Dan nomor baris sumber yang sesuai dengan kode objek atau relokasi yang ditampilkan Hanya berguna dengan mesin - d - D atau - r.-m - mesin arsitektur Tentukan arsitektur yang akan digunakan saat membongkar file objek Ini berguna saat membongkar file objek yang tidak Uraikan informasi arsitektur, seperti S-records Anda bisa mencantumkan arsitektur yang tersedia dengan opsi - i.-Pilihan M - opsi pilihan opsi umpan balik Pass target spesifik ke disassembler Hanya didukung pada beberapa target. Jika target Adalah arsitektur ARM maka saklar ini dapat digunakan untuk memilih kumpulan nama register yang digunakan selama disassembler Menentukan - M reg-name-std default akan memilih nama register seperti yang digunakan pada dokumentasi set instruksi ARM, namun dengan register 13 disebut sp , Register 14 disebut lr dan register 15 yang disebut pc Specifying - M reg-names-apcs akan memilih nama yang digunakan oleh ARM Procedure Call Standard, sementara menentukan - M reg-names-raw hanya akan menggunakan r diikuti oleh nomor register. Ada juga dua varian pada skema penamaan register APCS yang diaktifkan oleh - M reg-names-atpcs dan - M reg-names-special-atpcs yang menggunakan ARM Thumb Procedure Call Standard konvensi penamaan Entah dengan nama register normal atau register khusus. Nama. Pilihan ini juga dapat digunakan untuk arsitektur ARM untuk memaksa disassembler untuk menafsirkan semua instruksi sebagai petunjuk Thumb dengan menggunakan tombol --disassembler-options force-thumb Ini dapat berguna saat mencoba membongkar kode ibu jari produksi Ed oleh kompiler lain. Untuk x86, beberapa fungsi duplikat pilihan dari saklar m, namun memungkinkan kontrol berbutir halus Beberapa pilihan dari berikut dapat ditentukan sebagai string yang dipisahkan koma x86-64 i386 dan i8086 pilih pembongkaran untuk yang diberikan. Arsitektur intel dan att pilih antara mode sintaks intel dan mode sintaks AT T addr16 addr16 data32 dan data16 tentukan ukuran alamat default dan ukuran operan Keempat opsi ini akan diganti jika x86-64 i386 atau i8086 muncul kemudian pada opsi string Terakhir, akhiran saat Dalam mode AT T, menginstruksikan pembagi untuk mencetak akhiran mnemonik bahkan ketika sufiksnya bisa disimpulkan oleh operan. Untuk PPC, booke booke32 dan booke64 memilih pembongkaran instruksi BookE 32 dan 64 masing-masing memilih PowerPC dan PowerPC64.-p - - private-header Mencetak informasi yang spesifik untuk format file objek Informasi yang tepat tercetak tergantung pada format file objek Untuk beberapa format file objek, tidak ada tambahan Informasi dicetak.-r - reloc Mencetak entri relokasi file Jika digunakan dengan - d atau - D relokasi dicetak diselingi pembongkaran.-R --dynamic-reloc Cetak entri relokasi dinamis dari file Ini adalah Hanya bermakna untuk objek dinamis, seperti beberapa jenis shared library.-s - full-contents Menampilkan isi penuh dari setiap bagian yang diminta.-S - source Menampilkan kode sumber yang disisipkan dengan pembongkaran, jika mungkin Implies - d .-- Show-raw-insn Saat membongkar instruksi, cetak instruksi dalam hex dan juga dalam bentuk simbolis Ini adalah default kecuali bila --prefix-address digunakan .-- no-show-raw-insn Saat membongkar instruksi, jangan cetak Byte instruksi Ini adalah default ketika --prefix-address digunakan.-G --stabs Menampilkan isi penuh dari setiap bagian yang diminta Menampilkan isi dan dan bagian dari file ELF Ini hanya berguna pada sistem seperti Solaris 2 0 di mana entri simbol-tabel debugging dilakukan Dalam bagian ELF Dalam kebanyakan format file lainnya, debugging entri simbol-tabel disisipkan dengan simbol keterkaitan, dan terlihat pada output --syms Untuk informasi lebih lanjut tentang simbol menusuk, lihat bagian Stabs Ikhtisar dalam format debug menusuk .-- mulai Alamat alamat Mulai menampilkan data pada alamat yang ditentukan Hal ini mempengaruhi keluaran opsi - d-r dan - s .-- alamat stop-address Berhenti menampilkan data pada alamat yang ditentukan Hal ini mempengaruhi output dari - d - r dan - S options.-t - syms Mencetak entri tabel simbol dari file Ini sama dengan informasi yang diberikan oleh program nm.-T --dynamic-syms Cetak entri tabel simbol dinamis dari file Ini hanya bermakna untuk dinamika Objek, seperti jenis shared library tertentu Ini serupa dengan informasi yang diberikan oleh program nm saat diberi opsi - D --dynamic .-- version Cetak nomor versi objdump dan exit.-x - all-header Display Semua informasi header yang tersedia, termasuk tabel simbol dan Entri relokasi Menggunakan - x setara dengan menentukan semua - a - f - h - r - t.-w - wide Memformat beberapa baris untuk perangkat output yang memiliki lebih dari 80 kolom Juga jangan memotong nama simbol saat ditampilkan. Objdump menampilkan informasi tentang satu atau lebih file objek Pilihan mengendalikan informasi tertentu yang ditampilkan. Informasi ini banyak berguna bagi pemrogram yang mengerjakan alat kompilasi, berlawanan dengan programer yang hanya menginginkan program mereka untuk dikompilasi dan bekerja. objfile adalah objeknya. File yang akan diperiksa Saat Anda menentukan arsip, objdump menampilkan informasi pada masing-masing file objek anggota. Bentuk opsi panjang dan pendek, yang ditunjukkan di sini sebagai alternatif, setara Setidaknya satu pilihan dari daftar - a, - d, - D , - e, - f, - g, - G, - h, - H, - p, - P, - r, - R, - s, - S, - t, - T, - V, - x harus Diberikan - a --archive-header Jika salah satu file objfile adalah arsip, tampilkan informasi header arsip dalam format yang mirip dengan ls - l Selain informasi yang bisa Anda cantumkan dengan ar tv, ob Jdump - a menunjukkan format file objek dari setiap anggota arsip --adjust-vma offset Saat membuang informasi, tambahkan dulu offset ke semua alamat bagian Ini berguna jika alamat bagian tidak sesuai dengan tabel simbol, yang dapat terjadi saat meletakkan Bagian pada alamat tertentu saat menggunakan format yang tidak dapat mewakili alamat bagian, seperti - b bfdname --target bfdname Tentukan bahwa format kode objek untuk file objek adalah bfdname Pilihan ini mungkin tidak perlu objdump secara otomatis dapat mengenali banyak format. Menampilkan informasi ringkasan dari header bagian - h dari fu o yang secara eksplisit diidentifikasi - m sebagai file objek VAX dalam format yang dihasilkan oleh kompiler Oasys Anda dapat mencantumkan format yang tersedia dengan opsi - i Lihat Seleksi Target untuk informasi lebih lanjut - C - - demangle style Decode merendahkan nama simbol tingkat rendah ke dalam nama tingkat pengguna Selain menghapus garis bawah awal yang ditambahkan oleh sistem, ini membuat nama fungsi C dapat dibaca. Berbeda dengan compi Lers memiliki gaya mangling yang berbeda Argumen gaya demangling opsional dapat digunakan untuk memilih gaya demangling yang sesuai untuk compiler Anda. Lihat informasi lebih lanjut mengenai demangling - g --debugging Menampilkan informasi debug Ini mencoba untuk mengurai informasi format debugging STABS dan IEEE yang tersimpan di File dan mencetaknya dengan menggunakan sintaks C seperti C Jika tidak satu pun dari format ini ditemukan, opsi ini jatuh kembali pada opsi - W untuk mencetak informasi DWARF di file - e --debugging-tags Like - g namun informasinya dihasilkan. Dalam format yang kompatibel dengan alat ctags - d --disassemble Tampilkan mnemonik assembler untuk instruksi mesin dari objfile Opsi ini hanya membongkar bagian yang diharapkan berisi instruksi - D --disassemble-all Like - d tapi membongkar isi semua Bagian, tidak hanya yang diharapkan berisi petunjuk. Pilihan ini juga memiliki efek halus pada pembongkaran instruksi di bagian kode Bila pilihan - ada di effe Ct objdump akan mengasumsikan bahwa setiap simbol yang ada dalam bagian kode terjadi pada batas antara instruksi dan akan menolak untuk membongkar melintasi batas tersebut. Bila opsi - D berlaku, namun asumsi ini ditekan. Ini berarti bahwa adalah mungkin untuk output dari - d dan - D untuk berbeda jika, misalnya, data disimpan dalam bagian kode. Jika sasarannya adalah arsitektur ARM, sakelar ini juga memiliki efek memaksa disassembler untuk memecahkan kode potongan data yang ditemukan di bagian kode seolah-olah mereka adalah petunjuk --prefix-addresses Saat pembongkaran, cetak alamat lengkap pada setiap baris Ini adalah format pembongkaran yang lebih tua - EB - EL --endian Tentukan endianitas file objek yang hanya mempengaruhi pembongkaran Ini dapat berguna saat membongkar format file yang melakukan Tidak menggambarkan informasi endianness, seperti S-records - f --file-header Menampilkan informasi ringkasan dari keseluruhan header dari masing-masing file objfile - F --file-offsets Ketika membongkar bagian, wheneve Ra simbol ditampilkan, juga menampilkan file offset wilayah data yang akan dibuang Jika nol dilewati, maka saat pembongkaran dilanjutkan, beritahu pengguna berapa angka nol yang dilewati dan file offset dari lokasi dari mana Pembongkaran resume Ketika bagian dumping, tampilkan file offset lokasi dari tempat pembuangan dimulai --file-start-context Tentukan bahwa saat menampilkan kode sumber yang disebarluaskan, disassembly mengasumsikan --S dari file yang belum ditampilkan, perpanjang konteksnya ke Permulaan dari berkas - h --section-headers --header Menampilkan informasi ringkasan dari header bagian dari file objek. Segmen-segmen kecil dapat direlokasi ke alamat yang tidak standar, misalnya dengan menggunakan opsi - TText - Tdata or - Tbss to Namun, beberapa format file objek, seperti tidak menyimpan alamat awal dari segmen file Dalam situasi tersebut, walaupun mereka memindahkan bagian dengan benar, dengan menggunakan objdump - h untuk mencantumkan judul bagian header tidak dapat dilakukan. Dengan alamat yang benar Sebaliknya, ini menunjukkan alamat biasa, yang tersirat untuk target. Perhatikan, dalam beberapa kasus mungkin bagi sebuah bagian untuk memiliki atribut READONLY dan NOREAD set Dalam kasus seperti itu, atribut NOREAD lebih diutamakan, namun Objdump akan melaporkan keduanya karena pengaturan bit flag yang sebenarnya mungkin penting - H --help Cetak ringkasan opsi untuk objdump dan exit - i --info Menampilkan daftar yang menunjukkan semua arsitektur dan format objek yang tersedia untuk spesifikasi dengan - b Atau - m - j name --section name Menampilkan informasi hanya untuk nama bagian - l --line-numbers Beri label pada layar menggunakan informasi debugging dengan nama file dan nomor baris sumber yang sesuai dengan kode objek atau relokasi yang ditampilkan. Hanya berguna dengan - d - Mesin D atau-r-m - mesin arsitektur Tentukan arsitektur yang akan digunakan saat membongkar file objek Ini berguna saat membongkar file objek yang tidak menggambarkan informasi arsitektur, seperti S-record Anda bisa mencantumkan daftar Arsitektur yang mudah digunakan dengan opsi - i. Jika targetnya adalah arsitektur ARM maka saklar ini memiliki efek tambahan. Ini membatasi pembongkaran hanya untuk instruksi yang didukung oleh arsitektur yang ditentukan oleh mesin. Jika perlu menggunakan saklar ini karena file input tidak Tidak mengandung informasi arsitektur apapun, namun juga diinginkan untuk membongkar semua instruksi yang digunakan - opsi m - Marm - pilihan opsi opsi - opsi pilihan opsi Beri informasi spesifik target ke pembongkaran Hanya didukung pada beberapa target Jika perlu menentukan lebih dari satu disassembler Pilihan maka beberapa opsi-M dapat digunakan atau dapat ditempatkan bersama-sama ke dalam daftar yang dipisahkan koma. Untuk ARC, dsp mengontrol pencetakan instruksi DSP, spfp memilih pencetakan instruksi FP presisi FPX tunggal, dpfp memilih pencetakan presisi ganda FPX. Instruksi FP, quarkseem memilih pencetakan instruksi QuarkSE-EM khusus, fpuda memilih pencetakan assist presisi ganda. Ructions, fpus memilih pencetakan FPU instruksi presisi tunggal FP, sementara fpud memilih pencetakan FPU souble precision FP instructions. Jika targetnya adalah arsitektur ARM maka switch ini bisa digunakan untuk memilih set nama register yang digunakan selama disassembler. Menentukan - M reg-nama-std default akan memilih nama register seperti yang digunakan dalam dokumentasi set instruksi ARM, tapi dengan register 13 disebut sp, register 14 disebut lr dan register 15 called pc Specifying - M reg-names-apcs akan memilih nama Set digunakan oleh ARM Procedure Call Standard, sementara menentukan - M reg-names-raw hanya akan menggunakan r diikuti oleh nomor register. Ada juga dua varian pada skema penamaan register APCS yang diaktifkan oleh - M reg-names-atpy dan - M reg-nama-khusus-atpcs yang menggunakan ARM Thumb Procedure Call Standard konvensi penamaan Entah dengan nama register normal atau nama register khusus. Pilihan ini juga dapat digunakan untuk arsitektur ARM untuk memaksa disassembler ke interp. Rasakan semua instruksi sebagai petunjuk Thumb dengan menggunakan tombol --disassembler-options force-thumb Ini berguna saat mencoba membongkar kode jempol yang dihasilkan oleh kompiler lain. Untuk x86, beberapa fungsi duplikat pilihan dari - m switch, namun Memungkinkan kontrol berbutir halus Beberapa pilihan dari berikut ini dapat ditentukan sebagai string yang dipisahkan koma x86-64 i386 i8086 Pilih pembongkaran untuk arsitektur intel yang diberikan att Pilih antara mode sintaks intel dan mode sintaks AT T amd64 intel64 Pilih antara AMD64 ISA dan Intel64 ISA intel - mnemonic att-mnemonic Select between intel mnemonic mode and AT T mnemonic mode Note intel-mnemonic implies intel and att-mnemonic implies att addr64 addr32 addr16 data32 data16 Specify the default address size and operand size These four options will be overridden if x86-64 i386 or i8086 appear later in the option string suffix When in AT T mode, instructs the disassembler to print a mnemonic suffix even when the suffix could be inf erred by the operands. For PowerPC, booke controls the disassembly of BookE instructions 32 and 64 select PowerPC and PowerPC64 disassembly, respectively e300 selects disassembly for the e300 family 440 selects disassembly for the PowerPC 440 ppcps selects disassembly for the paired single instructions of the PPC750CL. For MIPS, this option controls the printing of instruction mnemonic names and register names in disassembled instructions Multiple selections from the following may be specified as a comma separated string, and invalid options are ignored no-aliases Print the raw instruction mnemonic instead of some pseudo instruction mnemonic I e print daddu or or instead of move , sll instead of nop , etc msa Disassemble MSA instructions virt Disassemble the virtualization ASE instructions xpa Disassemble the eXtended Physical Address XPA ASE instructions gpr-names ABI Print GPR general-purpose register names as appropriate for the specified ABI By default, GPR names are selected accordi ng to the ABI of the binary being disassembled fpr-names ABI Print FPR floating-point register names as appropriate for the specified ABI By default, FPR numbers are printed rather than names cp0-names ARCH Print CP0 system control coprocessor coprocessor 0 register names as appropriate for the CPU or architecture specified by ARCH By default, CP0 register names are selected according to the architecture and CPU of the binary being disassembled hwr-names ARCH Print HWR hardware register, used by the rdhwr instruction names as appropriate for the CPU or architecture specified by ARCH By default, HWR names are selected according to the architecture and CPU of the binary being disassembled reg-names ABI Print GPR and FPR names as appropriate for the selected ABI reg-names ARCH Print CPU-specific register names CP0 register and HWR names as appropriate for the selected CPU or architecture. For any of the options listed above, ABI or ARCH may be specified as numeric to have numbers printed r ather than names, for the selected types of registers You can list the available values of ABI and ARCH using the --help option. For VAX, you can specify function entry addresses with - M entry 0xf00ba You can use this multiple times to properly disassemble VAX binary files that don t contain symbol tables like ROM dumps In these cases, the function entry mask would otherwise be decoded as VAX instructions, which would probably lead the rest of the function being wrongly disassembled - p --private-headers Print information that is specific to the object file format The exact information printed depends upon the object file format For some object file formats, no additional information is printed - P options --private options Print information that is specific to the object file format The argument options is a comma separated list that depends on the format the lists of options is displayed with the help. For XCOFF, the available options are header aout sections syms relocs lineno, loader e xcept typchk traceback toc ldinfo. Not all object formats support this option In particular the ELF format does not use it - r --reloc Print the relocation entries of the file If used with - d or - D the relocations are printed interspersed with the disassembly - R --dynamic-reloc Print the dynamic relocation entries of the file This is only meaningful for dynamic objects, such as certain types of shared libraries As for - r if used with - d or - D the relocations are printed interspersed with the disassembly - s --full-contents Display the full contents of any sections requested By default all non-empty sections are displayed - S --source Display source code intermixed with disassembly, if possible Implies - d --prefix prefix Specify prefix to add to the absolute paths when used with - S --prefix-strip level Indicate how many initial directory names to strip off the hardwired absolute paths It has no effect without --prefix prefix --show-raw-insn When disassembling instructions, print the instruc tion in hex as well as in symbolic form This is the default except when --prefix-addresses is used --no-show-raw-insn When disassembling instructions, do not print the instruction bytes This is the default when --prefix-addresses is used --insn-width width Display width bytes on a single line when disassembling instructions - W lLiaprmfFsoRt --dwarf rawline, decodedline, info, abbrev, pubnames --dwarf aranges, macro, frames, frames-interp, str, loc --dwarf Ranges, pubtypes, traceinfo, traceabbrev --dwarf tracearanges, gdbindex Displays the contents of the debug sections in the file, if any are present If one of the optional letters or words follows the switch then only data found in those specific sections will be dumped. Note that there is no single letter option to display the content of trace sections or. Note the output from the info option can also be affected by the options --dwarf-depth the --dwarf-start and the --dwarf-check --dwarf-depth n Limit the dump of the section to n child ren This is only useful with --dwarf info The default is to print all DIEs the special value 0 for n will also have this effect. With a non-zero value for n DIEs at or deeper than n levels will not be printed The range for n is zero-based --dwarf-start n Print only DIEs beginning with the DIE numbered n This is only useful with --dwarf info. If specified, this option will suppress printing of any header information and all DIEs before the DIE numbered n Only siblings and children of the specified DIE will be printed. This can be used in conjunction with --dwarf-depth --dwarf-check Enable additional checks for consistency of Dwarf information - G --stabs Display the full contents of any sections requested Display the contents of the and and sections from an ELF file This is only useful on systems such as Solaris 2 0 in which debugging symbol-table entries are carried in an ELF section In most other file formats, debugging symbol-table entries are interleaved with linkage symbols, and are vi sible in the --syms output --start-address address Start displaying data at the specified address This affects the output of the - d - r and - s options --stop-address address Stop displaying data at the specified address This affects the output of the - d - r and - s options - t --syms Print the symbol table entries of the file This is similar to the information provided by the nm program, although the display format is different The format of the output depends upon the format of the file being dumped, but there are two main types One looks like this. where the number inside the square brackets is the number of the entry in the symbol table, the sec number is the section number, the fl value are the symbol s flag bits, the ty number is the symbol s type, the scl number is the symbol s storage class and the nx value is the number of auxilary entries associated with the symbol The last two fields are the symbol s value and its name. The other common output format, usually seen with ELF based fi les, looks like this. Here the first number is the symbol s value sometimes refered to as its address The next field is actually a set of characters and spaces indicating the flag bits that are set on the symbol These characters are described below Next is the section with which the symbol is associated or ABS if the section is absolute ie not connected with any section , or UND if the section is referenced in the file being dumped, but not defined there. After the section name comes another field, a number, which for common symbols is the alignment and for other symbol is the size Finally the symbol s name is displayed. The flag characters are divided into 7 groups as follows l g u The symbol is a local l , global g , unique global u , neither global nor local a space or both global and local A symbol can be neither local or global for a variety of reasons, e g because it is used for debugging, but it is probably an indication of a bug if it is ever both local and global Unique global sy mbols are a GNU extension to the standard set of ELF symbol bindings For such a symbol the dynamic linker will make sure that in the entire process there is just one symbol with this name and type in use w The symbol is weak w or strong a space C The symbol denotes a constructor C or an ordinary symbol a space W The symbol is a warning W or a normal symbol a space A warning symbol s name is a message to be displayed if the symbol following the warning symbol is ever referenced I i The symbol is an indirect reference to another symbol I , a function to be evaluated during reloc processing i or a normal symbol a space d D The symbol is a debugging symbol d or a dynamic symbol D or a normal symbol a space F f O The symbol is the name of a function F or a file f or an object O or just a normal symbol a space - T --dynamic-syms Print the dynamic symbol table entries of the file This is only meaningful for dynamic objects, such as certain types of shared libraries This is similar to the infor mation provided by the nm program when given the - D --dynamic option. The output format is similar to that produced by the --syms option, except that an extra field is inserted before the symbol s name, giving the version information associated with the symbol If the version is the default version to be used when resolving unversioned references to the symbol then it s displayed as is, otherwise it s put into parentheses --special-syms When displaying symbols include those which the target considers to be special in some way and which would not normally be of interest to the user - V --version Print the version number of objdump and exit - x --all-headers Display all available header information, including the symbol table and relocation entries Using - x is equivalent to specifying all of - a - f - h - p - r - t - w --wide Format some lines for output devices that have more than 80 columns Also do not truncate symbol names when they are displayed - z --disassemble-zeroes Normally the disassembly output will skip blocks of zeroes This option directs the disassembler to disassemble those blocks, just like any other data. or --target instead of - b - D is disassemble the contents of all sections - b bfdname or --target bfdname will force reading as specified object-code format not elf but raw binary in our case - m machine will specify the architecture to use in our file there is no header with arch info - M options are options of disassembler addr16,data16 are used to specify the default address size and operand size treat code as i8086 one in the universal x86 disasm engine osgx Nov 28 12 at 16 41.-b specifies 16-, 32- or 64-bit mode The default is 16-bit mode - o is the notional load address for the file This option causes ndisasm to get the addresses it lists down the left hand margin, and the target addresses of PC-relative jumps and calls, right - s specifies a synchronisation address, such that ndisasm will not output any machine instruction which encompasses bytes on both sides of the address Hence the instruction which starts at that address will be correctly disassembled Janus Troelsen May 6 13 at 18 49.starblue and hlovdal both have parts of the canonical answer If you want to disassemble raw i8086 code, you usually want Intel syntax, not AT T syntax, too, so use. If your code is ELF or or E COFF , you can use the short form. For 32-bit or 64-bit code, omit the ,8086 the ELF header already includes this information. ndisasm as suggested by jameslin is also a good choice, but objdump usually comes with the OS and can deal with all architectures supported by GNU binutils superset of those supported by GCC , and its output can usually be fed into GNU as ndisasm s can usually be fed into nasm though, of course. Peter Cordes suggests that Agner Fog s objconv is very nice It puts labels on branch targets, making a lot easier to figure out what the code does It can disassemble into NASM, YASM, MASM, or AT T GNU syntax. Multimedia Mike already found out about --adjus t-vma the ndisasm equivalent is the - o option. To disassemble, say, sh4 code I used one binary from Debian to test , use this with GNU binutils almost all other disassemblers are limited to one platform, such as x86 with ndisasm and objconv. The - m is the machine, and - EL means Little Endian for sh4eb use - EB instead , which is relevant for architectures that exist in either endianness. answered Dec 22 15 at 20 44.It built fine right out of the box on GNU Linux, for me But yes, it s x86 x86-64 only, unlike GNU binutils However, it has a lot of nice x86-specific hints that it adds as comments, like when an operand-size prefix can cause an LCP-stall in the decoders of an Intel CPU By all means, mention it in your answer One of the major purposes of comments is to help the poster improve their answer, not just as something that later viewers need to read, too Peter Cordes Dec 23 15 at 11 11.

No comments:

Post a Comment