如何编译已编译的DLL中的硬编码字符串?

时间:2011-09-27 09:21:51

标签: c# .net decompiling il

我有一个编译的dll,我需要改变一点。它是半年前由我写的,但我丢失了源代码。其中有一个单独的硬编码字符串(它是文件名)

我需要将其从TestPage.html更改为TestPage1.html(不会更长)

怎么做?字符串是匿名的,相应的代码是:

... + folder + "TestPage.html"

没有分配给它的变量。

提前致谢。

编辑:我不想在使用类似Reflector的工具提取c#代码后重新编译它!

3 个答案:

答案 0 :(得分:8)

使用Reflector(或其他类似工具)将IL反编译为C#(或其他CLR语言),然后 - 再次编辑和编译。

答案 1 :(得分:6)

您可以使用CFF Explorer,它提供了.NET程序集的非常原始视图。它还提供了查看甚至修改UserString流的可能性(在.NET Directory > MetaData Streams > #US下找到它)。

UserString-stream将字符串文字存储为您描述的字符串文字。您应该能够使用find-function找到您的特定字符串并进行修改。但是,存在一个限制:您不能使用长度不同(更短或更长)的字符串。这会搞乱后来在UserString-stream中跟随的所有字符串的索引以及其他部分的所有偏移量。所以,不幸的是,我认为将其更改为TestPage1.html将无法正常工作,因为它只有一个字符。

答案 2 :(得分:5)

您可以使用免费工具ILSpy来反编译.NET-dll文件中的代码和资源。