private void ReadMod0(byte[] dcmpTextData, SegmentMap map) { var f = new LeImageReader(dcmpTextData); var mod0 = f.ReadStruct <Mod0>(); if (!map.TryFindSegment(mod0.DynamicOffset, out var dynseg)) { return; } var offset = mod0.DynamicOffset - dynseg.MemoryArea.BaseAddress.ToLinear(); offset += mod0.MagicOffset; var rdr = dynseg.MemoryArea.CreateLeReader((int)offset); var elfHdr = new Elf32_EHdr { e_machine = (ushort)ElfMachine.EM_ARM }; var elfLoader = new ElfLoader32(Services, elfHdr, 0, EndianServices.Little, RawImage); var(deps, entries) = elfLoader.LoadDynamicSegment(rdr); var dynEntries = entries.ToDictionary(e => e.Tag, e => e.UValue); var syms = LoadSymbols(map, dynEntries); LoadRelocations(map, dynEntries, syms); }