Я хочу изменить 4 байта по определенному адресу .exe. Я пробовал это:
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, но мне нужна была программа для этого.
.close()
? Он не сохранится, если он не будет вызван. - person Jeremy Kato   schedule 25.07.2016