2011-09-27 17 views
5

Biraz değiştirmem gereken tek derlenmiş bir dll var. Bana yaklaşık yarım yıl önce yazılmıştı, ama kaynak kodunu kaybettim. İçinde tek kodlanmış dize ben TestPage1.html için TestPage.html onu değiştirmeniz gerekirDerlenmiş bir DLL'de kodlanmış bir dize nasıl düzenlenir?

(çok daha uzun o değil) (bir dosya adı var) var

bunu nasıl yapmalı? dize anonimdir, kod karşılık gelen parçasıdır:

... + folder + "TestPage.html" 

atandığı hiçbir değişken var.

Şimdiden teşekkürler.

DÜZENLEME: Reflektör benzeri araçlar ile çıkararak sonra C# kodunu yeniden derlemek için istemiyorum!

+0

C# kodunu ayıkladıktan sonra yeniden derlemek istemiyorsanız, bunun yerine IL'ye dönüştürün - her nasıl olursa olsun abatishchev'nin yayınladığı ** yanıtı ** bu doğru yolu yapmak – Justin

+0

Yeniden derlemek istemiyorsanız , seçenekler bitti. – abatishchev

cevap

6

.NET meclisleri üzerinde çok çiğ bir görünüm sağlar CFF Explorer, kullanabilirsiniz. Ayrıca UserString akışını görüntüleme ve hatta değiştirme olanağı da sağlar (.NET Directory > MetaData Streams > #US'un altında bulabilirsiniz).

UserString akışı, dize değişmezlerini anlattığınız şekilde depolar. Bulunduğunuz dize ile bulma işlevini bulup değiştirebilmeniz gerekir. Bununla birlikte, bir sınırlama vardır: Farklı uzunluktaki bir dizeyi (daha kısa veya daha uzun) kullanamazsınız. Bu, daha sonra UserString akışında ve diğer bölümlerin tüm ofsetlerinde izleyecek olan tüm dizelerin dizinlerini dağıtacaktır. Yani, ne yazık ki, bir karakter daha uzun olduğu için, TestPage1.html olarak değiştirmeyi düşünmüyorum.

+0

Bir çekicilik gibi çalışır - Boş bir alan ekledim (kod 00) ve sorunumu yine de giderdim. –

+0

benim için çalıştı .. görkemli –

8

Reflektörü (veya başka bir CLR dili) içine çözmek için Reflektörü (veya başka bir aracı) kullanın ve sonra yeniden düzenleyin ve derleyin.

+0

Yapamam. Onun kodu oldukça karmaşık dll: bir sürü anonim işlevler, dosyalar, kısmi sınıflar. –

+2

@IlyaSmagin Neden olmasın? Oluşan C# 'ye dönüştürülemeyecek olsanız bile, kesinlikle inşa eden IL'ye dönüştürebilirsiniz. – Justin

4

Sen kod derleme için ücretsiz bir araç ILSpy kullanın ve .NET-dll dosyasından Ressources yapabilirsiniz.

+3

Ve bu benim sorunumda bana nasıl yardımcı olur? –

İlgili konular