Bir .NET EXE dosyasını okunabilir C # kaynak koduna nasıl koyabilirim?


259

Birkaç yıl önce bir istemci için bir C # uygulaması yazdım, ancak artık kaynak kodum yok. Sahip olduğum tek şey istemcinin PC'sinde dağıttığım EXE. EXE C # kaynak kodu oluşturmak bir yolu var mı?


2
Tamam. Buraya bak ... Teleriks JustDecompile aslında Red Gates Reflektör'ün tamamen berbat olduğu DLL'leri deşifre etti ... Reflektör ile ilgili birçok sorun vardı ... JustDecompile ... şimdiye kadar kusursuz ...
Marc Johnston

1
JustDecompile'ı oldukça uzun bir süredir kullanıyorum ve kaynak dosyalarını derlemede ve csproject'i derlemeye hazır olarak paketlemede gerçekten çok iyi. Geliştirme konusunda gerçekten aktif ve repolarında açık bir sorun yok gibi görünüyor github.com/telerik/JustDecompileEngine
David

Yanıtlar:


194

Reflektör ve eklentisi FileDisassembler .

Reflektör kaynak kodunu görmenizi sağlar. FileDisassembler bir VS çözümüne dönüştürmenize izin verecektir.


4
Reflektör kopyamda "Dışa aktar ..." seçeneği var ve yüklü eklenti yok. Tüm kaynak kodu ve kaynakları olan bir VS projesi oluşturur. Peki neden herkes FileDisassembler'ı öneriyor? Daha iyi?
Lucas

Lucas: Kutunun dışında, bunu yapabilen bir reflektör görmedim. FileDisassembler her zaman tek yol olmuştur. Sanırım bu yakın tarihte değişmiş olabilir. Kontrol edeceğim.
GEOCHET

YAŞAM TASARRUFU! aptal eşek TFS projemi sildi. TFS'nin kendisini silmesini söyledim, ancak projeyi yerel dosya sisteminden kaldırmasını beklemiyordum. hepinize teşekkürler x
Christo

FileDisassembler nerede? : /
Tom Stickel

Yalnızca .Net çerçevesi için çalışır. .Net core 3.0 exe ​​için çalışan herhangi bir araç?
Somnath Kadam

144

Red Gate artık .Net Reflector'un ücretsiz bir sürümü olmayacağını söylediğinde, ILSpy ve Telerik'in JustDecompile yazılımını kullanmaya başladım . ILSpy'ın (hala Beta sürümündedir) JustDecompile'den daha doğru bir şekilde koda etmesini buldum. Red Gate kararlarını değiştirdi ve hala .Net Reflector'un ücretsiz bir sürümüne sahip, ancak şimdi ILSpy'ı seviyorum.

