Beispiel #1
0
 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");
 }
Beispiel #2
0
 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");
 }
Beispiel #3
0
 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();
     }
 }