public void Read(ReaderContext ctxt, BlobReader reader) { var actualExportTable = reader.ReadUInt64(); if (actualExportTable != exportTable) throw new PEException("invalid PEHeaderDataDirecties.ExportTable"); ImportTable.Read(reader); ResourceTable.Read(reader); var actualExceptionTable = reader.ReadUInt64(); if (actualExceptionTable != exceptionTable) throw new PEException("invalid PEHeaderDataDirecties.ExceptionTable"); CertificateTable.Read(reader); BaseRelocationTable.Read(reader); Debug.Read(reader); var actualCopyright = reader.ReadUInt64(); if (actualCopyright != copyright) throw new PEException("invalid PEHeaderDataDirecties.Copyright"); var actualGlobalPtr = reader.ReadUInt64(); if (actualGlobalPtr != globalPtr) throw new PEException("invalid PEHeaderDataDirecties.GlobalPtr"); var actualTLSTable = reader.ReadUInt64(); if (actualTLSTable != tlsTable) throw new PEException("invalid PEHeaderDataDirecties.TlsTable"); var actualLoadConfigTable = reader.ReadUInt64(); if (actualLoadConfigTable != loadConfigTable) throw new PEException("invalid PEHeaderDataDirecties.LoadConfigTable"); var actualBoundImport = reader.ReadUInt64(); if (actualBoundImport != boundImport) throw new PEException("invalid PEHeaderDataDirecties.BoundImport"); IAT.Read(reader); var actualDelayImportDescriptor = reader.ReadUInt64(); if (actualDelayImportDescriptor != delayImportDescriptor) throw new PEException("invalid PEHeaderDataDirecties.DelayImportDescriptor"); CLIHeader.Read(reader); var actualReserved = reader.ReadUInt64(); if (actualReserved != reserved) throw new PEException("invalid PEHeaderDataDirecties.Reserved"); }
public void Read(ReaderContext ctxt, BlobReader reader) { var actualCb = reader.ReadUInt32(); if (actualCb != cb) throw new PEException("invalid CLIHeader.ActualCb"); MajorRuntimeVersion = reader.ReadUInt16(); MinorRuntimeVersion = reader.ReadUInt16(); MetaData.Read(reader); Flags = (RuntimeFlags)reader.ReadUInt32(); EntryPointToken = reader.ReadUInt32(); Resources.Read(reader); StrongNameSignature.Read(reader); var actualCodeManagerTable = reader.ReadUInt64(); if (actualCodeManagerTable != codeManagerTable) throw new PEException("invalid CLIHeader.CodeManagerTable"); VtableFixups.Read(reader); var actualExportAddressTableJumps = reader.ReadUInt64(); if (actualExportAddressTableJumps != exportAddressTableJumps) throw new PEException("invalid CLIHeader.ExportAddressTableJumps"); var actualManagedNativeHeader = reader.ReadUInt64(); if (actualManagedNativeHeader != managedNativeHeader) throw new PEException("invalid CLIHeader.ManagedNativeHeader"); }
public override object ReadValue(BlobReader reader, Func<string, CustomAttributePropertyType> resolveType) { switch (Type) { case PrimitiveType.Boolean: return reader.ReadByte() == 0 ? false : true; case PrimitiveType.Char: return (char)reader.ReadUInt16(); case PrimitiveType.Int8: return reader.ReadSByte(); case PrimitiveType.Int16: return reader.ReadInt16(); case PrimitiveType.Int32: return reader.ReadInt32(); case PrimitiveType.Int64: return reader.ReadInt64(); case PrimitiveType.UInt8: return reader.ReadByte(); case PrimitiveType.UInt16: return reader.ReadUInt16(); case PrimitiveType.UInt32: return reader.ReadUInt32(); case PrimitiveType.UInt64: return reader.ReadUInt64(); case PrimitiveType.IntNative: case PrimitiveType.UIntNative: throw new PEException("cannot read native integers"); case PrimitiveType.Single: return reader.ReadSingle(); case PrimitiveType.Double: return reader.ReadDouble(); case PrimitiveType.String: return reader.ReadUTF8SizedString(); case PrimitiveType.Type: return new TypeCustomAttributePropertyValue { Name = reader.ReadUTF8SizedString() }; case PrimitiveType.Object: case PrimitiveType.TypedRef: case PrimitiveType.Void: throw new PEException("invalid type tag in custom attribute"); default: throw new ArgumentOutOfRangeException(); } }