private void PatchEXE(ExecutablePatchInfo executable) { label1.Visible = true; label1.Text = "Patching..."; BinaryWriter writer = new BinaryWriter(new FileStream(fileName, FileMode.Open, FileAccess.Write)); if (checkBox1.Checked) { writer.BaseStream.Position = executable.ArchiveOff; while (writer.BaseStream.Position < executable.ArchiveOff + executable.ArchiveSize) { writer.Write((byte)0); } writer.BaseStream.Position = executable.ArchiveOff; for (int i = 0; i < executable.ArchiveSize && writer.BaseStream.Position < executable.ArchiveOff + executable.ArchiveSize && i < textBox1.Text.Length; ++i) { writer.Write(textBox1.Text[i]); } } if (checkBox2.Checked) { writer.BaseStream.Position = executable.LevelOff; while (writer.BaseStream.Position < executable.LevelOff + executable.LevelSize) { writer.Write((byte)0); } writer.BaseStream.Position = executable.LevelOff; for (int i = 0; i < executable.LevelSize && writer.BaseStream.Position < executable.LevelOff + executable.LevelSize && i < textBox2.Text.Length; ++i) { writer.Write(textBox2.Text[i]); } } writer.Close(); label1.Text = "Patched!"; }
private void LoadEXE(ExecutablePatchInfo executable) { this.executable = executable; BinaryReader reader = new BinaryReader(new FileStream(fileName, FileMode.Open, FileAccess.Read)); textBox1.MaxLength = executable.ArchiveSize; textBox2.MaxLength = executable.LevelSize; reader.BaseStream.Position = executable.ArchiveOff; char ch = '\0'; do { ch = reader.ReadChar(); textBox1.Text += ch; }while (ch != '\0'); reader.BaseStream.Position = executable.LevelOff; do { ch = reader.ReadChar(); textBox2.Text += ch; }while (ch != '\0'); reader.Close(); }