修改 .net 二进制文件中的字符串

逆向工程 二进制 。网 二进制编辑
2021-06-21 12:19:13

我有一个名为 foo.exe 的 .net exe 我在十六进制编辑器 (HxD) 中打开 foo 并搜索 myString。我没看到。

我在 ILSpy 中打开 foo.exe 并能够找到 myString。

我确实在十六进制编辑器中看到了人类可读的文本,但我认为 .net 字符串是以其他方式编码的。

一些背景是我们有一个客户端站点,它在一些 10 年以上的旧代码上切换服务器,并且服务器配置是硬编码的。旧服务器在测试期间保持在线状态,直到投入生产 12 小时后才发现问题。

1个回答

C# 将其字符串文字编码为 UTF-16。( http://csharpindepth.com/Articles/General/Strings.aspx )

要在 HxD 中搜索十六进制,您需要选中 HxD 中的 Unicode 字符串复选框,然后您就可以搜索您的字符串。

如果您能够在不破坏 UTF-16 和文件大小的情况下将字符串更改为正确的字符,那么您的新字符串将被更新。

好吧,我写了一个类似的答案,但放弃了它,只是添加了一个屏幕截图来更好地解释你的答案

在此处输入图片说明