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


C# ImageMap.DumpSections方法代码示例

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


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

示例1: 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


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