private void replaceKernelButton_Click(object sender, EventArgs e) { var ofd = new OpenFileDialog(); var sfd = new SaveFileDialog() { Filter = "Binary Files (*.bin)|*.bin|All Files|*" }; if (ofd.ShowDialog() == DialogResult.OK && sfd.ShowDialog() == DialogResult.OK) { var inputStream = File.OpenRead(ofd.FileName); var ms = new MemoryStream(); rom.SE.WriteNewKernel(inputStream, ms); ms.Seek(0, SeekOrigin.Begin); inputStream.Close(); var outputStream = File.Create(sfd.FileName); var key1 = rom.SC.GetDigestKey(new byte[0x10]); var key2 = rom.SD.GetDigestKey(key1); byte[] digestKey; CXBootloader.EncryptDecrypt(ms, outputStream, key2, out digestKey); ms.Close(); outputStream.Close(); } }
public void Read(XeReader reader) { reader.Seek(0, SeekOrigin.Begin); magic = reader.ReadUInt16(); version = reader.ReadUInt16(); reader.Seek(0x08, SeekOrigin.Begin); bootloaderOffset = reader.ReadUInt32(); length = reader.ReadUInt32(); copyright = reader.ReadString(0x37); reader.Seek(0x60, SeekOrigin.Begin); kvOffset = reader.ReadUInt32(); reader.Seek(0x78, SeekOrigin.Begin); smcSize = reader.ReadUInt32(); smcOffset = reader.ReadUInt32(); reader.Seek(smcOffset, SeekOrigin.Begin); SMC = new SMC(); SMC.Read(reader, (int)smcSize); reader.Seek(bootloaderOffset, SeekOrigin.Begin); SB = new CXBootloader(Stream); SC = new CXBootloader(Stream); SD = new CXBootloader(Stream); SE = new CEBootloader(Stream); }