[英]C# BinaryWriter Seek
我的代码中有一些错误,我需要任何人来帮助我:)
我有偏移,当我尝试用 C# 修补它时,我得到了一个奇怪的结果
this.openFileDialog1.FileName = "Sro_Client.exe";
if (this.openFileDialog1.ShowDialog() == DialogResult.OK)
{
FileStream output = new FileStream(this.openFileDialog1.FileName
, FileMode.Open);
BinaryWriter writer = new BinaryWriter(output);
byte[] bytes = new byte[] { byte.Parse(this.textBox1.Text) };
byte[] buffer = new byte[] { Convert.ToByte(this.textBox1.Text) };
writer.Seek(0x135FB3, SeekOrigin.Begin);
writer.Write(bytes, 0, 1);
writer.Close();
MessageBox.Show("Successfully patched Sro_Client.exe.");
}
原始偏移量是 PUSH 6E ,因此当我在 textbox1 中写入时,我的程序必须更改它,例如 90 将其转换为像 本网站一样的十六进制并将其更改为:PUSH 5a
所以现在必须是:00135FB3 6A 5A PUSH 5A 但我的程序将其更改为 00135FB3 5A POP EDX
我需要知道我的代码有什么问题
谢谢
对不起,我的英语不好 ;)
不能使用 C# IO 类直接将数据插入到文件中。 最简单的方法是将其读入缓冲区并操作缓冲区,或者将第一部分写入临时文件,然后插入新数据,然后写入文件的其余部分,然后重命名。 或者,您可以在文件末尾附加一些数据并将所有内容向上移动,以在要插入数据的位置创建适量的可用空间。
看看http://www.codeproject.com/Articles/17716/Insert-Text-into-Existing-Files-in-C-Without-Temp
你确定你有正确的偏移量吗? 在我看来,0x00135FB3 是指令的偏移量,0x00135FB4 是参数的偏移量; 你有没有尝试过:
writer.Seek(0x135FB4, SeekOrigin.Begin);
在你的代码中?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.