如何在c#中修改.exe文件?

时间:2016-07-25 19:11:34

标签: c# memory file-io binaryfiles memory-address

我想在.exe的特定地址更改4个字节。我试过这个:

string path = @"C:\test\mod.exe";

if (File.Exists(path))
{
    using (BinaryWriter stream = new BinaryWriter(File.Open(path, FileMode.Open)))
    {
        stream.BaseStream.Position = 0x0032D837; 
        stream.Write(StringToByteArray("00050000"), 0, 4);
    }
}

StringToByteArray()是这样的:

public static byte[] StringToByteArray(string hex)
        {
            return Enumerable.Range(0, hex.Length)
                             .Where(x => x % 2 == 0)
                             .Select(x => Convert.ToByte(hex.Substring(x, 2), 16))
                             .ToArray();
        }

它找到exe但没有任何改变,所以最正确的方法是什么?另外我想补充一点,我可以在HxD十六进制编辑器中手动更改它,但我想要一个程序。

1 个答案:

答案 0 :(得分:0)

固定!事实证明,Windows后卫造成了一团糟:(