public override bool PlusSearch(int methodCount, int typeDefinitionsCount) { var exec = new SearchSection { offset = 0, offsetEnd = (ulong)methodCount, //hack address = 0, addressEnd = (ulong)methodCount //hack }; var data = new SearchSection { offset = 1024, offsetEnd = Length, address = 1024, addressEnd = Length }; var bss = new SearchSection { offset = Length, offsetEnd = long.MaxValue, //hack address = Length, addressEnd = long.MaxValue //hack }; var plusSearch = new PlusSearch(this, methodCount, typeDefinitionsCount, maxMetadataUsages); plusSearch.SetSection(SearchSectionType.Exec, exec); plusSearch.SetSection(SearchSectionType.Data, data); plusSearch.SetSection(SearchSectionType.Bss, bss); var codeRegistration = plusSearch.FindCodeRegistration(); var metadataRegistration = plusSearch.FindMetadataRegistration(); return(AutoPlusInit(codeRegistration, metadataRegistration)); }
public override bool PlusSearch(int methodCount, int typeDefinitionsCount) { var execList = new List <SectionHeader>(); var dataList = new List <SectionHeader>(); foreach (var section in sections) { switch (section.Characteristics) { case 0x60000020: execList.Add(section); break; case 0x40000040: case 0xC0000040: dataList.Add(section); break; } } var plusSearch = new PlusSearch(this, methodCount, typeDefinitionsCount, maxMetadataUsages); var data = dataList.ToArray(); var exec = execList.ToArray(); plusSearch.SetSection(SearchSectionType.Exec, imageBase, exec); plusSearch.SetSection(SearchSectionType.Data, imageBase, data); plusSearch.SetSection(SearchSectionType.Bss, imageBase, data); var codeRegistration = plusSearch.FindCodeRegistration(); var metadataRegistration = plusSearch.FindMetadataRegistration(); return(AutoPlusInit(codeRegistration, metadataRegistration)); }
public override bool PlusSearch(int methodCount, int typeDefinitionsCount) { var dataList = new List<Elf64_Phdr>(); var execList = new List<Elf64_Phdr>(); foreach (var phdr in programSegment) { if (phdr.p_memsz != 0ul) { switch (phdr.p_flags) { case 1u: //PF_X case 3u: case 5u: case 7u: execList.Add(phdr); break; case 2u: //PF_W && PF_R case 4u: case 6u: dataList.Add(phdr); break; } } } var data = dataList.ToArray(); var exec = execList.ToArray(); var plusSearch = new PlusSearch(this, methodCount, typeDefinitionsCount, maxMetadataUsages); plusSearch.SetSection(SearchSectionType.Exec, exec); plusSearch.SetSection(SearchSectionType.Data, data); plusSearch.SetSection(SearchSectionType.Bss, data); var codeRegistration = plusSearch.FindCodeRegistration(); var metadataRegistration = plusSearch.FindMetadataRegistration(); return AutoPlusInit(codeRegistration, metadataRegistration); }
public override bool PlusSearch(int methodCount, int typeDefinitionsCount) { var plusSearch = new PlusSearch(this, methodCount, typeDefinitionsCount, maxMetadataUsages); plusSearch.SetSection(SearchSectionType.Exec, header.TextSegment); plusSearch.SetSection(SearchSectionType.Data, header.DataSegment); plusSearch.SetSection(SearchSectionType.Bss, header.BssSegment); var codeRegistration = plusSearch.FindCodeRegistration(); var metadataRegistration = plusSearch.FindMetadataRegistration(); return(AutoInit(codeRegistration, metadataRegistration)); }
public override bool PlusSearch(int methodCount, int typeDefinitionsCount) { var data = sections.Where(x => x.sectname == "__const").ToArray(); var code = sections.Where(x => x.flags == 0x80000400).ToArray(); var bss = sections.Where(x => x.flags == 1u).ToArray(); var plusSearch = new PlusSearch(this, methodCount, typeDefinitionsCount, maxMetadataUsages); plusSearch.SetSection(SearchSectionType.Exec, code); plusSearch.SetSection(SearchSectionType.Data, data); plusSearch.SetSection(SearchSectionType.Bss, bss); var codeRegistration = plusSearch.FindCodeRegistration(); var metadataRegistration = plusSearch.FindMetadataRegistration(); return(AutoInit(codeRegistration, metadataRegistration)); }
public override bool PlusSearch(int methodCount, int typeDefinitionsCount) { if (!isDumped && (!sectionWithName.ContainsKey(".data.rel.ro") || !sectionWithName.ContainsKey(".text") || !sectionWithName.ContainsKey(".bss"))) { Console.WriteLine("ERROR: This file has been protected."); } var dataList = new List <Elf32_Phdr>(); var execList = new List <Elf32_Phdr>(); foreach (var phdr in program_table.Where(x => x.p_type == 1u)) { if (phdr.p_memsz != 0ul) { switch (phdr.p_flags) { case 1u: //PF_X case 3u: case 5u: case 7u: execList.Add(phdr); break; case 2u: //PF_W && PF_R case 4u: case 6u: dataList.Add(phdr); break; } } } var data = dataList.ToArray(); var exec = execList.ToArray(); var plusSearch = new PlusSearch(this, methodCount, typeDefinitionsCount, maxMetadataUsages); plusSearch.SetSection(SearchSectionType.Exec, exec); plusSearch.SetSection(SearchSectionType.Data, data); plusSearch.SetSection(SearchSectionType.Bss, data); var codeRegistration = plusSearch.FindCodeRegistration(); var metadataRegistration = plusSearch.FindMetadataRegistration(); return(AutoInit(codeRegistration, metadataRegistration)); }