INNER CODE UNIT · JavaScript
shentsize
hackcatml/frida-flutterproxy · script.js:479
var shentsize = is32bit ? base.add(off_of_Elf32_Ehdr_shentsize).readU16() : base.add(off_of_Elf64_Ehdr_shentsize).readU16(); // Size of the section header
if (is32bit && shentsize != 40) { // 0x28
console.log("[!] Wrong e_shentsize. Let's assume it's 40");
shentsize = 40;
} else if (!is32bit && shentsize != 64) {
console.log("[!] Wrong e_shentsize. Let's assume it's 64");
shentsize = 64;
}
var shnum = is32bit ? base.add(off_of_Elf32_Ehdr_shnum).readU16() : base.add(off_of_Elf64_Ehdr_shnum).readU16(); // Number of entries in section header table
var shstrndx = is32bit ? base.add(off_of_Elf32_Ehdr_shstrndx).readU16() : base.add(off_of_Elf64_Ehdr_shstrndx).readU16(); // Section header table index of the entry associated with the section name string table
if (shnum == 0 && fd != null && fd !== -1) {
console.log("[!] shnum is 0. Try to get it from the file");
ehdrs_from_file = Memory.alloc(64);
lseek(fd, 0, SEEK_SET);
read(fd, ehdrs_from_file, 64);
shnum = is32bit ? ehdrs_from_file.add(off_of_Elf32_Ehdr_shnum).readU16() : ehdrs_from_file.add(off_of_Elf64_Ehdr_shnum).readU16();
shstrndx = is32bit ? ehdrs_from_file.add(off_of_Elf32_Ehdr_shstrndx).readU16() : ehdrs_from_file.add(off_of_Elf64_Ehdr_shstrndx).readU16();
console.log(`[*] shnum from the file: ${shnum}, shstrndx from the file: ${shstrndx}`)