C# 如何在已编译的DLL中编辑硬编码字符串?
我有一个单一的编译dll,我需要改变一点。它是我半年前写的,但我已经丢失了源代码。其中只有一个硬编码字符串(它是一个文件名) 我需要将它从C# 如何在已编译的DLL中编辑硬编码字符串?,c#,.net,decompiling,il,C#,.net,Decompiling,Il,我有一个单一的编译dll,我需要改变一点。它是我半年前写的,但我已经丢失了源代码。其中只有一个硬编码字符串(它是一个文件名) 我需要将它从TestPage.html更改为TestPage1.html(不会太长) 怎么做?字符串是匿名的,对应的代码是: ... + folder + "TestPage.html" 没有分配给它的变量 提前谢谢 编辑:我不想在使用类似反射器的工具提取c代码后重新编译它 使用Reflector(或其他类似工具)将IL反编译为C#(或另一种CLR语言),然后-编辑并再
TestPage.html
更改为TestPage1.html
(不会太长)
怎么做?字符串是匿名的,对应的代码是:
... + folder + "TestPage.html"
没有分配给它的变量
提前谢谢
编辑:我不想在使用类似反射器的工具提取c代码后重新编译它 使用Reflector(或其他类似工具)将IL反编译为C#(或另一种CLR语言),然后-编辑并再次编译。您可以使用免费工具从.NET dll文件中反编译代码和压缩源。您可以使用,它提供了一个关于.NET程序集的原始视图。它还提供了查看甚至修改用户字符串流的可能性(请在.NET目录>元数据流>#US
下找到它)
UserString流将字符串文本存储为您描述的文本。您应该能够使用find函数找到您的特定字符串并对其进行修改。但是,有一个限制:不能使用不同长度(更短或更长)的字符串。这将搞乱UserString流中随后出现的所有字符串的索引以及其他部分的所有偏移量。因此,不幸的是,我认为将其更改为
TestPage1.html
将不起作用,因为它长了一个字符。我不能。它的代码是相当复杂的dll:里面有很多匿名函数、文件和分部类。@IlyaSmagin为什么不呢?即使你不能反编译到构建的C#代码,你也可以反编译到构建的IL。这对我的问题有什么帮助?如果你不想在提取C#代码后重新编译它,那么就反编译到IL-如果你不想重新编译,abatishchev给出的答案是正确的方法,你已经没有选择了。效果很好-我只是添加了一个空格(代码00),它解决了我的问题。