Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
IL Disassembler adalah alat pendamping untuk IL Assembler (Ilasm.exe). Ildasm.exe mengambil file portabel yang dapat dieksekusi (PE) yang berisi kode bahasa perantara (IL) dan membuat file teks yang cocok sebagai input untuk Ilasm.exe.
Alat ini otomatis terpasang dengan Visual Studio. Untuk menjalankan alat, gunakan Prompt Perintah Pengembang Visual Studio atau PowerShell Pengembang Visual Studio.
Pada perintah, masukkan berikut ini:
Sintaks
ildasm [options] [PEfilename] [options]
Parameter
Opsi berikut tersedia untuk .exe, .dll, .obj, .lib, dan .winmd file.
| Opsi | Deskripsi |
|---|---|
/out=filename |
Membuat file keluaran dengan filename yang ditentukan, daripada menampilkan hasilnya dalam antarmuka pengguna grafis. |
| /rtf | Menghasilkan output dalam format rich text. Tidak valid dengan opsi /text. |
| /text | Menampilkan hasil ke jendela konsol, bukan di antarmuka pengguna grafis atau sebagai file output. |
| /html | Menghasilkan output dalam format HTML. Hanya valid dengan opsi /output. |
| /? | Menampilkan sintaks perintah dan opsi untuk alat. |
Opsi tambahan berikut tersedia untuk file .exe, .dll, dan .winmd.
| Opsi | Deskripsi |
|---|---|
| /bytes | Menampilkan byte aktual, dalam format heksadesimal, sebagai komentar instruksi. |
| /caverbal | Menghasilkan gumpalan atribut khusus dalam bentuk verbal. Standarnya adalah bentuk biner. |
| /linenum | Termasuk referensi ke baris sumber asli. |
| /nobar | Menekan jendela pop-up indikator kemajuan pembongkaran. |
| /noca | Menekan output atribut khusus. |
| /project | Menampilkan metadata seperti yang terlihat pada kode terkelola, bukan seperti yang muncul di Windows Runtime asli. Jika PEfilename bukan file metadata Windows (.winmd), opsi ini tidak akan berpengaruh. Lihat .NET Framework Support untuk Aplikasi Windows Store dan Windows Runtime. |
| /pubonly | Membongkar hanya jenis dan anggota publik. Setara dengan /visibility:PUB. |
| /quoteallnames | Termasuk semua nama dalam tanda kutip tunggal. |
| /raweh | Menunjukkan klausul penanganan pengecualian dalam bentuk mentah. |
| /source | Menampilkan baris sumber asli sebagai komentar. |
| /tokens | Menampilkan token metadata kelas dan anggota. |
/Visibilitas:vis[+vis...] |
Membongkar hanya tipe atau anggota dengan visibilitas yang ditentukan. Berikut ini adalah nilai yang valid untuk vis:PUB — PublikPRI — PrivatFAM — KeluargaASM — RakitanFAA — Keluarga dan RakitanFOA — Keluarga atau RakitanPSC — Cakupan PrivatUntuk definisi pengubah visibilitas ini, lihat MethodAttributes dan TypeAttributes. |
Opsi berikut berlaku untuk file .exe, .dll, dan .winmd untuk file atau keluaran konsol saja.
| Opsi | Deskripsi |
|---|---|
| /all | Menentukan kombinasi /header, /bytes, /stats, /classlist, dan /tokens pilihan. |
| /classlist | Termasuk daftar kelas yang didefinisikan dalam modul. |
| /forward | Menggunakan deklarasi kelas maju. |
| /headers | Termasuk informasi header file dalam output. |
/benda:class[::member[(sig]] |
Membongkar berikut ini tergantung pada argumen yang diberikan: - Membongkar class yang ditentukan.- Membongkar member dari class yang ditentukan.- Membongkar member dari class dengan tanda tangan yang ditentukan sig. Formatnya sig adalah:[ instance] returnType(parameterType1, parameterType2, ..., parameterTypeN). |
| /noil | Menekan keluaran kode perakitan IL. |
| /stats | Termasuk statistik pada gambar. |
| /typelist | Menghasilkan daftar lengkap jenis, untuk mempertahankan pemesanan jenis dalam perjalanan pulang pergi. |
| /unicode | Menggunakan pengkodean Unicode untuk output. |
| /utf8 | Menggunakan pengkodean UTF-8 untuk output. ANSI adalah default. |
Opsi berikut berlaku untuk .exe, .dll, .obj, .lib, dan .winmd file untuk file atau keluaran konsol saja.
| Opsi | Deskripsi |
|---|---|
/metadata[=specifier] |
Menampilkan metadata, dimana specifier adalah:MDHEADER — Tampilkan informasi dan ukuran header metadata.HEX — Tampilkan informasi dalam hex serta dalam kata-kata.CSV — Tampilkan jumlah rekaman dan ukuran tumpukan.UNREX — Tampilkan eksternal yang belum terselesaikan.SCHEMA — Tampilkan header metadata dan informasi skema.RAW — Tampilkan tabel metadata mentah.HEAPS — Tunjukkan tumpukan mentah.VALIDATE — Validasi konsistensi metadata.Anda dapat menentukan /metadata beberapa kali, dengan nilai yang berbeda untuk specifier. |
Opsi berikut hanya berlaku untuk file .lib untuk file atau keluaran konsol.
| Opsi | Deskripsi |
|---|---|
/objectfile=filename |
Memperlihatkan metadata dari file objek tunggal di pustaka yang ditentukan. |
Catatan
Semua opsi untuk Ildasm.exe tidak peka huruf besar-kecil dan dikenali oleh tiga huruf pertama. Misalnya, /quo sama dengan /quoteallnames. Opsi yang menentukan argumen menerima tanda titik dua (:) atau sama dengan (=) sebagai pemisah antara opsi dan argumen. Misalnya, /output: nama file setara dengan /output=nama file.
Keterangan
Ildasm.exe hanya beroperasi pada file PE di disk. Ini tidak beroperasi pada file yang diinstal di cache perakitan global.
File teks yang dihasilkan oleh Ildasm.exe dapat digunakan sebagai masukan ke IL Assembler (Ilasm.exe). Ini berguna, misalnya, saat mengkompilasi kode dalam bahasa pemrograman yang tidak mendukung semua atribut metadata runtime. Setelah mengkompilasi kode dan menjalankan outputnya melalui Ildasm.exe, file teks IL yang dihasilkan dapat diedit secara manual untuk menambahkan atribut yang hilang. Anda kemudian dapat menjalankan file teks ini melalui IL Assembler untuk menghasilkan file akhir yang dapat dieksekusi.
Catatan
Saat ini, Anda tidak dapat menggunakan teknik ini dengan file PE yang berisi kode asli yang disematkan (misalnya, file PE yang diproduksi oleh Visual C++).
Anda dapat menggunakan GUI default di IL Disassembler untuk melihat metadata dan kode yang dibongkar dari file PE yang ada dalam tampilan pohon hierarki. Untuk menggunakan GUI, ketik ildasm pada baris perintah tanpa menyediakan argumen PEfilename atau opsi apa pun. Dari File menu, Anda dapat menavigasi ke file PE yang ingin Anda muat ke Ildasm.exe. Untuk menyimpan metadata dan kode yang dibongkar ditampilkan untuk PE yang dipilih, pilih Dump perintah dari File menu. Untuk menyimpan tampilan pohon hierarkis saja, pilih perintah Dump Treeview dari File menu. Untuk panduan terperinci untuk memuat file ke Ildasm.exe dan menafsirkan hasilnya, lihat Tutorial Ildasm.exe, yang terletak di folder Samples yang dikirimkan bersama Windows SDK.
Jika Anda memberikan Ildasm.exe argumen PEfilename yang berisi sumber daya yang disematkan, alat akan menghasilkan beberapa file keluaran: file teks yang berisi kode IL dan, untuk setiap sumber daya terkelola yang disematkan, .resources file yang dihasilkan menggunakan nama resource dari metadata. Jika sumber daya yang tidak dikelola disematkan di PEfilename, file .res dibuat menggunakan nama file yang ditentukan untuk keluaran IL dengan opsi /output.
Catatan
Ildasm.exe hanya menampilkan deskripsi metadata untuk file masukan .obj dan .lib. Kode IL untuk jenis file ini tidak dibongkar.
Anda dapat menjalankan Ildasm.exe melalui file an.exe atau .dll untuk menentukan apakah file tersebut dikelola. Jika file tidak dikelola, alat akan menampilkan pesan yang menyatakan bahwa file tidak memiliki header runtime bahasa umum yang valid dan tidak dapat dibongkar. Jika file dikelola, alat berjalan dengan sukses.
Informasi Versi
Dimulai dengan .NET Framework 4.5, Ildasm.exe menangani BLOB marshal yang tidak dikenal (objek besar biner) dengan menampilkan konten biner mentah. Misalnya, kode berikut menunjukkan bagaimana BLOB marshal yang dihasilkan oleh program C# ditampilkan:
public void Test([MarshalAs((short)70)] int test) { }
// IL from Ildasm.exe output
.method public hidebysig instance void Test(int32 marshal({ 46 }) test) cil managed
Dimulai dengan .NET Framework 4.5, Ildasm.exe menampilkan atribut yang diterapkan ke implementasi antarmuka, seperti yang ditunjukkan dalam kutipan berikut dari output Ildasm.exe :
.class public auto ansi beforefieldinit MyClass
extends [mscorlib]System.Object
implements IMyInterface
{
.interfaceimpl type IMyInterface
.custom instance void
[mscorlib]System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor() = ( 01 00 00 00 )
…
Contoh
Perintah berikut menyebabkan metadata dan kode yang dibongkar untuk file PE MyHello.exe ditampilkan di GUI default Ildasm.exe.
ildasm myHello.exe
Perintah berikut membongkar file MyFile.exe dan menyimpan teks IL Assembler yang dihasilkan dalam file MyFile.il.
ildasm MyFile.exe /output:MyFile.il
Perintah berikut membongkar file MyFile.exe dan menampilkan teks IL Assembler yang dihasilkan ke jendela konsol.
ildasm MyFile.exe /text
Jika file MyApp.exe berisi sumber daya terkelola dan tidak terkelola yang disematkan, perintah berikut menghasilkan empat file: MyApp.il, MyApp.res, Icons.resources, dan Message.resources:
ildasm MyApp.exe /output:MyApp.il
Perintah berikut membongkar metode MyMethod dalam kelas MyClass di MyFile.exe dan menampilkan output ke jendela konsol.
ildasm /item:MyClass::MyMethod MyFile.exe /text
Pada contoh sebelumnya, mungkin ada beberapa metode bernama MyMethod dengan tanda tangan yang berbeda. Perintah berikut membongkar metode MyMethod instans dengan jenis pengembalian dan jenis voidint32 parameter dan string.
ildasm /item:"MyClass::MyMethod(instance void(int32,string)" MyFile.exe /text
Catatan
Dalam .NET Framework versi 1.0 dan 1.1, tanda kurung kiri yang mengikuti nama metode harus diimbangi dengan tanda kurung kanan setelah tanda tangan: MyMethod(instance void(int32)). Mulai dari .NET Framework 2.0, tanda kurung penutup harus dihilangkan: MyMethod(instance void(int32).
Untuk mengambil metode static (metode Shared dalam Visual Basic), hilangkan kata kunci instance. Jenis kelas yang bukan jenis primitif seperti int32 dan string harus menyertakan namespace dan harus didahului dengan kata kunci class. Jenis eksternal harus didahului dengan nama pustaka dalam tanda kurung siku. Perintah berikut membongkar metode statis bernama MyMethod yang memiliki satu parameter jenis AppDomain dan memiliki jenis kembalian AppDomain.
ildasm /item:"MyClass::MyMethod(class [mscorlib]System.AppDomain(class [mscorlib]System.AppDomain)" MyFile.exe /text
Jenis bersarang harus didahului oleh kelas yang memuatnya, dibatasi oleh garis miring. Misalnya, jika kelas MyNamespace.MyClass berisi kelas bersarang bernama NestedClass, kelas bersarang diidentifikasi sebagai berikut: class MyNamespace.MyClass/NestedClass.