static private GetZeroTerminatedString ( string @string ) : byte[] | ||
@string | string | |
Résultat | byte[] |
private void WriteStreamHeader(ref uint offset, TextSegment heap, string name) { uint length = (uint)this.text_map.GetLength(heap); if (length == 0) { return; } base.WriteUInt32(offset); base.WriteUInt32(length); base.WriteBytes(ImageWriter.GetZeroTerminatedString(name)); offset += length; }
private void WriteMetadataHeader() { base.WriteUInt32(1112167234); base.WriteUInt16(1); base.WriteUInt16(1); base.WriteUInt32(0); byte[] zeroTerminatedString = ImageWriter.GetZeroTerminatedString(this.module.runtime_version); base.WriteUInt32((uint)zeroTerminatedString.Length); base.WriteBytes(zeroTerminatedString); base.WriteUInt16(0); base.WriteUInt16(this.GetStreamCount()); uint rVA = this.text_map.GetRVA(TextSegment.TableHeap) - this.text_map.GetRVA(TextSegment.MetadataHeader); this.WriteStreamHeader(ref rVA, TextSegment.TableHeap, "#~"); this.WriteStreamHeader(ref rVA, TextSegment.StringHeap, "#Strings"); this.WriteStreamHeader(ref rVA, TextSegment.UserStringHeap, "#US"); this.WriteStreamHeader(ref rVA, TextSegment.GuidHeap, "#GUID"); this.WriteStreamHeader(ref rVA, TextSegment.BlobHeap, "#Blob"); }