如何用 C# 覆盖二进制文件中的特定字节?

0 c# binary byte overwrite

我想覆盖 exe 中的字节。

所以我需要生成一个随机字符串,将其转换,然后将其写入exe。

我需要以这种格式覆盖你在那里看到的 4 个十六进制字符串 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12) 需要破折号,所以这对我来说也是一个问题。

这是第一个字符串的位置。

十六进制转储

属性截图

我完全不知道如何开始这个,我如何用随机字符串以正确的格式覆盖这 4 个字符串(十六进制,所以随机只能是 0123456789abcdef)

任何帮助深表感谢。

Lan*_*der 5

您要覆盖的字符串是一个 GUID。您可以使用Guid该类生成一个新的(请参阅MSDN 文档

至于写入文件,请使用BinaryWriter类。

using (System.IO.BinaryWriter fileWriter = new System.IO.BinaryWriter(System.IO.File.Open("path", System.IO.FileMode.Open)))
{
    fileWriter.BaseStream.Position = 0xB8EB9; // set the offset
    fileWriter.Write(Encoding.ASCII.GetBytes(Guid.NewGuid().ToString()));
}
Run Code Online (Sandbox Code Playgroud)

ideone样本

  • 这是行不通的,BinaryWriter 特殊对待字符串。它首先写入字符串的长度。这里需要一个字节 [],从 Encoding.ASCII 中获取一个 (2认同)