aboutsummaryrefslogtreecommitdiff
path: root/frida_mode/src/lib
diff options
context:
space:
mode:
authorvan Hauser <vh@thc.org>2022-01-11 12:20:35 +0100
committerGitHub <noreply@github.com>2022-01-11 12:20:35 +0100
commit10dae419d6e3ebc38f53840c5abfe98e9c901217 (patch)
tree352576e19c8a504c40ea58dbb141056762901a69 /frida_mode/src/lib
parent74a8f145e09d0361d8f576eb3f2e8881b6116f18 (diff)
parentd2715336a54635bb6e617a2e739c0ad5fe51d28d (diff)
downloadafl++-10dae419d6e3ebc38f53840c5abfe98e9c901217.tar.gz
Merge pull request #1236 from AFLplusplus/dev
push to stable
Diffstat (limited to 'frida_mode/src/lib')
-rw-r--r--frida_mode/src/lib/lib.c31
-rw-r--r--frida_mode/src/lib/lib_apple.c18
2 files changed, 29 insertions, 20 deletions
diff --git a/frida_mode/src/lib/lib.c b/frida_mode/src/lib/lib.c
index 48d2ea2a..39480ce9 100644
--- a/frida_mode/src/lib/lib.c
+++ b/frida_mode/src/lib/lib.c
@@ -93,17 +93,18 @@ static void lib_read_text_section(lib_details_t *lib_details, Elf_Ehdr *hdr) {
}
- FOKF("Image preferred load address 0x%016" G_GSIZE_MODIFIER "x",
- preferred_base);
+ FVERBOSE("\tpreferred load address: 0x%016" G_GSIZE_MODIFIER "x",
+ preferred_base);
shdr = (Elf_Shdr *)((char *)hdr + hdr->e_shoff);
shstrtab = &shdr[hdr->e_shstrndx];
shstr = (char *)hdr + shstrtab->sh_offset;
- FOKF("shdr: %p", shdr);
- FOKF("shstrtab: %p", shstrtab);
- FOKF("shstr: %p", shstr);
+ FVERBOSE("\tshdr: %p", shdr);
+ FVERBOSE("\tshstrtab: %p", shstrtab);
+ FVERBOSE("\tshstr: %p", shstr);
+ FVERBOSE("Sections:");
for (size_t i = 0; i < hdr->e_shnum; i++) {
curr = &shdr[i];
@@ -111,21 +112,23 @@ static void lib_read_text_section(lib_details_t *lib_details, Elf_Ehdr *hdr) {
if (curr->sh_name == 0) continue;
section_name = &shstr[curr->sh_name];
- FOKF("Section: %2" G_GSIZE_MODIFIER "u - base: 0x%016" G_GSIZE_MODIFIER
- "X size: 0x%016" G_GSIZE_MODIFIER "X %s",
- i, curr->sh_addr, curr->sh_size, section_name);
+ FVERBOSE("\t%2" G_GSIZE_MODIFIER "u - base: 0x%016" G_GSIZE_MODIFIER
+ "X size: 0x%016" G_GSIZE_MODIFIER "X %s",
+ i, curr->sh_addr, curr->sh_size, section_name);
if (memcmp(section_name, text_name, sizeof(text_name)) == 0 &&
text_base == 0) {
text_base = lib_details->base_address + curr->sh_addr - preferred_base;
text_limit = text_base + curr->sh_size;
- FOKF("> text_addr: 0x%016" G_GINT64_MODIFIER "X", text_base);
- FOKF("> text_limit: 0x%016" G_GINT64_MODIFIER "X", text_limit);
}
}
+ FVERBOSE(".text\n");
+ FVERBOSE("\taddr: 0x%016" G_GINT64_MODIFIER "X", text_base);
+ FVERBOSE("\tlimit: 0x%016" G_GINT64_MODIFIER "X", text_limit);
+
}
static void lib_get_text_section(lib_details_t *details) {
@@ -141,7 +144,7 @@ static void lib_get_text_section(lib_details_t *details) {
if (len == (off_t)-1) { FFATAL("Failed to lseek %s", details->path); }
- FOKF("len: %ld", len);
+ FVERBOSE("\tlength: %ld", len);
hdr = (Elf_Ehdr *)mmap(NULL, len, PROT_READ, MAP_PRIVATE, fd, 0);
if (hdr == MAP_FAILED) { FFATAL("Failed to map %s", details->path); }
@@ -162,8 +165,10 @@ void lib_init(void) {
lib_details_t lib_details;
gum_process_enumerate_modules(lib_find_exe, &lib_details);
- FOKF("Executable: 0x%016" G_GINT64_MODIFIER "x - %s",
- lib_details.base_address, lib_details.path);
+ FVERBOSE("Image");
+ FVERBOSE("\tbase: 0x%016" G_GINT64_MODIFIER "x",
+ lib_details.base_address);
+ FVERBOSE("\tpath: %s", lib_details.path);
lib_get_text_section(&lib_details);
}
diff --git a/frida_mode/src/lib/lib_apple.c b/frida_mode/src/lib/lib_apple.c
index 3bdb8c10..65c1d937 100644
--- a/frida_mode/src/lib/lib_apple.c
+++ b/frida_mode/src/lib/lib_apple.c
@@ -20,7 +20,7 @@ static gboolean lib_get_main_module(const GumModuleDetails *details,
details->path, mach_task_self(), details->range->base_address,
GUM_DARWIN_MODULE_FLAGS_NONE, NULL);
- FOKF("Found main module: %s", module->name);
+ FVERBOSE("Found main module: %s", module->name);
*ret = module;
@@ -35,21 +35,23 @@ gboolean lib_get_text_section(const GumDarwinSectionDetails *details,
static size_t idx = 0;
char text_name[] = "__text";
- FOKF("Section: %2lu - base: 0x%016" G_GINT64_MODIFIER
- "X size: 0x%016" G_GINT64_MODIFIER "X %s",
- idx++, details->vm_address, details->vm_address + details->size,
- details->section_name);
+ FVERBOSE("\t%2lu - base: 0x%016" G_GINT64_MODIFIER
+ "X size: 0x%016" G_GINT64_MODIFIER "X %s",
+ idx++, details->vm_address, details->vm_address + details->size,
+ details->section_name);
if (memcmp(details->section_name, text_name, sizeof(text_name)) == 0 &&
text_base == 0) {
text_base = details->vm_address;
text_limit = details->vm_address + details->size;
- FOKF("> text_addr: 0x%016" G_GINT64_MODIFIER "X", text_base);
- FOKF("> text_limit: 0x%016" G_GINT64_MODIFIER "X", text_limit);
}
+ FVERBOSE(".text\n");
+ FVERBOSE("\taddr: 0x%016" G_GINT64_MODIFIER "X", text_base);
+ FVERBOSE("\tlimit: 0x%016" G_GINT64_MODIFIER "X", text_limit);
+
return TRUE;
}
@@ -62,6 +64,8 @@ void lib_init(void) {
GumDarwinModule *module = NULL;
gum_darwin_enumerate_modules(mach_task_self(), lib_get_main_module, &module);
+
+ FVERBOSE("Sections:");
gum_darwin_module_enumerate_sections(module, lib_get_text_section, NULL);
}