我有一个编译的dll,我需要改变一点。它是半年前由我写的,但我丢失了源代码。其中有一个单独的硬编码字符串(它是文件名)
我需要将其从TestPage.html
更改为TestPage1.html
(不会更长)
怎么做?字符串是匿名的,相应的代码是:
... + folder + "TestPage.html"
没有分配给它的变量。
提前致谢。
编辑:我不想在使用类似Reflector的工具提取c#代码后重新编译它!
答案 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文件中的代码和资源。