本文整理汇总了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;
}