ILSpy web sitesinden ( https://github.com/icsharpcode/ILSpy/ ):

ILSpy açık kaynaklı .NET derleme tarayıcısı ve kod çözücüdür .

ILSpy Özellikleri

  • Montaj tarama
  • IL Demontajı
  • C # 'a dekompilasyon
  • Lambdaları ve 'geri dönüşü' destekler
  • XML belgelerini gösterir
  • Kaynak tasarrufu
  • Türleri / yöntemleri / özellikleri (alt dize) arayın
  • Köprü tabanlı tür / yöntem / özellik gezinme
  • Temel / Türetilmiş türlerde gezinme
  • Gezinme geçmişi
  • BAML - XAML kod çözücü
  • Montajı C # Projesi Olarak Kaydet
  • Alan / yöntem kullanımını bulma
  • Eklentilerle genişletilebilir (MEF)

Güncelleme:

15 Nisan 2012, ILSpy 2.0 piyasaya sürüldü. Sürüm 1.0 ile karşılaştırıldığında yeni özellikler:

  • Montaj Listeleri
  • İfade ağaçlarının ayrıştırılması için destek
  • Nullables üzerindeki kaldırdı operatörleri için destek
  • Visual Basic'e Dönüştür
  • Boşluk ile ayrılmış birden fazla dize arayın (ILSpy.exe'de "Assembly manager" araması AssemblyListManager'ı bulur)
  • Yerel bir değişkeni tıkladığınızda, bu değişkenin diğer tüm tekrarlamaları vurgulanır
  • Ctrl + F, kodu çözülmüş kod görünümünde arama yapmak için kullanılabilir

Güncelleme:

  • ILSpy 2.1 eşzamansız / ayrışmayı bekliyor

1
2.2 kullanıyorum ve IL, VB.NET ve C # için decompiling destekler. Bunu çok faydalı buldum.
VoteCoffee

1
Görünüşe göre Telerik üzerinde çalışan bilgisayardan şüpheli bilgi toplamak istiyor ve ILSpy kaynaklardan derlenemiyor. Ayrıca ILSpy ikili dosyası değişken adlarını karıştırır ve kaynak koduna bazı garip karakterler koyar.
AaA

1
ILSpy'ın bir Visual Studio eklentisi içerdiğini unutmayın. ILSpy 2.4 için Visual Studio kaynak kodunuzdan doğrudan derlenmiş çıktıya gitme özelliğini ekledim. Ne yazık ki, şimdi ILSpy ana hattına birleştirilen ancak 2.4 sürümünü yapmayan bazı son düzeltmeler yapıldı.
yoyo

Parlak! Sorunları gidermek için sunucularınızda "özel" bir aracı kullanmaları için bir seferde 100 sterlin ücret alan bir yazılım şirketi var. Bağlıyken kullandıkları aracın bir kopyasını almayı başardı ve daha sonra aracın kilidini açan parolayı almak için ILSpy'ı çok kolay bir şekilde kullanmayı başardı. Artık müşteri ripping yok!
user2924019

ILSpy en iyisi
Pritam

65

Reflektör artık genel olarak ücretsiz değil, ancak açık kaynak geliştiriciler için ücretsiz sunuyorlar: http://reflectorblog.red-gate.com/2013/07/open-source/

Ancak DevExtras ve JetBrains gibi birkaç şirket ücretsiz alternatifler yarattı:

DevExtras KoduYansı

JetBrains DotPeek


5
Reflektör 35 $ gibi. Banka kırma biliyorum, ama bu 10x değerinde olduğunu.
StingyJack

7
Telerik JustDecompile'ı ücretsiz .NET derleme kod çözücüleri listesine de eklemeye değer. telerik.com/justdecompile
Todd

3
@StingyJack: Harika, seni duydular gibi görünüyor! VS2012 sökücü istiyorsanız şimdi 10 $ 368 aslında fiyat. : /
DeepSpace101

1
Para kazanmak için onlara karşı tutmuyorum, ancak @ Daniel'in cevabındaki ILSpy (bahsetti) şimdi kullandığım şey.
StingyJack

1
Artık standart sürüm için 100 dolar ve Visual Studios ile entegre sürüm için 200 dolar. Bu bir enflasyon oraný. Her ne kadar ücretsiz ve açık kaynak geliştiricileri için bir şeyler
sunsalar da

35

Denis Bauer'ın Reflector ve File Disassembler eklentisi. Aslında, Reflektör'ün kendi başına sadece demonte kaynağı görüntülediği montajlardan kaynak projeler üretir.

ADDED: En son favorim JetBrains'in dotPeek'i .


Ben dotPeek kolayca tüm bir klasör ile çalışma sağlar, ancak bugün itibariyle onlar sadece c # için koda. Diğer çoğu dekompiler de vb ve IL yapar. Aynı zamanda sadece Net 4.5'e kadar desteklerken, Telerik
4.5.1'i

böylece dotPeek tamamen ücretsiz veya ücretli sürüm kısıtlamaları var mı? i ile ilgili jetbrains Web sitesinde herhangi bir bilgi göremedim.
batmaci

29

Telerik JustDecompile ücretsizdir ve .NET derlemelerinden projeler oluşturma özelliğine sahiptir.


Telerik, yararlı bulduğum VB.NET, IL veya C # .NET'e koda dönüştürme yeteneği sunuyor. Ayrıca, çerçeveyi otomatik olarak seçer ve deobfuskikasyon için bir eklentiye sahiptir. Ayrıca, .NET 4.5.1'i destekler. Oldukça iyi görünüyor.
VoteCoffee

1
Bu yazıda tüm çözümleri denedim ve JustDecompile benim için mükemmel çalışan tek çözümdü.
Alvaro Pereira

24

Kimsenin Microsoft'un ildasmından bahsetmediğine şaşırdım . ILSpy veya Reflector kadar güzel olmayabilir, ancak Visual Studio ile birlikte gelir, bu yüzden birçok geliştirici zaten var.

Çalıştırmak için (VS 2013 varsayalım, diğer sürümler için benzer olmalıdır):

  1. Başlat> Tüm Programlar> Visual Studio 2013> Visual Studio Araçları'nı seçin.
  2. VS2013 için Geliştirici Komut İstemi'ne çift tıklayın.
  3. Elde edilen komut isteminden "ildasm" komutunu çalıştırın.
  4. Araçta Dosya> Aç'ı seçin ve yürütülebilir dosyayı veya DLL dosyasını açın.

Şimdi DLL yapısında gezinebilirsiniz. IL'yi görmek için sınıf üyelerine çift tıklayın. IL'yi bir dosyaya vermek için Dosya> Dökümü kullanın.


IL DASM'ı biraz barbar buluyorum. Ağacı gösterir, ama sağ tıklandığında hiçbir şey yapmaz. Ayrıca, dosyaya aktarmanın dökümü temelde çöptür. Şuna bak, uzaktan bile nasıl yardımcı oldu?
Tom Stickel

4
Ildasm orada sadece en iyi seçenek olduğunu iddia ettim, sadece kullanılabilir ve çalışıyor. ¯_ (ツ) _ / ¯
yoyo

Hayır, boş değil.
yoyo

DotPeek'in tüm Meclisi orada aradığımı bildiğim bir dizgide aramama izin vermemesine gerçekten şaşırdım. ildasm hoş olmayabilir ama en azından aradığım dizeyi içeren sınıfı bulmama yardımcı olan bir döküm seçeneği var.
Gabe Halsmer

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.