当前位置: 首页>>代码示例>>C#>>正文


C# ImageMap.AddSegment方法代码示例

本文整理汇总了C#中ImageMap.AddSegment方法的典型用法代码示例。如果您正苦于以下问题:C# ImageMap.AddSegment方法的具体用法?C# ImageMap.AddSegment怎么用?C# ImageMap.AddSegment使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ImageMap的用法示例。


在下文中一共展示了ImageMap.AddSegment方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: ImageMapCreation

		public void ImageMapCreation()
		{
			ImageMap im = new ImageMap(addrBase, img.Length);

			im.AddSegment(Address.SegPtr(0x8000, 2), "",  AccessMode.ReadWrite);
			im.AddSegment(Address.SegPtr(0x8000, 3), "", AccessMode.ReadWrite);
			im.AddSegment(Address.SegPtr(0x8000, 0), "", AccessMode.ReadWrite);

			// Verify

			IEnumerator<KeyValuePair<Address,ImageMapSegment>> e = im.Segments.GetEnumerator();
			Assert.IsTrue(e.MoveNext());
			ImageMapSegment seg = e.Current.Value;
			Assert.AreEqual(2, seg.Size);

			Assert.IsTrue(e.MoveNext());
            seg = e.Current.Value;
			Assert.AreEqual(1, seg.Size);
			
			Assert.IsTrue(e.MoveNext());
			seg = e.Current.Value;
			Assert.AreEqual(1, seg.Size);

			Assert.IsTrue(!e.MoveNext());
		}
开发者ID:gh0std4ncer,项目名称:reko,代码行数:25,代码来源:ImageMapTests.cs

示例2: AddNamedSegment

 public void AddNamedSegment()
 {
     ImageMap map = new ImageMap(Address.SegPtr(0x0B00, 0), 40000);
     map.AddSegment(Address.SegPtr(0xC00, 0), "0C00", AccessMode.ReadWrite, 0);
     IEnumerator<KeyValuePair<Address,ImageMapSegment>> e = map.Segments.GetEnumerator();
     GetNextMapSegment(e);
     ImageMapSegment s = GetNextMapSegment(e);
     Assert.AreEqual("0C00", s.Name);
     Assert.AreEqual(35904, s.Size);
 }
开发者ID:nemerle,项目名称:reko,代码行数:10,代码来源:ImageMapTests.cs

示例3: LoadSegment

        bool LoadSegment(NeSegment seg, LoadedImage loadedImage, ImageMap imageMap)
        {
            Array.Copy(
                RawImage,
                (uint)seg.DataOffset << this.cbFileAlignmentShift,
                loadedImage.Bytes,
                seg.LinearAddress - (int)loadedImage.BaseAddress.ToLinear(),
                seg.DataLength);
            var x = seg.Address.ToLinear();

            AccessMode access =
                (seg.Flags & 1) != 0
                    ? AccessMode.ReadWrite
                    : AccessMode.ReadExecute;
            imageMap.AddSegment(
                seg.Address,
                seg.Address.Selector.Value.ToString("X4"),
                access,
                seg.DataLength);

            var rdr = new LeImageReader(
                RawImage,
                seg.DataLength + ((uint)seg.DataOffset << this.cbFileAlignmentShift));
            int count = rdr.ReadLeInt16();
            return ApplyRelocations(rdr, count, seg);
        }
开发者ID:nemerle,项目名称:reko,代码行数:26,代码来源:NeImageLoader.cs

示例4: AddSectionsToImageMap

 private void AddSectionsToImageMap(Address addrLoad, ImageMap imageMap)
 {
     foreach (Section s in sectionMap.Values)
     {
         AccessMode acc = AccessMode.Read;
         if ((s.Flags & SectionFlagsWriteable) != 0)
         {
             acc |= AccessMode.Write;
         }
         if ((s.Flags & SectionFlagsExecutable) != 0)
         {
             acc |= AccessMode.Execute;
         }
         var seg = imageMap.AddSegment(addrLoad + s.VirtualAddress, s.Name, acc, s.VirtualSize);
         seg.IsDiscardable = s.IsDiscardable;
     }
 }
开发者ID:gitter-badger,项目名称:reko,代码行数:17,代码来源:PeImageLoader.cs

示例5: LoadImageBytes

        private Program LoadImageBytes(Address addrPreferred, Address addrMax)
        {
            var bytes = new byte[addrMax - addrPreferred];
            var v_base = addrPreferred.ToLinear();
            this.image = new LoadedImage(addrPreferred, bytes);
            this.imageMap = image.CreateImageMap();

            if (fileClass == ELFCLASS64)
            {
                foreach (var ph in ProgramHeaders64)
                {
                    if (ph.p_vaddr > 0 && ph.p_filesz > 0)
                        Array.Copy(RawImage, (long)ph.p_offset, bytes, (long)(ph.p_vaddr - v_base), (long)ph.p_filesz);
                }
                foreach (var segment in SectionHeaders64)
                {
                    if (segment.sh_name == 0 || segment.sh_addr == 0)
                        continue;
                    AccessMode mode = AccessMode.Read;
                    if ((segment.sh_flags & SHF_WRITE) != 0)
                        mode |= AccessMode.Write;
                    if ((segment.sh_flags & SHF_EXECINSTR) != 0)
                        mode |= AccessMode.Execute;
                    var seg = imageMap.AddSegment(
                        platform.MakeAddressFromLinear(segment.sh_addr), 
                        GetSectionName(segment.sh_name),
                        mode);
                    seg.Designer = CreateRenderer64(segment);
                }
            }
            else
            {
                foreach (var ph in ProgramHeaders)
                {
                    if (ph.p_vaddr > 0 && ph.p_filesz > 0)
                        Array.Copy(RawImage, (long)ph.p_offset, bytes, (long)(ph.p_vaddr - v_base), (long)ph.p_filesz);
                }
                foreach (var segment in SectionHeaders)
                {
                    if (segment.sh_name == 0 || segment.sh_addr == 0)
                        continue;
                    AccessMode mode = AccessMode.Read;
                    if ((segment.sh_flags & SHF_WRITE) != 0)
                        mode |= AccessMode.Write;
                    if ((segment.sh_flags & SHF_EXECINSTR) != 0)
                        mode |= AccessMode.Execute;
                    var seg = imageMap.AddSegment(Address.Ptr32(segment.sh_addr), GetSectionName(segment.sh_name), mode);
                    seg.Designer = CreateRenderer(segment);
                }
                imageMap.DumpSections();
            }
            var program = new Program(
                this.image,
                this.imageMap,
                this.arch,
                this.platform);
            importReferences = program.ImportReferences;
            return program;
        }
开发者ID:killbug2004,项目名称:reko,代码行数:59,代码来源:ElfImageLoader.cs

示例6: ImageMapOverlaps

 public void ImageMapOverlaps()
 {
     ImageMap im = new ImageMap(Address.SegPtr(0x8000, 0), 40);
     im.AddSegment(Address.SegPtr(0x8000, 10), "", AccessMode.ReadWrite, 0);
 }
开发者ID:nemerle,项目名称:reko,代码行数:5,代码来源:ImageMapTests.cs


注:本文中的ImageMap.AddSegment方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。