Saya baru mengenal pemrograman .NET C #. Saya mengikuti beberapa buku. Dikatakan bahwa alih-alih mengompilasinya langsung ke kode biner (kode asli). Kode tingkat tinggi dikonversi menjadi bahasa perantara (disebut MSIL alias CIL). Tetapi ketika saya kompilasi, saya mendapatkan file exe / Dll.
- Apakah MSIL / CIL ini terkandung dalam file exe / dll ini?
- Saya ingin melihat kode bahasa perantara itu. Hanya untuk merasakan keberadaannya. Bagaimana cara melihatnya?
- Mereka memanggil file exe / dll ini suatu
assembly
. Apakah mereka menggunakan "kata mewah" ini hanya untuk membedakannya dari file exe / dll yang berisi kode biner (kode asli)?
c#
.net
assemblies
starblue
sumber
sumber
Jawaban:
.text
bagian file PE (portable executable = * .exe atau * .dll). Informasi lebih lanjut dapat ditemukan di sini .Jika saya dapat merekomendasikan buku yang bagus tentang masalah itu juga, itu Expert .NET 2.0 IL Assembler oleh Serge Lidin. Dia orang yang mendesain MSIL.
sumber
.text
sextion? Jika tidak, apa.text
isinya? dan ada apa dengan bagian#
saya pikir dinamai dimulai dengan.
. Jadi tidak mungkin.strings
Salah satu cara favorit saya untuk melihat IL untuk cuplikan C # adalah dengan menggunakan alat LINQPad gratis . Setelah memasukkan beberapa kode dan memilih "Pernyataan C #" di bagian atas (atau "Program C #", mana yang cocok), klik tombol "IL" di bawah area entri kode, dan Anda akan melihat IL yang dihasilkan.
Menggunakan LINQPad untuk ini jauh lebih nyaman daripada memuat Visual Studio atau menjalankan kompiler dari baris perintah, kemudian memuat ILDASM dan membuka file .il dengan editor teks.
sumber
Jika Anda menginginkannya online, .NET Fiddle sangat bagus. Cukup tempel kode Anda dan klik
View IL
opsi di kanan atas.sumber
Pilihan lain: Gunakan ReSharper
Sumber / IL disinkronkan tampilan: garis latar belakang biru kiri sesuai dengan Blok IL kanan
Dalam Visual Studio:
Mendukung tampilan yang disinkronkan dari Kode Sumber dan IL - ketika Anda mengklik pernyataan dalam sumber, blok yang sesuai dalam IL disorot (dan sebaliknya). Menampilkan deskripsi untuk IL dari Jaringan Pengembang Microsoft dan "set instruksi Bahasa Intermediate (CIL)" dari spesifikasi standar ECMA.
lihat Melihat Bahasa Intermediate (IL) di Bantuan Resharper. Gambar di atas adalah dari Bantuan Resharper.
Opsi gratis adalah menggunakan Jetbrains dotPeek
lihat juga: "Menjelajahi Bahasa Antara (IL) dengan ReSharper dan dotPeek", oleh Maarten Balliauw, 19 Januari 2017 - Jetbrains Blog
sumber
PS Ketika Anda mengikuti beberapa buku, saya akan sangat menyarankan Anda CLR melalui C # .
sumber
Saya percaya bahwa mereka disebut "majelis" karena majelis adalah seperangkat modul, dirangkai bersama oleh manifes.
(sumber: microsoft.com )
Lihat Isi Perakitan untuk detail.
sumber
sharplab adalah alat online, bagus untuk kasus penggunaan sederhana. Ketikkan kode Anda di sebelah kiri, IL muncul di sebelah kanan.
sumber
Dalam banyak hal, .NET assemblies mirip dengan paket bytecode Java.
sumber
Saya baru saja menghabiskan beberapa jam mencari alat terbaik yang dapat membuat saya melihat kode IL langsung di dalam Visual Studio.
Satu-satunya solusi yang saya temukan sejauh ini adalah Msiler https://visualstudiogallery.msdn.microsoft.com/60fc53d4-e414-461b-a27c-3d5d2a53f637
itu bekerja dengan sangat baik!
Kalau tidak, solusi terbaik kedua, tetapi tanpa integrasi studio visual, adalah JetBrains dotPeek, yang cukup mengagumkan untuk jujur.
sumber
Saya tahu ini adalah pertanyaan lama, dan saya lebih suka alat apa pun di atas. Namun, dalam keadaan darurat, telah ada penampil MSIL dalam kotak dengan Visual Studio sejak setidaknya Versi 2005.
Alat ini dinamai
ildasm.exe
, dan terletak di folder berikut setelah instalasi Visual Studio default:Visual Studio 2005 "
C:\Program Files (x86)\Microsoft Visual Studio 8\SDK\v2.0\Bin\ildasm.exe"
Visual Studio 2008 "
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\ildasm.exe
"Visual Studio 2010 "
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\ildasm.exe
"Untuk informasi lebih lanjut, lihat: " Cara: Lihat Konten Majelis " di Perpustakaan MSDN.
sumber
Dari pengalaman saya, sumber terbaik pengetahuan terkait IL adalah Andrew Troelsen “Pro C # dan .NET Platform”. Mulai dari edisi ke-3 ia memiliki bab yang sangat, sangat luar biasa (sekitar 50 halaman) tentang cara memahami IL dan bahkan menulis kode Anda sendiri dan menggunakan ILAsm. Saya telah menggunakan informasi itu untuk menyelidiki apakah ada beberapa warisan di dunia .NET. Anda juga dapat mencoba menggunakan beberapa fitur yang sangat menarik di IL (mis. Pemfilteran pengecualian yang hanya ada di VB tetapi tidak dalam C #).
Saya sangat merekomendasikan untuk membaca bab itu.
Akhirnya, .NET Reflector adalah standar perusahaan untuk menginvestigasi kode IL rakitan dan buku Richter jelas-jelas "harus dibaca". Tetapi dari buku-buku lain seperti yang disebutkan di atas Anda dapat mengungkapkan hal-hal yang sangat berguna :)
Ya, setiap perakitan di dunia .NET memegang beberapa kode IL (bersama dengan manifes) yang dapat dilihat melalui Reflektor atau ILDasm. Terlebih lagi, Reflector dapat menunjukkan kepada Anda kode yang dioptimalkan C # dan VB. Ini berarti bahwa setiap orang dapat melihat kode sumber suatu rakitan dan itulah sebabnya dalam produk komersial obfuscator digunakan.
sumber
Jika Anda ingin melihat bahasa perantara, Coba unduh JustDecompile dari Telerik (Yang saat ini gratis, memerlukan pendaftaran terlebih dahulu).
Seret DLL Anda dan pilih
IL
dari kotak drop down di bagian atas!sumber
Sekarang ada opsi lain. Anda dapat melakukan ini dalam VS Code dengan ekstensi ini dibangun dengan Roslyn. Ini saat ini terbatas pada .NET Core .
sumber