public void WriteNewKernel(Stream kernel, Stream output) { var writer = new XeWriter(output); writer.WriteUInt16(magic); writer.WriteUInt16(version); writer.WriteUInt16(unkWord1); writer.WriteUInt16(unkWord2); writer.WriteUInt32(entryPoint); writer.WriteUInt32(0xdeadbeef); // Will need to go back and update after compression writer.Write(hmacSalt, 0, 0x10); var meta = new byte[0x10]; BufferUtils.FromUInt32((uint)kernel.Length, meta, 0x08); writer.Write(meta, 0, 0x10); var compressedKernelStream = new MemoryStream(); CompressKernel(kernel, compressedKernelStream); compressedKernelStream.Seek(0, SeekOrigin.Begin); compressedKernelStream.CopyTo(output); compressedKernelStream.Close(); writer.Seek(0x0c, SeekOrigin.Begin); writer.WriteUInt32((uint)writer.Length); }
public void WriteUInt32(uint value, Endian endian = Endian.Big) { BufferUtils.FromUInt32(value, internalBuffer, 0, endian); Stream.Write(internalBuffer, 0, 4); }