SectionHeaderMemoryStream() public method

public SectionHeaderMemoryStream ( Elf SectionHeader ) : Stream
SectionHeader Elf
return Stream
Beispiel #1
0
        protected void LoadModuleInfo()
        {
            var    sectionHeaderName = ".rodata.sceModuleInfo";
            var    programHeader     = ElfLoader.ProgramHeaders.FirstOrDefault();
            Stream stream;

            if (ElfLoader.SectionHeadersByName.ContainsKey(sectionHeaderName))
            {
                var sectionHeader = ElfLoader.SectionHeadersByName[".rodata.sceModuleInfo"];
                stream = ElfLoader.SectionHeaderMemoryStream(sectionHeader);
                Logger.Info("LoadModuleInfo: .rodata.sceModuleInfo 0x{0:X8}[{1}]",
                            BaseAddress + sectionHeader.Address, sectionHeader.Size);
            }
            else
            {
                var moduleInfoAddress =
                    (uint)(BaseAddress + (programHeader.PsysicalAddress & 0x7FFFFFFFL) - programHeader.Offset);
                var size = Marshal.SizeOf(typeof(ElfPsp.ModuleInfo));
                stream = ElfLoader.MemoryStream.SliceWithLength(moduleInfoAddress, size);
                Logger.Info("LoadModuleInfo: 0x{0:X8}[{1}]", moduleInfoAddress, size);
            }

            HleModuleGuest.ModuleInfo = stream.ReadStruct <ElfPsp.ModuleInfo>();
            Logger.Info("{0}", HleModuleGuest.ModuleInfo.ToStringDefault());
        }