Esempio n. 1
0
 public RSDS(string targetFile, ulong offset)
 {
     try
     {
         _targetFile = targetFile;
         _offset     = offset;
         using (FileStream stream = new FileStream(_targetFile, FileMode.Open, FileAccess.Read))
             using (BinaryReader reader = new BinaryReader(stream))
             {
                 stream.Seek((long)_offset, SeekOrigin.Begin);
                 RSDS_HEADER rsds = FromBinaryReader <RSDS_HEADER>(reader);
                 char        c    = (char)reader.ReadByte();
                 while (c != (char)0 && c != -1)
                 {
                     _filename += c;
                     c          = (char)reader.ReadByte();
                 }
                 _signature = System.Text.Encoding.UTF8.GetString(rsds.Signature);
                 _guid      = new Guid(rsds.Guid);
                 _age       = rsds.Age;
             }
     }
     catch (Exception ex)
     {
         throw new ArgumentException("Error Creating RSDS: " + ex.Message);
     }
 }
Esempio n. 2
0
 public RSDS(DataProviderBase dataProvider, ulong offset)
 {
     try
     {
         ulong       alignedAddress = offset & 0xfffffffff000;
         byte[]      buffer         = dataProvider.ReadMemory(alignedAddress, 2);
         GCHandle    pinnedPacket   = GCHandle.Alloc(buffer, GCHandleType.Pinned);
         RSDS_HEADER rsds           = (RSDS_HEADER)Marshal.PtrToStructure(Marshal.UnsafeAddrOfPinnedArrayElement(buffer, (int)(offset - alignedAddress)), typeof(RSDS_HEADER));
         pinnedPacket.Free();
         _signature = System.Text.Encoding.UTF8.GetString(rsds.Signature);
         _guid      = new Guid(rsds.Guid);
         _age       = rsds.Age;
         int  marker = 24 + (int)(offset - alignedAddress);
         char c      = (char)buffer[marker];
         while (c != 0 && marker < 0x2000)
         {
             _filename += c;
             c          = (char)buffer[++marker];
         }
     }
     catch (Exception ex)
     {
         throw new ArgumentException("Error Creating RSDS: " + ex.Message);
     }
 }