我有一个名为 foo.exe 的 .net exe 我在十六进制编辑器 (HxD) 中打开 foo 并搜索 myString。我没看到。
我在 ILSpy 中打开 foo.exe 并能够找到 myString。
我确实在十六进制编辑器中看到了人类可读的文本,但我认为 .net 字符串是以其他方式编码的。
一些背景是我们有一个客户端站点,它在一些 10 年以上的旧代码上切换服务器,并且服务器配置是硬编码的。旧服务器在测试期间保持在线状态,直到投入生产 12 小时后才发现问题。
我有一个名为 foo.exe 的 .net exe 我在十六进制编辑器 (HxD) 中打开 foo 并搜索 myString。我没看到。
我在 ILSpy 中打开 foo.exe 并能够找到 myString。
我确实在十六进制编辑器中看到了人类可读的文本,但我认为 .net 字符串是以其他方式编码的。
一些背景是我们有一个客户端站点,它在一些 10 年以上的旧代码上切换服务器,并且服务器配置是硬编码的。旧服务器在测试期间保持在线状态,直到投入生产 12 小时后才发现问题。
C# 将其字符串文字编码为 UTF-16。( http://csharpindepth.com/Articles/General/Strings.aspx )
要在 HxD 中搜索十六进制,您需要选中 HxD 中的 Unicode 字符串复选框,然后您就可以搜索您的字符串。
如果您能够在不破坏 UTF-16 和文件大小的情况下将字符串更改为正确的字符,那么您的新字符串将被更新。
好吧,我写了一个类似的答案,但放弃了它,只是添加了一个屏幕截图来更好地解释你的答案