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

时间:2013-01-26 15:54:47

标签: c# binary byte overwrite

我想覆盖exe中的字节。

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

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

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

hexdump

attributes screenshot

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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

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

至于写入文件,请使用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()));
}

ideone sample