/// <summary>
 ///     Reads all bytes from the PE image. This may fail if the PE image has been loaded
 ///     by the OS loader since there may be memory holes.
 /// </summary>
 /// <param name="self">this</param>
 /// <returns>All bytes of the PE image</returns>
 public static byte[] GetImageAsByteArray(this IPEImage self)
 {
     using (var reader = self.CreateFullStream())
     {
         return(reader.ReadAllBytes());
     }
 }
        public AsmEdHexDocument GetOrCreate(IPEImage peImage)
        {
            var filename = GetFullPath(peImage.FileName);

            lock (lockObj) {
                var doc = TryGet_NoLock(filename);
                if (doc != null)
                {
                    return(doc);
                }

                using (var stream = peImage.CreateFullStream()) {
                    var data = stream.ReadAllBytes();
                    doc = new AsmEdHexDocument(undoCommandService, data, filename);
                    filenameToDoc[filename] = new WeakReference(doc);
                    return(doc);
                }
            }
        }
        public AsmEdHexDocument GetOrCreate(IPEImage peImage)
        {
            var filename = GetFullPath(peImage.FileName);

            lock (lockObj) {
                AsmEdHexDocument doc;
                if (filenameToDoc.TryGetValue(filename, out doc))
                {
                    return(doc);
                }

                using (var stream = peImage.CreateFullStream()) {
                    var data = stream.ReadAllBytes();
                    doc = new AsmEdHexDocument(data, filename);
                    filenameToDoc.Add(filename, doc);
                    return(doc);
                }
            }
        }
Exemple #4
0
        HexBuffer GetOrCreate(IPEImage peImage)
        {
            var filename = GetFullPath(peImage.FileName);

            HexBuffer buffer;

            lock (lockObj) {
                buffer = TryGet_NoLock(filename);
                if (buffer != null)
                {
                    return(buffer);
                }

                using (var stream = peImage.CreateFullStream()) {
                    var data = stream.ReadAllBytes();
                    buffer = hexBufferFactoryService.Create(data, filename, hexBufferFactoryService.DefaultFileTags);
                    filenameToBuffer[filename] = new WeakReference(buffer);
                }
            }
            return(NotifyBufferCreated(buffer));
        }
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="peImage">The PE image</param>
 /// <param name="rsrcReader">Reader for the whole Win32 resources section (usually
 /// the .rsrc section) or <c>null</c> if we should create one from the resource data
 /// directory in the optional header. This instance owns the reader.</param>
 public Win32ResourcesPE(IPEImage peImage, IBinaryReader rsrcReader)
 {
     this.rvaConverter = peImage;
     this.dataReader   = peImage.CreateFullStream();
     if (rsrcReader != null)
     {
         this.rsrcReader = rsrcReader;
     }
     else
     {
         var dataDir = peImage.ImageNTHeaders.OptionalHeader.DataDirectories[2];
         if (dataDir.VirtualAddress != 0 && dataDir.Size != 0)
         {
             this.rsrcReader = peImage.CreateStream(dataDir.VirtualAddress, dataDir.Size);
         }
         else
         {
             this.rsrcReader = MemoryImageStream.CreateEmpty();
         }
     }
     Initialize();
 }
		/// <summary>
		/// Constructor
		/// </summary>
		/// <param name="peImage">The PE image</param>
		/// <param name="rsrcReader">Reader for the whole Win32 resources section (usually
		/// the .rsrc section) or <c>null</c> if we should create one from the resource data
		/// directory in the optional header. This instance owns the reader.</param>
		public Win32ResourcesPE(IPEImage peImage, IBinaryReader rsrcReader) {
			this.rvaConverter = peImage;
			this.dataReader = peImage.CreateFullStream();
			if (rsrcReader != null)
				this.rsrcReader = rsrcReader;
			else {
				var dataDir = peImage.ImageNTHeaders.OptionalHeader.DataDirectories[2];
				if (dataDir.VirtualAddress != 0 && dataDir.Size != 0)
					this.rsrcReader = peImage.CreateStream(dataDir.VirtualAddress, dataDir.Size);
				else
					this.rsrcReader = MemoryImageStream.CreateEmpty();
			}
			Initialize();
		}
Exemple #7
0
		void Initialize(IPEImage peImage) {
			this.peImage = peImage;
			this.peStream = peImage.CreateFullStream();
		}
		public AsmEdHexDocument GetOrCreate(IPEImage peImage) {
			var filename = GetFullPath(peImage.FileName);

			lock (lockObj) {
				var doc = TryGet_NoLock(filename);
				if (doc != null)
					return doc;

				using (var stream = peImage.CreateFullStream()) {
					var data = stream.ReadAllBytes();
					doc = new AsmEdHexDocument(data, filename);
					filenameToDoc[filename] = new WeakReference(doc);
					return doc;
				}
			}
		}
Exemple #9
0
 void Initialize(IPEImage peImage)
 {
     this.peImage  = peImage;
     this.peStream = peImage.CreateFullStream();
 }
        public AsmEdHexDocument GetOrCreate(IPEImage peImage)
        {
            var filename = GetFullPath(peImage.FileName);

            lock (lockObj) {
                AsmEdHexDocument doc;
                if (filenameToDoc.TryGetValue(filename, out doc))
                    return doc;

                using (var stream = peImage.CreateFullStream()) {
                    var data = stream.ReadAllBytes();
                    doc = new AsmEdHexDocument(data, filename);
                    filenameToDoc.Add(filename, doc);
                    return doc;
                }
            }
        }
Exemple #11
0
		HexBuffer GetOrCreate(IPEImage peImage) {
			var filename = GetFullPath(peImage.FileName);

			HexBuffer buffer;
			lock (lockObj) {
				buffer = TryGet_NoLock(filename);
				if (buffer != null)
					return buffer;

				using (var stream = peImage.CreateFullStream()) {
					var data = stream.ReadAllBytes();
					buffer = hexBufferFactoryService.Create(data, filename, hexBufferFactoryService.DefaultFileTags);
					filenameToBuffer[filename] = new WeakReference(buffer);
				}
			}
			return NotifyBufferCreated(buffer);
		}